Exemple #1
0
 public Models.Response messageProcessor(Models.Message message, Socket socket)
 {
     if (message.Type == "ClientMessage")
     {
         Models.ClientMessage cm = message.Value.ToObject <Models.ClientMessage>();
         return(clientCommandProcessor(cm, socket));
     }
     else if (message.Type == "GameMessage")
     {
         Models.GameMessage gm = message.Value.ToObject <Models.GameMessage>();
         return(gameCommandProcessor(gm, socket));
     }
     return(null);
 }
Exemple #2
0
        private Models.Response gameCommandProcessor(Models.GameMessage message, Socket sender)
        {
            Models.Response response;

            switch (message.Command)
            {
            case "PLAYASMANA":
                response = ctrlOnGoingGame.processPlayAsMana(message, sender);
                break;

            case "SETPHASE":
                response = ctrlOnGoingGame.processSetPhase(message, sender);
                break;

            case "ENDTURN":
                response = ctrlOnGoingGame.processEndTurn(message, sender);
                break;

            case "STARTTURN":
                response = ctrlOnGoingGame.processStartTurn(message, sender);
                break;

            case "DRAWCARD":
                response = ctrlOnGoingGame.processDrawCard(message, sender);
                break;

            case "SUMMON":
                response = ctrlOnGoingGame.processSummon(message, sender);
                break;

            case "ATTACKSAFEGUARDS":
                response = ctrlOnGoingGame.processAttackSafeguards(message, sender);
                break;

            case "BROKENSAFEGUARDS":
                response = ctrlOnGoingGame.processBrokenSafeguards(message, sender);
                break;

            case "YOUBROKEGUARD":
                response = ctrlOnGoingGame.processYouBrokeGuard(message, sender);
                break;

            case "ATTACKCREATURE":
                response = ctrlOnGoingGame.processAttackCreature(message, sender);
                break;

            case "BATTLE":
                response = ctrlOnGoingGame.processDoBattle(message, sender);
                break;

            case "SENDTO":
                response = ctrlOnGoingGame.processSendTo(message, sender);
                break;

            case "ATTACKOPPONENT":
                response = ctrlOnGoingGame.processAttackOpponent(message, sender);
                break;

            case "ISURRENDER":
                response = ctrlOnGoingGame.processISurrender(message, sender);
                break;

            case "DECKTOMANA":
                response = ctrlOnGoingGame.processDeckToMana(message, sender);
                break;

            case "INGAMECHATMESSAGE":
                response = ctrlOnGoingGame.processInGameChatMessage(message, sender);
                break;

            default:
                response = null;
                break;
            }

            if (response != null)
            {
                response.Type = 2;
            }

            return(response);
        }
        // ACTIONS TAKEN AFTER RECEIVING DATA FROM CLIENTS //

        private static void processResponseMessage(Models.Response response)
        {
            try
            {
                if (response != null)
                {
                    if (response.Type == 1)
                    {
                        Models.ClientMessage cm;

                        if (response.responseCommandToSender != null)
                        {
                            cm = new Models.ClientMessage(
                                response.responseCommandToSender,
                                response.commandStringArgumentsToSender,
                                response.commandIntArgumentsToSender,
                                response.CardCollection
                                );
                            send(Models.Message.Serialize(Models.Message.FromValue(cm)), response.sender);
                        }

                        if (response.responseCommandToSockets != null)
                        {
                            cm = new Models.ClientMessage(
                                response.responseCommandToSockets,
                                response.commandIntArgumentsToSockets,
                                response.commandStringArgumentsToSockets
                                );
                            foreach (Socket s in response.socketsToNotify)
                            {
                                send(Models.Message.Serialize(Models.Message.FromValue(cm)), s);
                            }
                        }
                    }
                    else
                    {
                        Models.GameMessage gm;

                        if (response.responseCommandToSender != null)
                        {
                            gm = new Models.GameMessage(
                                response.responseCommandToSender,
                                response.commandStringArgumentsToSender,
                                response.commandIntArgumentsToSender);
                            send(Models.Message.Serialize(Models.Message.FromValue(gm)), response.sender);
                        }

                        if (response.responseCommandToSockets != null)
                        {
                            gm = new Models.GameMessage(
                                response.responseCommandToSockets,
                                response.commandStringArgumentsToSockets,
                                response.commandIntArgumentsToSockets
                                );
                            foreach (Socket s in response.socketsToNotify)
                            {
                                send(Models.Message.Serialize(Models.Message.FromValue(gm)), s);
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                logger.Log(e.ToString());
            }
        }