format room config file changed to xml
This commit is contained in:
@@ -12,6 +12,7 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"udev": "^0.3.0",
|
"udev": "^0.3.0",
|
||||||
"commander": "^2.9.0",
|
"commander": "^2.9.0",
|
||||||
"protobufjs": "^5.0.1"
|
"protobufjs": "^5.0.1",
|
||||||
|
"xml-parser": "^1.2.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
xFrom: 200, yFrom: 300, xTo: -150, yTo: 300
|
|
||||||
xFrom: -150, yFrom: 300, xTo: -150, yTo: -45
|
|
||||||
xFrom: -150, yFrom: -45, xTo: 200, yTo: -45
|
|
||||||
xFrom: 200, yFrom: -45, xTo: 200, yTo: 300
|
|
||||||
|
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<room>
|
||||||
|
<walls>
|
||||||
|
<wall startX="200" startY="300" endX="-150" endY="300"/>
|
||||||
|
<wall startX="-150" startY="300" endX="-150" endY="-45"/>
|
||||||
|
<wall startX="-150" startY="-45" endX="200" endY="-45"/>
|
||||||
|
<wall startX="200" startY="-45" endX="200" endY="300"/>
|
||||||
|
</walls>
|
||||||
|
</room>
|
||||||
|
|
||||||
@@ -16,6 +16,7 @@ val mainServerPort = 7925
|
|||||||
val config = Config()
|
val config = Config()
|
||||||
val fs: dynamic = require("fs")
|
val fs: dynamic = require("fs")
|
||||||
fun main(args: Array<String>) {
|
fun main(args: Array<String>) {
|
||||||
|
|
||||||
if (!config.loadConfig()) {
|
if (!config.loadConfig()) {
|
||||||
println("incorrect config format!")
|
println("incorrect config format!")
|
||||||
js("process.exit(1)")
|
js("process.exit(1)")
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package room
|
package room
|
||||||
|
|
||||||
import geometry.Line
|
import geometry.Line
|
||||||
|
import require
|
||||||
|
|
||||||
class Room() {
|
class Room() {
|
||||||
|
|
||||||
@@ -12,12 +13,18 @@ class Room() {
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun roomFromString(roomString: String): Room? {
|
fun roomFromString(roomString: String): Room? {
|
||||||
|
val xmlParser = require("xml-parser")
|
||||||
|
val xmlObject = xmlParser(roomString)
|
||||||
|
val wallsArray: dynamic
|
||||||
|
try {
|
||||||
|
wallsArray = xmlObject.root.children[0].children
|
||||||
|
} catch (e: Exception) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
val result = Room()
|
val result = Room()
|
||||||
roomString.split("\n").forEach { wallString ->
|
for (i in 0..(parseInt(wallsArray.length) - 1)) {
|
||||||
if (!wallString.equals("")) {
|
val wall = Wall.wallFromXml(wallsArray[i]) ?: return null
|
||||||
val wall = Wall.wallFromString(wallString) ?: return null
|
result.walls.add(wall)
|
||||||
result.walls.add(wall)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,30 +5,22 @@ import geometry.Line
|
|||||||
class Wall constructor(val line: Line, val xFrom: Int, val xTo: Int, val yFrom: Int, val yTo: Int) {
|
class Wall constructor(val line: Line, val xFrom: Int, val xTo: Int, val yFrom: Int, val yTo: Int) {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun wallFromString(wall: String): Wall? {
|
fun wallFromXml(wall: dynamic): Wall? {
|
||||||
val points = wall.replace(" ", "").split(",")
|
val points = wall.attributes
|
||||||
var xFrom = 0
|
val startX: Int
|
||||||
var xTo = 0
|
val endX: Int
|
||||||
var yTo = 0
|
val endY: Int
|
||||||
var yFrom = 0
|
val startY: Int
|
||||||
points.forEach {
|
try {
|
||||||
val keyValue = it.split(":")
|
startX = parseInt(points.startX)
|
||||||
if (keyValue.size != 2) {
|
startY = parseInt(points.startY)
|
||||||
return null
|
endX = parseInt(points.endX)
|
||||||
}
|
endY = parseInt(points.endY)
|
||||||
try {
|
} catch (e: NumberFormatException) {
|
||||||
when (keyValue[0]) {
|
return null
|
||||||
"xFrom" -> xFrom = parseInt(keyValue[1])
|
|
||||||
"yFrom" -> yFrom = parseInt(keyValue[1])
|
|
||||||
"xTo" -> xTo = parseInt(keyValue[1])
|
|
||||||
"yTo" -> yTo = parseInt(keyValue[1])
|
|
||||||
}
|
|
||||||
} catch (e: Exception) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
val line = Line((yFrom - yTo).toDouble(), (xTo - xFrom).toDouble(), (xFrom * yTo - yFrom * xTo).toDouble())
|
val line = Line((startY - endY).toDouble(), (endX - startX).toDouble(), (startX * endY - startY * endX).toDouble())
|
||||||
return Wall(line, xFrom, xTo, yFrom, yTo)
|
return Wall(line, startX, endX, startY, endY)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user