Skip to content

Commit 1fafc5f

Browse files
committed
feat(plugin): enable loading from state
1 parent 6f56801 commit 1fafc5f

File tree

5 files changed

+32
-21
lines changed

5 files changed

+32
-21
lines changed

plugin/src/server/sc/plugin2021/Game.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,11 @@ import sc.plugin2021.util.WinReason
1111
import sc.protocol.responses.ProtocolMessage
1212
import sc.shared.*
1313

14-
class Game: AbstractGame<Player>(GamePlugin.PLUGIN_UUID) {
14+
class Game(override val currentState: GameState = GameState()): AbstractGame<Player>(GamePlugin.PLUGIN_UUID) {
1515
companion object {
1616
val logger = LoggerFactory.getLogger(Game::class.java)
1717
}
1818

19-
override val currentState = GameState()
20-
2119
private val availableTeams = mutableListOf(Team.ONE, Team.TWO)
2220
override fun onPlayerJoined(): Player {
2321
if(availableTeams.isEmpty())

plugin/src/server/sc/plugin2021/GamePlugin.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@ package sc.plugin2021
22

33
import sc.api.plugins.IGameInstance
44
import sc.api.plugins.IGamePlugin
5+
import sc.api.plugins.IGameState
6+
import sc.api.plugins.host.GameLoader
57
import sc.plugins.PluginDescriptor
68
import sc.shared.ScoreAggregation
79
import sc.shared.ScoreDefinition
810
import sc.shared.ScoreFragment
11+
import java.io.File
912

1013
@PluginDescriptor(name = "Blokus", uuid = GamePlugin.PLUGIN_UUID)
1114
class GamePlugin: IGamePlugin {
@@ -15,9 +18,13 @@ class GamePlugin: IGamePlugin {
1518

1619
override fun id() = PLUGIN_UUID
1720

18-
override fun createGame(): IGameInstance = Game()
21+
override fun createGame(): IGameInstance =
22+
Game()
1923

20-
override fun getScoreDefinition(): ScoreDefinition =
24+
override fun createGameFromState(state: IGameState): IGameInstance =
25+
Game(state as GameState)
26+
27+
override val scoreDefinition: ScoreDefinition =
2128
ScoreDefinition(arrayOf(
2229
ScoreFragment("Gewinner"),
2330
ScoreFragment("\u2205 Punkte", ScoreAggregation.AVERAGE)

sdk/src/server-api/sc/api/plugins/IGamePlugin.java

Lines changed: 0 additions & 13 deletions
This file was deleted.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package sc.api.plugins
2+
3+
import sc.plugins.IPlugin
4+
import sc.shared.ScoreDefinition
5+
import java.io.File
6+
7+
interface IGamePlugin: IPlugin {
8+
fun id(): String?
9+
/** @return eine neues Spiel dieses Typs. */
10+
fun createGame(): IGameInstance
11+
fun createGameFromState(state: IGameState): IGameInstance
12+
13+
val scoreDefinition: ScoreDefinition
14+
}

server/test/sc/server/plugins/TestPlugin.kt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ package sc.server.plugins
22

33
import sc.api.plugins.IGameInstance
44
import sc.api.plugins.IGamePlugin
5+
import sc.api.plugins.IGameState
56
import sc.plugins.PluginDescriptor
67
import sc.shared.ScoreDefinition
8+
import java.io.File
79

810
@PluginDescriptor(name = "TestPlugin", uuid = TestPlugin.TEST_PLUGIN_UUID)
911
class TestPlugin: IGamePlugin {
@@ -13,9 +15,12 @@ class TestPlugin: IGamePlugin {
1315

1416
override fun id(): String = TEST_PLUGIN_UUID
1517

16-
override fun createGame(): IGameInstance = TestGame()
18+
override fun createGame(): IGameInstance =
19+
TestGame()
1720

18-
override fun getScoreDefinition(): ScoreDefinition =
19-
ScoreDefinition("winner")
21+
override fun createGameFromState(state: IGameState): IGameInstance =
22+
TestGame(state as TestGameState)
2023

24+
override val scoreDefinition: ScoreDefinition =
25+
ScoreDefinition("winner")
2126
}

0 commit comments

Comments
 (0)