public bool Serialize(RequestDungeonData data) { bool ret = true; ret &= Serialize(data.DungeonId); ret &= Serialize(data.DungeonLevel); return(ret); }
//던전 데이터 요청 -> Server public void RequestMonsterStatusData(int dungeonId, int dungeonLevel) { Debug.Log("던전 데이터 요청"); RequestDungeonData requestDungeonData = new RequestDungeonData((byte)dungeonId, (byte)dungeonLevel); RequestDungeonDataPacket requestDungeonDataPacket = new RequestDungeonDataPacket(requestDungeonData); requestDungeonDataPacket.SetPacketId((int)ClientPacketId.RequestMonsterStatusData); DataPacket packet = new DataPacket(CreatePacket(requestDungeonDataPacket), null); sendMsgs.Enqueue(packet); }
public bool Deserialize(ref RequestDungeonData element) { if (GetDataSize() == 0) { // 데이터가 설정되지 않았다. return(false); } bool ret = true; byte dungeonId = 0; byte dungeonLevel = 0; ret &= Deserialize(ref dungeonId); ret &= Deserialize(ref dungeonLevel); element = new RequestDungeonData(dungeonId, dungeonLevel); return(ret); }
//몬스터 스텟 데이터 요청 public void RequestMonsterStatusData(DataPacket packet) { Console.WriteLine(packet.client.RemoteEndPoint.ToString() + "몬스터 스텟 데이터 요청"); RequestDungeonDataPacket requestDungeonDataPacket = new RequestDungeonDataPacket(packet.msg); RequestDungeonData requestDungeonData = requestDungeonDataPacket.GetData(); DungeonLevelData dungeonLevelData = dungeonDatabase.GetDungeonBaseData(requestDungeonData.DungeonId).GetLevelData(requestDungeonData.DungeonLevel); int monsterNum = dungeonLevelData.GetMonsterNum(); MonsterBaseData[] monsterBaseData = new MonsterBaseData[monsterNum]; int dataIndex = 0; for (int stageIndex = 0; stageIndex < dungeonLevelData.Stages.Count; stageIndex++) { for (int monsterIndex = 0; monsterIndex < dungeonLevelData.Stages[stageIndex].MonsterSpawnData.Count; monsterIndex++) { int monsterId = dungeonLevelData.Stages[stageIndex].MonsterSpawnData[monsterIndex].MonsterId; int monsterLevel = dungeonLevelData.Stages[stageIndex].MonsterSpawnData[monsterIndex].MonsterLevel; monsterBaseData[dataIndex] = new MonsterBaseData(monsterDatabase.GetBaseData(monsterId)); MonsterLevelData monsterLevelData = new MonsterLevelData(monsterDatabase.GetBaseData(monsterId).GetLevelData(monsterLevel)); monsterBaseData[dataIndex].MonsterLevelData.Clear(); monsterBaseData[dataIndex].AddLevelData(monsterLevelData); dataIndex++; } } MonsterStatusData monsterStatusData = new MonsterStatusData((byte)monsterNum, monsterBaseData); MonsterStatusPacket monsterStatusPacket = new MonsterStatusPacket(monsterStatusData); monsterStatusPacket.SetPacketId((int)ServerPacketId.MonsterStatusData); byte[] msg = CreatePacket(monsterStatusPacket); packet = new DataPacket(msg, packet.client); lock (sendLock) { sendMsgs.Enqueue(packet); } }
//몬스터 소환 리스트 요청 public void RequestMonsterSpawnList(DataPacket packet) { Console.WriteLine(packet.client.RemoteEndPoint.ToString() + "몬스터 소환 리스트 요청"); RequestDungeonDataPacket requestDungeonDataPacket = new RequestDungeonDataPacket(packet.msg); RequestDungeonData requestDungeonData = requestDungeonDataPacket.GetData(); DungeonLevelData dungeonLevelData = dungeonDatabase.GetDungeonBaseData(requestDungeonData.DungeonId).GetLevelData(requestDungeonData.DungeonLevel); MonsterSpawnListPacket monsterSpawnListPacket = new MonsterSpawnListPacket(dungeonLevelData); monsterSpawnListPacket.SetPacketId((int)ServerPacketId.MonsterSpawnList); byte[] msg = CreatePacket(monsterSpawnListPacket); packet = new DataPacket(msg, packet.client); lock (sendLock) { sendMsgs.Enqueue(packet); } }