Example #1
0
        private void OnAvailableMoves(NetworkMessage msg)
        {
            Debug.Log("Available moves calculated");
            AvailableMovesResponseMessage message = msg.ReadMessage <AvailableMovesResponseMessage>();

            message.ActionNumber = AdjustActionNumber(message.ActionNumber);

            GameState.ConfirmAvailableActions(message.AvailableMoveNodeIds.ToList(), message.AvailableAttackNodeIds.ToList(), message.ActionNumber, message.SubActionNumber);
        }
Example #2
0
        private void OnAvailableMoves(NetworkMessage msg)
        {
            AvailableMovesResponseMessage message = msg.ReadMessage <AvailableMovesResponseMessage>();

            if (message.ActionNumber != 1 && message.ActionNumber != 2)
            {
                return;
            }

            if (message.AvailableAttackNodeIds.Any())
            {
                // pick first attack result since they are ordered by efficiency
                NetClient.Send(CustomMessageTypes.SelectActionRequest, new SelectActionRequestMessage
                {
                    ActionNumber    = message.ActionNumber,
                    SubActionNumber = message.SubActionNumber,
                    SelectedNodeId  = message.AvailableAttackNodeIds.First()
                });
            }
            else
            {
                if (message.AvailableMoveNodeIds.Any())
                {
                    // pick the first movement node
                    NetClient.Send(CustomMessageTypes.SelectActionRequest, new SelectActionRequestMessage
                    {
                        ActionNumber    = message.ActionNumber,
                        SubActionNumber = message.SubActionNumber,
                        SelectedNodeId  = message.AvailableMoveNodeIds[0]
                    });
                }
                else
                {
                    _monstersWithAvailableMoves.Remove(message.SelectedMonsterTypeId);

                    //TODO: this would perhaps be better as a custom message type that triggers a pass
                    NetClient.Send(CustomMessageTypes.SelectActionRequest, new SelectActionRequestMessage
                    {
                        ActionNumber    = message.ActionNumber,
                        SubActionNumber = message.SubActionNumber,
                        SelectedNodeId  = -1
                    });
                }
            }
        }
        private void OnAvailableMoves(NetworkMessage msg)
        {
            AvailableMovesResponseMessage message = msg.ReadMessage <AvailableMovesResponseMessage>();

            if (message.ActionNumber != 1 && message.ActionNumber != 2)
            {
                return;
            }

            if (message.AvailableAttackNodeIds.Any())
            {
                int randInt = _random.Next(0, message.AvailableAttackNodeIds.Length - 1);
                NetClient.Send(CustomMessageTypes.SelectActionRequest, new SelectActionRequestMessage
                {
                    ActionNumber    = message.ActionNumber,
                    SubActionNumber = message.SubActionNumber,
                    SelectedNodeId  = message.AvailableAttackNodeIds[randInt]
                });
            }
            else
            {
                if (message.AvailableMoveNodeIds.Any())
                {
                    int randInt = _random.Next(0, message.AvailableMoveNodeIds.Length - 1);
                    NetClient.Send(CustomMessageTypes.SelectActionRequest, new SelectActionRequestMessage
                    {
                        ActionNumber    = message.ActionNumber,
                        SubActionNumber = message.SubActionNumber,
                        SelectedNodeId  = message.AvailableMoveNodeIds[randInt]
                    });
                }
                else
                {
                    _monstersWithAvailableMoves.Remove(message.SelectedMonsterTypeId);

                    //TODO: this would perhaps be better as a custom message type that triggers a pass
                    NetClient.Send(CustomMessageTypes.SelectActionRequest, new SelectActionRequestMessage
                    {
                        ActionNumber    = message.ActionNumber,
                        SubActionNumber = message.SubActionNumber,
                        SelectedNodeId  = -1
                    });
                }
            }
        }