public void StopGame(Game game, DateTime recalcTime) { Check.Require(game.GameState == GameStates.Started, String.Format( "Невозможно остановить игру, когда она находится в режиме {0}.", Enum.GetName(typeof(GameStates), game.GameState)) ); // Останавливаем демона if (gameDemon != null) { gameDemon.Stop(); gameDemon = null; } // Останавливаем игру game.GameState = GameStates.Finished; // Для каждой команды устанавливаем время окончания игры foreach (Team team in game.Teams) { if (team.TeamGameState != null && team.TeamGameState.GameDoneTime == null) { if (team.TeamGameState.ActiveTaskState != null) { taskService.CloseTaskForTeam(team.TeamGameState.ActiveTaskState, TeamTaskStateFlag.Overtime, recalcTime); } team.TeamGameState.GameDoneTime = recalcTime; } } }
private IGameDemon GetGameDemon(int gameId) { if (gameDemon == null) { gameDemon = GameDemon.GetInstance(new RecalcGameStateService(gameId, gameRepository, this)); } return(gameDemon); }
public GameService( IRepository<Game> gameRepository, IRepository<Team> teamRepository, IRepository<TeamGameState> teamGameStateRepository, ITaskService taskService, IGameDemon gameDemon) : this(gameRepository, teamRepository, teamGameStateRepository, taskService) { Check.Require(gameDemon != null, "gameDemon may not be null"); this.gameDemon = gameDemon; }
private IGameDemon GetGameDemon(int gameId) { if (gameDemon == null) gameDemon = GameDemon.GetInstance(new RecalcGameStateService(gameId, gameRepository, this)); return gameDemon; }
public void StopGame(Game game, DateTime recalcTime) { Check.Require(game.GameState == GameStates.Started, String.Format( "Невозможно остановить игру, когда она находится в режиме {0}.", Enum.GetName(typeof(GameStates), game.GameState)) ); // Останавливаем демона if (gameDemon != null) { gameDemon.Stop(); gameDemon = null; } // Останавливаем игру game.GameState = GameStates.Finished; // Для каждой команды устанавливаем время окончания игры foreach (Team team in game.Teams) { if (team.TeamGameState != null && team.TeamGameState.GameDoneTime == null) { if (team.TeamGameState.ActiveTaskState != null) { taskService.CloseTaskForTeam(team.TeamGameState.ActiveTaskState, TeamTaskStateFlag.Overtime, recalcTime); } team.TeamGameState.GameDoneTime = recalcTime; } } }