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 HandleCharacterPositionMessage(String address, AbstractMessage message)
        {
            CharacterPositionMessage characterPositionMessage = (CharacterPositionMessage)message;
            Player           oponent = controller.GetPlayer(characterPositionMessage.PlayerName);
            DefaultDirection oponentDefaultDirection;
            AnimationType    oponentDefaultAnimation;

            if (controller.IsServer)
            {
                oponentDefaultDirection = DefaultDirection.Left;
                oponentDefaultAnimation = AnimationType.StaticLeft;

                controller.SupressUpdate();

                foreach (Character character in oponent.GetCharacters())
                {
                    character.ClearAnimatedMovements();
                    character.DefaultDirection = oponentDefaultDirection;
                    character.MapLocation      = characterPositionMessage.CharactersPosition[character.RootName];
                    character.AddAnimatedMovement(oponentDefaultAnimation, character.MapLocation);

                    MapEngine.GetInstance().SetObject(character);
                }

                controller.ReleaseUpdate();
            }
            else
            {
                oponentDefaultDirection = DefaultDirection.Right;
                oponentDefaultAnimation = AnimationType.StaticRight;

                controller.SupressUpdate();

                foreach (String characterName in characterPositionMessage.CharactersPosition.Keys)
                {
                    Character oponentCharacter = Bundle.Characters[characterName];
                    oponentCharacter.ClearAnimatedMovements();
                    oponentCharacter.DefaultDirection = oponentDefaultDirection;
                    oponentCharacter.MapLocation      = characterPositionMessage.CharactersPosition[characterName];
                    oponentCharacter.AddAnimatedMovement(oponentDefaultAnimation, oponentCharacter.MapLocation);
                    oponent.AddCharacter(oponentCharacter);

                    MapEngine.GetInstance().SetObject(oponentCharacter);
                }

                controller.ReleaseUpdate();
            }

            Camera.GetInstance().UpdateLocations = true;
        }
Ejemplo n.º 3
0
        private void HandleActionFinish()
        {
            gameScreen.SelectedCharacter = null;
            gameScreen.ChangeMode(GameScreenMode.BattleMode);

            CharacterPositionMessage message = new CharacterPositionMessage();

            message.PlayerName = Controller.GetInstance().GetLocalPlayer().Name;
            foreach (Character character in Controller.GetInstance().GetLocalPlayer().GetCharacters())
            {
                message.AddCharacter(character.RootName, character.MapLocation);
            }

            Controller.GetInstance().Client.SendData(message);
        }