Add new game states and update

This commit is contained in:
TDSTOS
2025-12-08 21:59:40 +01:00
parent 590318772f
commit fef0072007
10 changed files with 440 additions and 52 deletions

View File

@@ -2,6 +2,8 @@ package club.mcscrims.speedhg.game
import club.mcscrims.speedhg.SpeedHG
import club.mcscrims.speedhg.game.impl.BattleState
import club.mcscrims.speedhg.game.impl.DeathmatchState
import club.mcscrims.speedhg.game.impl.EndState
import club.mcscrims.speedhg.game.impl.FeastState
import club.mcscrims.speedhg.game.impl.ImmunityState
import club.mcscrims.speedhg.game.impl.PreStartState
@@ -16,7 +18,7 @@ class GameManager(
) {
private var currentState: GameState? = null
private val gameStateTypes = ConcurrentHashMap<GameStateTypes, GameState>()
internal val gameStateTypes = ConcurrentHashMap<GameStateTypes, GameState>()
private val winners = ArrayList<Player>()
@@ -33,20 +35,20 @@ class GameManager(
plugin.pluginConfig.data.getDuration( "waiting" ).seconds
)
gameStateTypes[ GameStateTypes.WAITING ] = currentState!!
gameStateTypes[ GameStateTypes.PRE_START ] = PreStartState( this, plugin, plugin.schedulerManager, plugin.pluginConfig.data.getDuration( "pre_start" ).seconds )
gameStateTypes[ GameStateTypes.IMMUNITY ] = ImmunityState( this, plugin, plugin.schedulerManager, plugin.pluginConfig.data.getDuration( "immunity" ).seconds )
gameStateTypes[ GameStateTypes.BATTLE ] = BattleState( this, plugin, plugin.schedulerManager, plugin.pluginConfig.data.getDuration( "battle" ).seconds )
gameStateTypes[ GameStateTypes.FEAST ] = FeastState( this, plugin, plugin.schedulerManager, plugin.pluginConfig.data.getDuration( "feast" ).seconds )
gameStateTypes[ GameStateTypes.DEATHMATCH ] = DeathmatchState( this, plugin, plugin.schedulerManager, plugin.pluginConfig.data.getDuration( "deathmatch" ).seconds )
gameStateTypes[ GameStateTypes.END ] = EndState( this, plugin, plugin.schedulerManager, plugin.pluginConfig.data.getDuration( "end" ).seconds )
try {
currentState?.onEnter( null )
} catch ( e: Exception ) {
plugin.logger.severe("Error during onEnter for state ${currentState?.name}: ${e.message}")
e.printStackTrace()
}
gameStateTypes[ GameStateTypes.WAITING ] = currentState!!
gameStateTypes[ GameStateTypes.PRE_START ] = PreStartState( this, plugin, plugin.schedulerManager, plugin.pluginConfig.data.getDuration( "pre_start" ).seconds )
gameStateTypes[ GameStateTypes.IMMUNITY ] = ImmunityState( this, plugin, plugin.schedulerManager, plugin.pluginConfig.data.getDuration( "immunity" ).seconds )
gameStateTypes[ GameStateTypes.BATTLE ] = BattleState( this, plugin, plugin.schedulerManager, plugin.pluginConfig.data.getDuration( "battle" ).seconds )
gameStateTypes[ GameStateTypes.FEAST ] = FeastState( this, plugin, plugin.schedulerManager, plugin.pluginConfig.data.getDuration( "feast" ).seconds )
gameStateTypes[ GameStateTypes.DEATHMATCH ] = TODO()
gameStateTypes[ GameStateTypes.END ] = TODO()
}
fun transitionTo(
@@ -85,6 +87,8 @@ class GameManager(
winners.forEach { this.winners.add( it ) }
}
fun getWinners(): List<Player> = winners.toList()
fun getCurrentState(): GameState? = currentState
fun getCurrentStateType(): GameStateTypes? = gameStateTypes.filter { it.value.name == currentState?.name }.keys.firstOrNull()