Пример #1
0
        private void HandleActionNext()
        {
            ActionMessageFinish message = new ActionMessageFinish();

            gameScreen.ActionBox.ClearOptions();
            gameScreen.ActualTurn = null;
            Controller.GetInstance().Client.SendData(message);
        }
Пример #2
0
        private void HandleActionMessage(String address, AbstractMessage message)
        {
            Player        currentPlayer  = controller.GetPlayer(IPAddress.Parse(address));
            BattleEngine  battleEngine   = BattleEngine.GetInstance();
            ActionMessage actionMessage  = (ActionMessage)message;
            UpdateMessage updateMesssage = new UpdateMessage();

            // Valide o jogador: Caso não seja o turno do jogador, descarte a mensagem
            if (currentPlayer.Name != battleEngine.ActualPlayer)
            {
                return;
            }

            actionMessage.PlayerName = currentPlayer.Name;

            if (actionMessage is ActionMessageFinish)
            {
                ActionMessageFinish finishMessage = (ActionMessageFinish)actionMessage;
                battleEngine.LastAction = LastAction.Passed;
            }
            else if (actionMessage is ActionMessageWalk)
            {
                ActionMessageWalk walkMessage = (ActionMessageWalk)actionMessage;
                walkMessage.Actor = battleEngine.ActualCharacter.RootName;
                battleEngine.ActualCharacterHasWalked = true;
                battleEngine.LastAction = LastAction.Walked;
            }
            else if (actionMessage is ActionMessageAttack)
            {
                ActionMessageAttack attackMessage = (ActionMessageAttack)actionMessage;
                attackMessage.Actor = battleEngine.ActualCharacter.RootName;

                AttackEvent attackEvent = battleEngine.ProcessAttack(attackMessage.TargetPlayer, attackMessage.Target);
                attackMessage.Damage        = attackEvent.Damage;
                attackMessage.CounterAttack = attackEvent.CounterAttack;
                attackMessage.CounterDamage = attackEvent.CounterDamage;

                battleEngine.LastAction = LastAction.Attacked;
            }

            actionMessage.PlayerName = currentPlayer.Name;
            updateMesssage.Action    = actionMessage;

            controller.Server.SendToAll(updateMesssage);
            foreach (Player player in controller.GetPlayers())
            {
                player.Ready = false;
            }
        }