Ejemplo n.º 1
0
        private void HandleCharacterPositionMessage(String address, AbstractMessage message)
        {
            CharacterPositionMessage characterPositionMessage = (CharacterPositionMessage)message;
            Player currentPlayer = controller.GetPlayer(IPAddress.Parse(address));

            if (serverStatus != ServerStatus.WaitingCharacterPosition || currentPlayer.Ready)
            {
                return;
            }

            foreach (String characterName in characterPositionMessage.CharactersPosition.Keys)
            {
                currentPlayer.GetCharacter(characterName).MapLocation =
                    characterPositionMessage.CharactersPosition[characterName];
            }

            foreach (Player player in controller.GetPlayers())
            {
                if (player.IPAddress != currentPlayer.IPAddress)
                {
                    controller.Server.SendData(player.IPAddress, message);
                }
            }

            currentPlayer.Ready = true;
            bool ready = true;

            foreach (Player player in controller.GetPlayers())
            {
                if (!player.Ready)
                {
                    ready = false;
                }
            }
            if (ready)
            {
                StartBattleMessage startBattleMessage = new StartBattleMessage();
                BattleEngine       battleEngine       = BattleEngine.GetInstance();

                serverStatus = ServerStatus.Game;

                battleEngine.NextCharacterTurn();
                startBattleMessage.Turn = new Turn(battleEngine.ActualCharacter.RootName,
                                                   battleEngine.ActualPlayer, false);

                startBattleMessage.Affects = ConvertEffectsToArray(battleEngine.ProcessSpecialAbilities());

                controller.Server.SendToAll(startBattleMessage);
                battleEngine.ClearAffects();
            }
        }
Ejemplo n.º 2
0
        private void HandleStartBattleMessage(String address, AbstractMessage message)
        {
            GameScreen         gameScreen         = GameScreen.GetInstance();
            StartBattleMessage startBattleMessage = (StartBattleMessage)message;
            Turn actualTurn = startBattleMessage.Turn;

            controller.SupressUpdate();

            gameScreen.ActualTurn = actualTurn;
            UpdateAffects(startBattleMessage.Affects);
            gameScreen.DoAffects(actualTurn);

            Character actualCharacter = controller.GetPlayer(actualTurn.PlayerName).GetCharacter(actualTurn.CharacterName);

            Camera.GetInstance().FocusOn(actualCharacter.MapLocation);
            gameScreen.MapCursor.MapLocation = Camera.GetInstance().CenterLocation;
            gameScreen.MapCursor.IsVisible   = gameScreen.SelectedCharacter == null;
            gameScreen.Handlers.Peek().Watch(actualCharacter);
            gameScreen.Handlers.Peek().SetTrigger(Trigger.TriggerActionBox);

            controller.ReleaseUpdate();
        }