Move arena runtime configuration into GameCore

- Replace FightSystem runtime properties with shared GameConfig
- Update dependent modules, commands, states, and tests
This commit is contained in:
2026-07-24 12:51:03 +02:00
parent f8cda32119
commit 12e085600e
45 changed files with 216 additions and 265 deletions
@@ -1,38 +1,31 @@
package de.steamwar.gamecore
import de.steamwar.gamecore.config.GameRuntimeProperties
import org.hamcrest.MatcherAssert.assertThat
import org.hamcrest.Matchers.equalTo
import org.junit.Test
import java.util.Properties
class ArenaModeTest {
@Test
fun resolvesEveryFightSystemArenaMode() {
assertThat(mode(), equalTo(ArenaMode.NORMAL))
assertThat(mode(GameRuntimeProperties.FIGHT_ID to "42"), equalTo(ArenaMode.EVENT))
assertThat(mode(GameRuntimeProperties.FIGHT_ID to "-1"), equalTo(ArenaMode.TEST))
assertThat(mode(GameRuntimeProperties.REPLAY_ID to "42"), equalTo(ArenaMode.REPLAY))
assertThat(mode(GameRuntimeProperties.PREPARE_SCHEMATIC_ID to "42"), equalTo(ArenaMode.PREPARE))
assertThat(mode(GameRuntimeProperties.CHECK_SCHEMATIC_ID to "42"), equalTo(ArenaMode.CHECK))
assertThat(mode(eventKampfID = 42), equalTo(ArenaMode.EVENT))
assertThat(mode(eventKampfID = -1), equalTo(ArenaMode.TEST))
assertThat(mode(replayID = 42), equalTo(ArenaMode.REPLAY))
assertThat(mode(prepareSchemID = 42), equalTo(ArenaMode.PREPARE))
assertThat(mode(checkSchemID = 42), equalTo(ArenaMode.CHECK))
}
@Test
fun keepsFightSystemResolutionPrecedence() {
val resolved = mode(
GameRuntimeProperties.CHECK_SCHEMATIC_ID to "1",
GameRuntimeProperties.PREPARE_SCHEMATIC_ID to "2",
GameRuntimeProperties.FIGHT_ID to "3",
GameRuntimeProperties.REPLAY_ID to "4",
)
val resolved = mode(checkSchemID = 1, prepareSchemID = 2, eventKampfID = 3, replayID = 4)
assertThat(resolved, equalTo(ArenaMode.CHECK))
}
private fun mode(vararg values: Pair<String, String>): ArenaMode {
val properties = Properties().apply {
values.forEach { (name, value) -> setProperty(name, value) }
}
return ArenaMode.from(GameRuntimeProperties.load(properties))
}
private fun mode(
checkSchemID: Int = 0,
prepareSchemID: Int = 0,
eventKampfID: Int = 0,
replayID: Int = 0,
): ArenaMode = GameConfig.resolveArenaMode(checkSchemID, prepareSchemID, eventKampfID, replayID)
}
@@ -0,0 +1,22 @@
package de.steamwar.gamecore
import org.hamcrest.MatcherAssert.assertThat
import org.hamcrest.Matchers.equalTo
import org.hamcrest.Matchers.nullValue
import org.junit.Test
class GameConfigTest {
@Test
fun usesFightSystemDefaults() {
assertThat(GameConfig.CheckSchemID, equalTo(0))
assertThat(GameConfig.PrepareSchemID, equalTo(0))
assertThat(GameConfig.ReplayID, equalTo(0))
assertThat(GameConfig.ConfigFile, equalTo("config.yml"))
assertThat(GameConfig.EventKampfID, equalTo(0))
assertThat(GameConfig.BlueLeader, nullValue())
assertThat(GameConfig.RedLeader, nullValue())
assertThat(GameConfig.mode, equalTo(ArenaMode.NORMAL))
assertThat(GameConfig.test(), equalTo(false))
assertThat(GameConfig.replayserver(), equalTo(false))
}
}
@@ -1,50 +0,0 @@
package de.steamwar.gamecore.config
import org.hamcrest.MatcherAssert.assertThat
import org.hamcrest.Matchers.equalTo
import org.hamcrest.Matchers.nullValue
import org.junit.Test
import java.util.Properties
import java.util.UUID
class GameRuntimePropertiesTest {
@Test
fun loadsEveryFightSystemRuntimeProperty() {
val blueLeader = UUID.randomUUID()
val redLeader = UUID.randomUUID()
val properties = Properties().apply {
setProperty(GameRuntimeProperties.CHECK_SCHEMATIC_ID, "11")
setProperty(GameRuntimeProperties.PREPARE_SCHEMATIC_ID, "12")
setProperty(GameRuntimeProperties.REPLAY_ID, "-13")
setProperty(GameRuntimeProperties.CONFIG_FILE, "event.yml")
setProperty(GameRuntimeProperties.FIGHT_ID, "14")
setProperty(GameRuntimeProperties.BLUE_LEADER, blueLeader.toString())
setProperty(GameRuntimeProperties.RED_LEADER, redLeader.toString())
}
val runtime = GameRuntimeProperties.load(properties)
assertThat(runtime.checkSchematicId, equalTo(11))
assertThat(runtime.prepareSchematicId, equalTo(12))
assertThat(runtime.replayId, equalTo(-13))
assertThat(runtime.configFile, equalTo("event.yml"))
assertThat(runtime.fightId, equalTo(14))
assertThat(runtime.blueLeader, equalTo(blueLeader))
assertThat(runtime.redLeader, equalTo(redLeader))
assertThat(runtime.isReplayServer, equalTo(true))
}
@Test
fun usesFightSystemDefaults() {
val runtime = GameRuntimeProperties.load(Properties())
assertThat(runtime.checkSchematicId, equalTo(0))
assertThat(runtime.prepareSchematicId, equalTo(0))
assertThat(runtime.replayId, equalTo(0))
assertThat(runtime.configFile, equalTo("config.yml"))
assertThat(runtime.fightId, equalTo(0))
assertThat(runtime.blueLeader, nullValue())
assertThat(runtime.redLeader, nullValue())
assertThat(runtime.isReplayServer, equalTo(false))
}
}