public override void OnTcpReceived(int dataType, byte[] data) { if (dataType == Walker.DataType.ResponseObjectDestroy) { string hash = null; Buffer.Read(data, br => hash = br.ReadString()); RemoveGameObject(SyncWorldObjects.Find(go => go.Hash == hash)); } else if (dataType == Walker.DataType.ResponseItemUsed) { var obj = Util.DeserializeJsonBinary <NwWalkerGameObject>(data); ItemUse(obj, worldData.Players.Find(p => p.UserID == obj.UserID), true); } else if (dataType == Walker.DataType.ResponseObjectPut) { var obj = Util.DeserializeJsonBinary <NwWalkerGameObject>(data); PutGameObject(obj, true); } else if (dataType == Walker.DataType.ResponsePlayerJoin) { var player = Util.DeserializeJsonBinary <WalkerPlayer>(data); if (worldData.Players.Exists(p => p.SessionID == player.SessionID)) { return; } JoinPlayer(player); } else if (dataType == Walker.DataType.ResponseWorldStatus) { var status = Util.DeserializeJsonBinary <NwWorldStatus>(data); ResolveReceiveWorldStatus(status); } else if (dataType == Walker.DataType.ResponseLeaveWorld) { server.Disconnected -= Server_Disconnected; OnUnload(); } }