getActorByID now searches for inactive actors

Former-commit-id: 1828e2819bc5575d590e51b616415c91645cad56
Former-commit-id: 5b470d524401135358f9926587651ae932d4d5e9
This commit is contained in:
Song Minjae
2016-12-30 23:28:44 +09:00
parent da06e0fa93
commit d1f01a203d
2 changed files with 28 additions and 24 deletions

View File

@@ -213,9 +213,9 @@ constructor() : BasicGameState() {
/////////////////////////// ///////////////////////////
repossessActor() repossessActor()
// determine whether the inactive actor should be re-active // determine whether the inactive actor should be activated
wakeDormantActors() wakeDormantActors()
// determine whether the actor should be active or dormant // determine whether the actor should keep being activated or be dormant
KillOrKnockdownActors() KillOrKnockdownActors()
updateActors(gc, delta) updateActors(gc, delta)
// TODO thread pool(?) // TODO thread pool(?)
@@ -624,11 +624,18 @@ constructor() : BasicGameState() {
val DEBUG_ARRAY = false val DEBUG_ARRAY = false
fun getActorByID(ID: Int): Actor { fun getActorByID(ID: Int): Actor {
if (actorContainer.size == 0) throw IllegalArgumentException("Actor with ID $ID does not exist.") if (actorContainer.size == 0 && actorContainerInactive.size == 0)
val index = actorContainer.binarySearch(ID)
if (index < 0)
throw IllegalArgumentException("Actor with ID $ID does not exist.") throw IllegalArgumentException("Actor with ID $ID does not exist.")
var index = actorContainer.binarySearch(ID)
if (index < 0) {
index = actorContainerInactive.binarySearch(ID)
if (index < 0)
throw IllegalArgumentException("Actor with ID $ID does not exist.")
else
return actorContainerInactive[index]
}
else else
return actorContainer[index] return actorContainer[index]
} }

View File

@@ -26,41 +26,38 @@ internal object SetAV : ConsoleCommand {
override fun execute(args: Array<String>) { override fun execute(args: Array<String>) {
fun parseAVInput(arg: String): Any { fun parseAVInput(arg: String): Any {
var `val`: Any var inputval: Any
try { try {
`val` = Integer(arg) // try for integer inputval = Integer(arg) // try for integer
} }
catch (e: NumberFormatException) { catch (e: NumberFormatException) {
try { try {
`val` = arg.toDouble() // try for double inputval = arg.toDouble() // try for double
} }
catch (ee: NumberFormatException) { catch (ee: NumberFormatException) {
if (arg.equals("__true", ignoreCase = true)) { if (arg.equals("__true", ignoreCase = true)) {
`val` = true inputval = true
} }
else if (arg.equals("__false", ignoreCase = true)) { else if (arg.equals("__false", ignoreCase = true)) {
`val` = false inputval = false
} }
else { else {
`val` = arg // string if not number inputval = arg // string if not number
} }
} }
} }
return `val` return inputval
} }
val error = Error()
// setav <id, or blank for player> <av> <val> // setav <id, or blank for player> <av> <val>
if (args.size != 4 && args.size != 3) { if (args.size != 4 && args.size != 3) {
printUsage() printUsage()
} }
else if (args.size == 3) { else if (args.size == 3) {
val `val` = parseAVInput(args[2]) val newValue = parseAVInput(args[2])
// check if av is number // check if av is number
if (args[1].isNum()) { if (args[1].isNum()) {
@@ -69,14 +66,14 @@ internal object SetAV : ConsoleCommand {
return return
} }
Terrarum.ingame.player.actorValue[args[1]] = `val` Terrarum.ingame.player.actorValue[args[1]] = newValue
Echo("${ccW}Set $ccM${args[1]} ${ccW}for ${ccY}player ${ccW}to $ccG$`val`") Echo("${ccW}Set $ccM${args[1]} ${ccW}for ${ccY}player ${ccW}to $ccG$newValue")
println("[SetAV] set ActorValue '${args[1]}' for player to '$`val`'.") println("[SetAV] set ActorValue '${args[1]}' for player to '$newValue'.")
} }
else if (args.size == 4) { else if (args.size == 4) {
try { try {
val id = args[1].toInt() val id = args[1].toInt()
val `val` = parseAVInput(args[3]) val newValue = parseAVInput(args[3])
val actor = Terrarum.ingame.getActorByID(id) val actor = Terrarum.ingame.getActorByID(id)
// check if av is number // check if av is number
@@ -86,9 +83,9 @@ internal object SetAV : ConsoleCommand {
return return
} }
actor.actorValue[args[2]] = `val` actor.actorValue[args[2]] = newValue
Echo("${ccW}Set $ccM${args[2]} ${ccW}for $ccY$id ${ccW}to $ccG$`val`") Echo("${ccW}Set $ccM${args[2]} ${ccW}for $ccY$id ${ccW}to $ccG$newValue")
println("[SetAV] set ActorValue '${args[2]}' for $actor to '$`val`'.") println("[SetAV] set ActorValue '${args[2]}' for $actor to '$newValue'.")
} }
catch (e: IllegalArgumentException) { catch (e: IllegalArgumentException) {
if (args.size == 4) { if (args.size == 4) {