private static void MessageReceived(object sender, MessageReceivedEventArgs e) { Packet packet = new Packet(e.Data); Client client_ = FindClientByIpPort(e.IpPort); int type = packet.ReadInt(); if (type == (int)ClientPackets.ping) { ServerHandle.Ping(client_.id, packet); } else { ThreadManager.ExecuteOnMainThread(() => { byte[] packetData = e.Data; Packet _packet = new Packet(packetData); int _packetId = _packet.ReadInt(); Client client = FindClientByIpPort(e.IpPort); NetworkManager.AddPacket(client.id, _packetId, _packet); }); } }
void ProcessBuffer(Client client) { int end = buffer[client.id].Count; foreach (PacketData packet in buffer[client.id]) { try { switch (packet.type) { /*case (int)ClientPackets.welcomeReceived: * ServerHandle.WelcomeReceived(client.id, packet.packet); * break;*/ case (int)ClientPackets.login: ServerHandle.Login(client.id, packet.packet); break; case (int)ClientPackets.playerMovement: ServerHandle.PlayerMovement(client.id, packet.packet); break; case (int)ClientPackets.joystick: ServerHandle.Joystick(client.id, packet.packet); break; case (int)ClientPackets.position: ServerHandle.Position(client.id, packet.packet); break; case (int)ClientPackets.test: ServerHandle.test(client.id, packet.packet); break; case (int)ClientPackets.getInventory: ServerHandle.GetInventory(client.id, packet.packet); break; case (int)ClientPackets.dropItem: ServerHandle.DropItem(client.id, packet.packet); break; case (int)ClientPackets.dragAndDrop: ServerHandle.DragAndDrop(client.id, packet.packet); break; case (int)ClientPackets.searchChest: ServerHandle.SearchChest(client.id, packet.packet); break; case (int)ClientPackets.getShipEquipment: ServerHandle.GetShipEquipment(client.id, packet.packet); break; case (int)ClientPackets.replaceShipEquipment: ServerHandle.ReplaceShipEquipment(client.id, packet.packet); break; case (int)ClientPackets.unequipItem: ServerHandle.UnequipItem(client.id, packet.packet); break; case (int)ClientPackets.removeItemFromInventory: ServerHandle.RemoveItemFromInventory(client.id, packet.packet); break; case (int)ClientPackets.getPlayerEquipment: ServerHandle.GetPlayerEquipment(client.id, packet.packet); break; case (int)ClientPackets.replacePlayerEquipment: ServerHandle.ReplacePlayerEquipment(client.id, packet.packet); break; /*case (int)ClientPackets.onGameStart: * ServerHandle.OnGameStart(client.id, packet.packet); * break;*/ case (int)ClientPackets.shoot: ServerHandle.Shoot(client.id, packet.packet); break; case (int)ClientPackets.cannonRotate: ServerHandle.CannonRotate(client.id, packet.packet); break; case (int)ClientPackets.collectLoot: ServerHandle.CollectLoot(client.id, packet.packet); break; case (int)ClientPackets.discardLoot: ServerHandle.DiscardLoot(client.id, packet.packet); break; case (int)ClientPackets.chatMessage: ServerHandle.ChatMessage(client.id, packet.packet); break; case (int)ClientPackets.createGroup: ServerHandle.CreateGroup(client.id, packet.packet); break; case (int)ClientPackets.getGroupList: ServerHandle.GetGroupList(client.id, packet.packet); break; case (int)ClientPackets.applyToGroup: ServerHandle.ApplyToGroup(client.id, packet.packet); break; case (int)ClientPackets.acceptGroupApplicant: ServerHandle.AcceptGroupApplicant(client.id, packet.packet); break; case (int)ClientPackets.declineGroupApplicant: ServerHandle.DeclineGroupApplicant(client.id, packet.packet); break; case (int)ClientPackets.kickGroupMember: ServerHandle.KickGroupMember(client.id, packet.packet); break; case (int)ClientPackets.leaveGroup: ServerHandle.LeaveGroup(client.id, packet.packet); break; case (int)ClientPackets.getPlayerList: ServerHandle.GetPlayerList(client.id, packet.packet); break; case (int)ClientPackets.invitePlayer: ServerHandle.InvitePlayer(client.id, packet.packet); break; case (int)ClientPackets.acceptGroupInvitation: ServerHandle.AcceptGroupInvitation(client.id, packet.packet); break; case (int)ClientPackets.declineGroupInvitation: ServerHandle.DeclineGroupInvitation(client.id, packet.packet); break; case (int)ClientPackets.leaveEnterShip: ServerHandle.LeaveEnterShip(client.id, packet.packet); break; case (int)ClientPackets.playerInputs: ServerHandle.PlayerInputs(client.id, packet.packet); break; case (int)ClientPackets.animationInputs: ServerHandle.AnimationInputs(client.id, packet.packet); break; case (int)ClientPackets.mouseX: ServerHandle.MouseX(client.id, packet.packet); break; case (int)ClientPackets.gatherResource: ServerHandle.GatherResource(client.id, packet.packet); break; case (int)ClientPackets.playerSkills: ServerSend.PlayerSkills(client.id); break; case (int)ClientPackets.craftSelected: ServerHandle.CraftSelected(client.id, packet.packet); break; case (int)ClientPackets.cancelCrafting: ServerHandle.CancelCrafting(client.id, packet.packet); break; case (int)ClientPackets.requestCrafting: ServerHandle.RequestCrafting(client.id, packet.packet); break; case (int)ClientPackets.traderInventoryRequest: ServerHandle.TraderInventoryRequest(client.id, packet.packet); break; case (int)ClientPackets.buyItem: ServerHandle.BuyItem(client.id, packet.packet); break; case (int)ClientPackets.sellItem: ServerHandle.SellItem(client.id, packet.packet); break; case (int)ClientPackets.tradeBrokerRequest: ServerHandle.TradeBrokerRequest(client.id, packet.packet); break; case (int)ClientPackets.readTradeBrokerItems: ServerHandle.ReadTradeBrokerItems(client.id, packet.packet); break; case (int)ClientPackets.registerItemOnBroker: ServerHandle.RegisterItemOnBroker(client.id, packet.packet); break; case (int)ClientPackets.removeItemFromBroker: ServerHandle.RemoveItemFromBroker(client.id, packet.packet); break; case (int)ClientPackets.buyItemFromBroker: ServerHandle.BuyItemFromBroker(client.id, packet.packet); break; case (int)ClientPackets.collectFromBroker: ServerHandle.CollectFromBroker(client.id, packet.packet); break; case (int)ClientPackets.tradeRequest: ServerHandle.TradeRequest(client.id, packet.packet); break; case (int)ClientPackets.acceptTrade: ServerHandle.AcceptTrade(client.id, packet.packet); break; case (int)ClientPackets.declineTrade: ServerHandle.DeclineTrade(client.id, packet.packet); break; case (int)ClientPackets.cancelPlayerTrade: ServerHandle.CancelPlayerTrade(client.id, packet.packet); break; case (int)ClientPackets.playerTradeAddItem: ServerHandle.PlayerTradeAddItem(client.id, packet.packet); break; case (int)ClientPackets.playerTradeRemoveItem: ServerHandle.PlayerTradeRemoveItem(client.id, packet.packet); break; case (int)ClientPackets.playerTradeGoldChanged: ServerHandle.PlayerTradeGoldChanged(client.id, packet.packet); break; case (int)ClientPackets.playerTradeAccept: ServerHandle.PlayerTradeAccept(client.id, packet.packet); break; case (int)ClientPackets.isOnShip: ServerHandle.IsOnShip(client.id, packet.packet); break; case (int)ClientPackets.switchTarget: ServerHandle.SwitchTarget(client.id, packet.packet); break; case (int)ClientPackets.playerCharacterPosition: ServerHandle.PlayerCharacterPosition(client.id, packet.packet); break; case (int)ClientPackets.jump: ServerHandle.Jump(client.id, packet.packet); break; case (int)ClientPackets.startCrafting: ServerSend.StartCrafting(client.id); break; case (int)ClientPackets.stopCrafting: ServerSend.StopCrafting(client.id); break; case (int)ClientPackets.shipPosition: ServerHandle.ShipPosition(client.id, packet.packet); break; case (int)ClientPackets.addBuff: ServerHandle.AddBuff(client.id, packet.packet); break; case (int)ClientPackets.animationTranslate: ServerHandle.AnimationTranslate(client.id, packet.packet); break; case (int)ClientPackets.ping: ServerHandle.Ping(client.id, packet.packet); break; case (int)ClientPackets.loadLoot: ServerHandle.LoadLoot(client.id, packet.packet); break; case (int)ClientPackets.switchWeaponHands: ServerHandle.SwitchWeaponHands(client.id, packet.packet); break; } } catch (Exception ex) { Debug.LogError("NetworkManager.cs ProcessBuffer(): " + ex.Message + " " + ex.StackTrace); } } buffer[client.id].RemoveRange(0, end); }