internal void SetPowerOption(int playerId, PowerOptionChoice powerOptionChoice) { PlayerTask optionTask = SabberStoneConverter.CreatePlayerTaskOption(_originalGame, powerOptionChoice.PowerOption, powerOptionChoice.Target, powerOptionChoice.Position, powerOptionChoice.SubOption); _originalGame.Process(optionTask); _poGame = CreatePartiallyObservableGame(_originalGame); }
internal void SetPowerChoice(int playerId, PowerChoices powerChoices) { var choiceTask = SabberStoneConverter.CreatePlayerTaskChoice(_originalGame, playerId, powerChoices.ChoiceType, powerChoices.Entities); _originalGame.Process(choiceTask); _poGame = CreatePartiallyObservableGame(_originalGame); }
private void Start(GameConfigInfo gameConfigInfo) { Log.Info($"[_gameId:{GameId}] Game creation is happening in a few seconds!!!"); _game = SabberStoneConverter.CreateGame(Player1, Player2, gameConfigInfo); Log.Info($"[_gameId:{GameId}] Game creation done!"); _game.StartGame(); }
internal void SetUserInfos(List <UserInfo> userInfos) { _userInfos = userInfos; var gameConfigInfo = userInfos[0].GameConfigInfo; _originalGame = SabberStoneConverter.CreateGame(userInfos[0], userInfos[1], gameConfigInfo); _originalGame.StartGame(); _poGame = CreatePartiallyObservableGame(_originalGame); CallInitialisation(); }
internal void ProcessGameData(GameData gameData) { UserClient userInfoData = UserById(gameData.PlayerId); if (userInfoData == null) { Stop(); return; } switch (gameData.GameDataType) { case GameDataType.PowerOption: PowerOptionChoice powerOptionChoice = JsonConvert.DeserializeObject <PowerOptionChoice>(gameData.GameDataObject); PlayerTask optionTask = SabberStoneConverter.CreatePlayerTaskOption(_game, powerOptionChoice.PowerOption, powerOptionChoice.Target, powerOptionChoice.Position, powerOptionChoice.SubOption); _game.Process(optionTask); //if (powerOptionChoice.PowerOption.OptionType == OptionType.END_TURN) //{ // Log.Info($"State[{_game.State}]-T[{_game.Turn}] Hero1: {_game.Player1.Hero.Health} HP // Hero2: {_game.Player2.Hero.Health} HP"); //} SendActionToPlayers(gameData.PlayerId, gameData.GameDataType, gameData.GameDataObject); SendHistoryToPlayers(); if (_game.State == State.RUNNING) { SendOptionsOrChoicesToPlayers(); } else { Stop(); } break; case GameDataType.PowerChoice: var powerChoices = JsonConvert.DeserializeObject <PowerChoices>(gameData.GameDataObject); var choiceTask = SabberStoneConverter.CreatePlayerTaskChoice(_game, gameData.PlayerId, powerChoices.ChoiceType, powerChoices.Entities); _game.Process(choiceTask); // if mulligan has been finished! if (_game.Step == Step.BEGIN_MULLIGAN && _game.Player1.MulliganState == Mulligan.DONE && _game.Player2.MulliganState == Mulligan.DONE) { _game.MainBegin(); } SendActionToPlayers(gameData.PlayerId, gameData.GameDataType, gameData.GameDataObject); SendHistoryToPlayers(); if (_game.State == State.RUNNING) { SendOptionsOrChoicesToPlayers(); } else { Stop(); } break; case GameDataType.Concede: break; default: break; } }