using GameServer.Contents.GameMode.Manage.PlayManage; using ServerCore; namespace GameServer.Contents.GameMode.Manage.StateManage; public abstract class GameModeStateBase : IGameModeState { protected IGameMode m_game_mode; protected GameModeBase m_game_mode_base; private GameModeState m_state = GameModeState.None; protected DateTime m_next_state_change_time; public GameModeStateBase(IGameMode gameMode, GameModeState state) { m_game_mode = gameMode; var game_mode_base = m_game_mode as GameModeBase; NullReferenceCheckHelper.throwIfNull(game_mode_base, () => $"game_mode_base is null !!"); m_game_mode_base = game_mode_base; m_next_state_change_time = DateTimeHelper.Current.AddSeconds(10); //kihoon todo: 대기시간은 나중에 meta로 반영해야 된다. m_state = state; } public abstract void enter(); public abstract void update(); public abstract void exit(); public abstract GameModeState checkState(); public GameModeState getStateType() { return m_state; } public DateTime getNextStateChangeTime() { return m_next_state_change_time; } }