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);
        }
Exemple #3
0
        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();
        }
Exemple #5
0
        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;
            }
        }