Пример #1
0
        static public void SendTurnRequest(int action, int system, int player, int playerarmy)
        {
            if (NetworkHandler == null)
            {
                return;
            }

            if (Server)
            {
                // Server host has no need to confirm, skip straight to sending the confirmed turns to all clients
                SendTurnConfirm(action, system, player, playerarmy);
            }
            else
            {
                // Client sends to server to confirm action
                NetworkTurnType turn = new NetworkTurnType();
                {
                    turn.Action = action;
                    turn.System = system;
                    turn.Player = player;
                    turn.Army   = playerarmy;
                }
                string turndata = JsonConvert.SerializeObject(turn);
                foreach (NetConnection connection in NetworkHandler.Connections)
                {
                    SendString(connection, MESSAGE_TURN_REQUEST, turndata);
                }
            }
        }
Пример #2
0
        static public void SendTurnConfirm(int action, int system, int player, int playerarmy)
        {
            // Extra logic on server host to also confirm the turn on their own game client
            if (Server)
            {
                Helper.GetGameScene().DoTurn(action, system, player, playerarmy);
            }
            NetworkTurnType turn = new NetworkTurnType();
            {
                turn.Action = action;
                turn.System = system;
                turn.Player = player;
                turn.Army   = playerarmy;
            }
            string turndata = JsonConvert.SerializeObject(turn);

            foreach (NetConnection connection in NetworkHandler.Connections)
            {
                SendString(connection, MESSAGE_TURN_CONFIRM, turndata);
            }

            // TEMP Testing
            if (action == Helper.ACTION_WAR)
            {
                Helper.GetGameScene().RewardSelection(player);
            }
        }
Пример #3
0
        static private void ParseMessage_Data(NetIncomingMessage message)
        {
            // Handle custom messages
            int    id = message.ReadInt32();
            string datastr;
            string cardname;

            // Parse message
            switch (id)
            {
            case MESSAGE_INITIAL:
                datastr = message.ReadString();
                ((Scene_Game)Scene.Instance).LoadFromJSON(datastr);

                break;

            case MESSAGE_PLAYERID:
                int playerid = message.ReadInt16();
                Program.ThisPlayer = playerid;

                break;

            case MESSAGE_TURN_REQUEST:
                datastr = message.ReadString();
                NetworkTurnType turn = JsonConvert.DeserializeObject <NetworkTurnType>(datastr);
                SendTurnConfirm(turn.Action, turn.System, turn.Player, turn.Army);

                break;

            case MESSAGE_TURN_CONFIRM:
                datastr = message.ReadString();
                NetworkTurnType turnconfirm = JsonConvert.DeserializeObject <NetworkTurnType>(datastr);
                Helper.GetGameScene().DoTurn(turnconfirm.Action, turnconfirm.System, turnconfirm.Player, turnconfirm.Army);

                break;

            case MESSAGE_CARD_DISPLAYWIN:
                string[]  cards      = new string[3];
                JObject[] cards_json = new JObject[3];
                {
                    for (int card = 0; card < 3; card++)
                    {
                        cards[card]      = message.ReadString();
                        cards_json[card] = (JObject)JsonConvert.DeserializeObject(cards[card]);
                    }
                }
                Helper.GetGameScene().RewardSelection_ReceiveCards(cards_json);

                break;

            case MESSAGE_CARD_TRYPICK:
                cardname = message.ReadString();
                // Check against cards originally sent
                bool real = Helper.GetGameScene().CheckChosenCard(cardname);
                if (!real)
                {
                    cardname = "";
                    Console.WriteLine("Card denied by server.");
                }
                SendCardConfirm(message.SenderConnection, cardname);

                break;

            case MESSAGE_CARD_CONFIRM:
                cardname = message.ReadString();
                Helper.GetGameScene().PickCard(cardname);

                break;

            default:
                break;
            }
        }