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); }
//消息分发 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; } }
//客户端移动 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; } }