コード例 #1
0
        public int CalToward(C2SMove model)
        {
            int toward = 1;

            if (model.x >= 0)
            {
                if (model.z >= 0)
                {
                    if (model.x >= model.z)
                    {
                        toward = 2;
                    }
                    else
                    {
                        toward = 1;
                    }
                }
                else if (model.z < 0)
                {
                    if (model.x >= -model.z)
                    {
                        toward = 2;
                    }
                    else
                    {
                        toward = 3;
                    }
                }
            }
            else if (model.x < 0)
            {
                if (model.z >= 0)
                {
                    if (-model.x >= model.z)
                    {
                        toward = 4;
                    }
                    else
                    {
                        toward = 1;
                    }
                }
                else if (model.z < 0)
                {
                    if (-model.x >= -model.z)
                    {
                        toward = 4;
                    }
                    else
                    {
                        toward = 3;
                    }
                }
            }
            return(toward);
        }
コード例 #2
0
        //消息分发
        public void ReceiveMsgControl(Message msg)
        {
            if (Server.instance.isGaming == false)
            {
                return;
            }
            switch (msg.messageType)
            {
            case (int)messageType.C2SMove:
                C2SMove c2SMove  = SerializeFunc.instance.DeSerialize <C2SMove>(msg.msg);
                int     playerId = Server.instance.GetPlayerId(msg.clientId);
                lock (PlayerManager.instance.playerMove)
                {
                    if (!PlayerManager.instance.playerMove.ContainsKey(playerId))
                    {
                        PlayerManager.instance.playerMove.Add(playerId, c2SMove);
                    }
                    else
                    {
                        PlayerManager.instance.playerMove[playerId] = c2SMove;
                    }
                }

                break;

            case (int)messageType.C2SAttack:
                C2SAttack c2SAttack = SerializeFunc.instance.DeSerialize <C2SAttack>(msg.msg);
                EventManager.instance.AddEvent(() =>
                {
                    GameProcess.instance.ClientAttack(msg.clientId, c2SAttack);
                });
                break;

            case (int)messageType.C2SChooseChar:
                C2SChooseChar c2SChooseChar = SerializeFunc.instance.DeSerialize <C2SChooseChar>(msg.msg);
                EventManager.instance.AddEvent(() =>
                {
                    GameProcess.instance.ChooseChar(msg.clientId, c2SChooseChar);
                });
                break;

            case (int)messageType.C2SChooseLocation:
                C2SChooseLocation c2SChooseLocation = SerializeFunc.instance.DeSerialize <C2SChooseLocation>(msg.msg);
                EventManager.instance.AddEvent(() =>
                {
                    GameProcess.instance.ChooseLocation(msg.clientId, c2SChooseLocation);
                });
                break;

            case (int)messageType.C2SDeleteItem:
                C2SDeleteItem c2SDeleteItem = SerializeFunc.instance.DeSerialize <C2SDeleteItem>(msg.msg);
                EventManager.instance.AddEvent(() =>
                {
                    GameProcess.instance.DeleteItem(msg.clientId, c2SDeleteItem);
                });
                break;

            case (int)messageType.C2SUseItem:
                C2SUseItem c2SUseItem = SerializeFunc.instance.DeSerialize <C2SUseItem>(msg.msg);
                EventManager.instance.AddEvent(() =>
                {
                    GameProcess.instance.UseItem(msg.clientId, c2SUseItem);
                });
                break;

            case (int)messageType.C2SChangeWeapon:
                C2SChangeWeapon c2SChangeWeapon = SerializeFunc.instance.DeSerialize <C2SChangeWeapon>(msg.msg);
                EventManager.instance.AddEvent(() =>
                {
                    GameProcess.instance.ClientChangeWeapon(msg.clientId, c2SChangeWeapon);
                });
                break;

            case (int)messageType.C2SDeleteChicken:
                C2SDeleteChicken c2SDeleteChicken = SerializeFunc.instance.DeSerialize <C2SDeleteChicken>(msg.msg);
                EventManager.instance.AddEvent(() =>
                {
                    GameProcess.instance.ClientDeleteChicken(msg.clientId, c2SDeleteChicken);
                });
                break;

            case (int)messageType.C2SAction:
                C2SAction c2SAction = SerializeFunc.instance.DeSerialize <C2SAction>(msg.msg);
                EventManager.instance.AddEvent(() =>
                {
                    GameProcess.instance.ClientAction(msg.clientId, c2SAction);
                });
                break;

            default:
                return;
            }
        }
コード例 #3
0
        //客户端移动
        public void ClientMove(int playerId, C2SMove model)
        {
            GameMap gameMap = GameMapManager.instance.GetGameMap(0);

            Player player = PlayerManager.instance.GetPlayer(playerId);

            if (player == null)
            {
                return;
            }

            if (model.x >= 0)
            {
                if (model.z >= 0)
                {
                    if (model.x >= model.z)
                    {
                        player.toward = 2;
                    }
                    else
                    {
                        player.toward = 1;
                    }
                }
                else if (model.z < 0)
                {
                    if (model.x >= -model.z)
                    {
                        player.toward = 2;
                    }
                    else
                    {
                        player.toward = 3;
                    }
                }
            }
            else if (model.x < 0)
            {
                if (model.z >= 0)
                {
                    if (-model.x >= model.z)
                    {
                        player.toward = 4;
                    }
                    else
                    {
                        player.toward = 1;
                    }
                }
                else if (model.z < 0)
                {
                    if (-model.x >= -model.z)
                    {
                        player.toward = 4;
                    }
                    else
                    {
                        player.toward = 3;
                    }
                }
            }

            int cellX = CDT2Cell.instance.CDT2X(player.locationX + model.x);
            int cellZ = CDT2Cell.instance.CDT2Z(player.locationZ + model.z);

            if (MoveCal.instance.IsCanMove(player, cellX, cellZ))
            {
                if (gameMap.gameMap[cellX, cellZ] >= 2001 && gameMap.gameMap[cellX, cellZ] <= 3000)  // get item
                {
                    if (player.index2ItemId.Count < 6)
                    {
                        var itemId = gameMap.gameMap[cellX, cellZ];
                        ItemController.instance.AddItem(player, itemId, 1);
                        MapController.instance.SetMapValue(gameMap, cellX, cellZ, 0);
                        SyncItem(player);

                        ConsoleLog.instance.Info(string.Format("Player {0} 获得道具 {1}", player.playerId, itemId));
                    }
                    else if (player.index2ItemId.Count == 6)
                    {
                        var itemId = gameMap.gameMap[cellX, cellZ];
                        if (itemId >= 2007 && itemId <= 2015)
                        {
                            ItemController.instance.AddItem(player, itemId, 1);
                            MapController.instance.SetMapValue(gameMap, cellX, cellZ, 0);
                            SyncItem(player);

                            ConsoleLog.instance.Info(string.Format("Player {0} 获得道具 {1}", player.playerId, itemId));
                        }
                    }
                }
                else if (gameMap.gameMap[cellX, cellZ] == 3001 && gameMap.gameMap[player.x, player.z] != 3001)
                {
                    player.timer = new Timer(new TimerCallback(PlayerWin), player.playerId, ReadConfig.instance.portalTime * 1000, Timeout.Infinite);
                    SendBeginTimer(playerId, ReadConfig.instance.portalTime);
                }
                else if (gameMap.gameMap[cellX, cellZ] != 3001 && gameMap.gameMap[player.x, player.z] == 3001)
                {
                    if (player.timer != null)
                    {
                        player.timer.Change(Timeout.Infinite, Timeout.Infinite);
                        SendEndTimer(playerId);
                    }
                }
                else if (Server.instance.whichGame == 3)
                {
                    if (gameMap.gameMap[cellX, cellZ] == 3003 && gameMap.gameMap[player.x, player.z] != 3003)
                    {
                        if (player.isHaveChicken == false)
                        {
                            ItemController.instance.AddItem(player, 3003, 1);
                            MapController.instance.SetMapValue(gameMap, cellX, cellZ, 0);
                            SyncItem(player);

                            ConsoleLog.instance.Info(string.Format("Player {0} 捡起鸡 {1}", player.playerId, 3003));
                        }
                    }
                    else if (!(cellX == player.x && cellZ == player.z))
                    {
                        if (player.isHaveChicken == false && gameMap.gameMap[cellX, cellZ] == 3003 && gameMap.gameMap[player.x, player.z] == 3003)
                        {
                            ItemController.instance.AddItem(player, 3003, 1);
                            MapController.instance.SetMapValue(gameMap, cellX, cellZ, 0);
                            SyncItem(player);

                            ConsoleLog.instance.Info(string.Format("Player {0} 捡起鸡 {1}", player.playerId, 3003));
                        }
                    }
                    else if (gameMap.gameMap[cellX, cellZ] == 3002 && player.isHaveChicken == true)
                    {
                        PlayerFinalWin(player);
                    }
                }

                player.locationXB = player.locationX;
                player.locationZB = player.locationZ;
                player.locationX += model.x;
                player.locationZ += model.z;
                player.x          = cellX;
                player.z          = cellZ;
            }
        }