コード例 #1
0
        protected override void initHandlers()
        {
            apiRouter = new Connect4APIRouter();

            connectionToServer.RegisterHandler((short)CommProtocol.MsgType.boardUpdate, requestMove);
            connectionToServer.RegisterHandler((short)CommProtocol.MsgType.playerInit, initSettings);
            connectionToServer.RegisterHandler((short)CommProtocol.MsgType.RPCMove, handleRPCMove);
            connectionToServer.RegisterHandler((short)CommProtocol.MsgType.gameInfo, handleGameStatus);
            connectionToServer.RegisterHandler((short)ServerCommProtocl.PlayerJoinedGameRoom, handlePlayerJoinedRoom);
            connectionToServer.RegisterHandler((short)ServerCommProtocl.PlayerLeftGameRoom, handlePlayerLeftRoom);
            connectionToServer.RegisterHandler((short)ServerCommProtocl.PlayerTimerInit, handlePlayerTimerInit);
            connectionToServer.RegisterHandler((short)ServerCommProtocl.PlayerTimerCommand, handlePlayerTimerCommand);
            StartCoroutine(findAndInitRenderer <Renderer>((x) => localRenderer = x));
            StartCoroutine(handleNetworkMsgQueue());

            //Quick hack
            humanControlls = localRenderer.gameObject.GetComponent <Connect4HumanControlls>();
            humanControlls.init((move) => {
                onOutgoingLocalMsg(move.ToString(), ClientPlayersHandler.sendFromCurrentPlayer());
                humanControlls.endPlayerTurn();
            });
            if (ClientPlayersHandler.hasLocalHumanPlayer())
            {
                ClientPlayersHandler.getLocalHumanPlayer().onHumanTakeInput = () => {
                    humanControlls.startPlayerTurn();
                }
            }
            ;

            TCPMessageQueue.readMsgInstant = ((msg) => {
                TCPMessageQueue.popMessage();
                readTCPMsg(msg);
            });
        }
コード例 #2
0
        public void handleInitSettings(NetworkMessage initMsg)
        {
            byte[]   bytes = initMsg.reader.ReadBytesAndSize();
            GameInfo msg   = ClientController.Deserialize <GameInfo> (bytes);

            ClientPlayersHandler.initPlayerColor(msg.username, msg.myColor);
            isListeningForTCP = true;
        }
コード例 #3
0
 public void startButtonClicked()
 {
     Msf.Connection.SendMessage((short)ServerCommProtocl.StartSinglePlayerGame);
     ClientPlayersHandler.resetLocalPLayers();
     gameObject.SetActive(false);
     ClientUIStateManager.requestGotoState(ClientUIStates.PlayingGame, scene.SceneName);
     //SceneManager.LoadScene (scene.SceneName);
 }
コード例 #4
0
        public void requestMove(NetworkMessage boardMsg)
        {
            byte[] bytes = boardMsg.reader.ReadBytesAndSize();
            CommProtocol.StringMessage msg = Deserialize <Game.CommProtocol.StringMessage> (bytes);

            lastRawBoard = msg.msg;
            string formattedBoard = Connect4JsonParser.formatBoardMsgFromServer(msg.msg, msg.color);

            ClientPlayersHandler.onReceiveServerMsg(formattedBoard, msg.color);
        }
コード例 #5
0
        public void handleInitSettings(NetworkMessage initMsg)
        {
            GameInfo msg = Deserialize <GameInfo> (initMsg.reader.ReadBytesAndSize());

            ClientPlayersHandler.initPlayerColor(msg.username, msg.myColor);
            LocalPlayer p = ClientPlayersHandler.getPlayerFromColor(msg.myColor);

            RealtimeTCPController.registerLocalPlayer(colorToTeam(msg.myColor), p.takeInput, p.isMainPlayer());
            if (p.isMainPlayer())
            {
                isListeningForTCP = true;
            }
        }
コード例 #6
0
        private static void setupLocalPlayers(PreGameSlotInfo[] slots)
        {
            ClientPlayersHandler.resetLocalPLayers();
            string localUsername = ClientUIOverlord.getCurrentAcountInfo().Username;

            foreach (PreGameSlotInfo slot in slots)
            {
                if (slot.belongsToPlayer == localUsername)
                {
                    addLocalPlayer(slot.type);
                }
            }
        }
コード例 #7
0
        public void requestMove(BoardMsg msg)
        {
            PlayerColor requestColor = msg.updateNumber % 2 == 0 ? PlayerColor.White : PlayerColor.Black;

            if (ClientPlayersHandler.hasLocalPlayerOfColor(requestColor))
            {
                waitingForInput = true;
                ClientPlayersHandler.onReceiveServerMsg(formatBoard(msg.requestMoveColor, msg.board), msg.requestMoveColor);
            }
            else
            {
                waitingForInput = false;
            }
        }
コード例 #8
0
        public void handleInitSettings(NetworkMessage initMsg)
        {
            byte[]   bytes = initMsg.reader.ReadBytesAndSize();
            GameInfo msg   = ClientController.Deserialize <GameInfo> (bytes);

            ClientPlayersHandler.initPlayerColor(msg.username, msg.myColor);
            LocalPlayer p = ClientPlayersHandler.getPlayerFromColor(msg.myColor);

            RealtimeTCPController.registerLocalPlayer(convertColorToTeam(p.info.color), p.getTakeInputFunc(), !p.isNPC());

            if (p.isNPC() == false)
            {
                localPlayerColor = p.info.color;
            }

            isListeningForTCP = true;
        }
コード例 #9
0
 private static void addLocalPlayer(PreGameSlotType type)
 {
     if (type == PreGameSlotType.Player)
     {
         ClientPlayersHandler.addSelf();
     }
     else if (type == PreGameSlotType.TrainingBot)
     {
         LocalTrainingBots.addBot(gameSpecs.type);
     }
     else if (type == PreGameSlotType.SelfClone)
     {
         ClientPlayersHandler.addClone();
     }
     else if (type == PreGameSlotType.Human)
     {
         ClientPlayersHandler.addHuman();
     }
 }
コード例 #10
0
        public void handleInitSettings(NetworkMessage initMsg)
        {
            GameInfo msg = Deserialize <GameInfo> (initMsg.reader.ReadBytesAndSize());

            ClientPlayersHandler.initPlayerColor(msg.username, msg.myColor);
            LocalPlayer p = ClientPlayersHandler.getPlayerFromColor(msg.myColor);

            int playerIndex = convertColorToTeam(msg.myColor);

            TCPFormater [playerIndex] = new SnakeTCPFormater(playerIndex);
            Action <string> sendBoardFunc = p.getTakeInputFunc();


            RealtimeTCPController.registerLocalPlayer(playerIndex,
                                                      (string s) => {
                sendBoardFunc(s);
            }
                                                      , !p.isNPC() && !p.Human);

            if (p.isMainPlayer())
            {
                localPlayerColor = p.info.color;
            }
            if (p.Human)
            {
                localHumanColor = p.info.color;
            }

            if (p.info.color == PlayerColor.Blue)
            {
                hasLocalBluePlayer = true;
            }
            else
            {
                hasLocalRedPlayer = true;
            }

            isListeningForTCP = true;
        }
コード例 #11
0
        public override void setLocalPreGamePlayers()
        {
            base.setLocalPreGamePlayers();
            ClientPlayersHandler.addSelf();

            if (hasStoredSettings == false)
            {
                savedSettings     = p2Settings.value;
                hasStoredSettings = true;
            }

            //Hardcoded check if the Bot Setting is actually Human
            print("Name: " + LocalTrainingBots.getBotSettingsName(type, savedSettings));
            if (LocalTrainingBots.getBotSettingsName(type, savedSettings) == "Human")
            {
                ClientPlayersHandler.addHuman();
            }
            else
            {
                LocalTrainingBots.addBot(type, savedSettings);
            }
        }
コード例 #12
0
        public void handleInitSettings(NetworkMessage initMsg)
        {
            GameInfo msg = Deserialize <GameInfo> (initMsg.reader.ReadBytesAndSize());

            ClientPlayersHandler.initPlayerColor(msg.username, msg.myColor);
            LocalPlayer p = ClientPlayersHandler.getPlayerFromColor(msg.myColor);

            RealtimeTCPController.registerLocalPlayer(BombermanOverlord.convertColorToTeam(p.info.color), p.getTakeInputFunc(), !p.isNPC());

            if (p.isMainPlayer())
            {
                localPlayerColor = p.info.color;
            }
            if (p.Human)
            {
                localHumanColor = p.info.color;
            }

            print(localPlayerColor);

            isListeningForTCP = true;
        }
コード例 #13
0
        protected override void readTCPMsg(ReceivedLocalMessage msg)
        {
            if (msg.message.Length == 0)
            {
                RealtimeTCPController.requestBoard(convertColorToTeam(localPlayerColor), true);
                return;
            }
            APIMsgConclusion conclusion = APIRouter.handleIncomingMsg(msg.message);

            if (conclusion.target == MsgTarget.Server)
            {
                int dir = -1;
                if (parseCommandMsg(msg.message, out dir))
                {
                    sendServerMsg(new GameCommand(localPlayerColor, dir), (short)SnakeProtocol.MsgType.playerCommands);
                }

                RealtimeTCPController.requestBoard(convertColorToTeam(localPlayerColor), true);
            }
            else if (conclusion.status == ResponseStatus.Success && conclusion.target == MsgTarget.Player)
            {
                ClientPlayersHandler.getPlayerFromColor(localPlayerColor).takeInput(conclusion.msg);
            }
        }
コード例 #14
0
 //Called from "onJoinStartedGame" in GameConnectorUI
 public virtual void setLocalPreGamePlayers()
 {
     ClientPlayersHandler.resetLocalPLayers();
 }