// ================================================================ // // // 하급 몬스터 관계 조작 명령 패킷 수신. // public void OnReceiveMonsterDataPacket(int node, PacketId id, byte[] data) { if (m_isHost) { // 호스트의 몬스터는 발생 완료. return; } MonsterPacket packet = new MonsterPacket(data); MonsterData monster = packet.GetPacket(); //Debug.Log("[CLIENT] Receive monster data packet:" + monster.lairId + " - " + monster.monsterId); var lairs = enemies.FindAll(x => (x.behavior as chrBehaviorEnemy_Lair) != null); foreach (var lair in lairs) { if (lair.name == monster.lairId) { QuerySpawn query = new QuerySpawn(lair.name, monster.monsterId); query.set_done(true); query.set_success(true); QueryManager.get().registerQuery(query); } } }
void Update() { RoomController room_control = PartyControl.get().getCurrentRoom(); do { if (room_control == null) { break; } Room level_room = this.rooms[room_control.getIndex().x, room_control.getIndex().z]; if (GameRoot.get().isHost()) { // 로컬은 직접 만든다. //if(Input.GetMouseButtonDown(1)) { if (this.spawn_timer > 5.0f) { chrBehaviorEnemy_Lair lair = null; for (int i = 0; i < level_room.lairs.Count; i++) { level_room.spawner = (level_room.spawner + 1) % level_room.lairs.Count; lair = level_room.lairs[level_room.spawner]; if (lair != null) { break; } } if (lair != null) { dbwin.console().print("LairName:" + lair.name); lair.spawnEnemy(); } this.spawn_timer = 0.0f; } this.spawn_timer += Time.deltaTime; } else { // 리모트는 호스트의 지시로 만든다. foreach (var lair in level_room.lairs) { if (lair == null) { continue; } // 조정이 끝난 쿼리를 찾는다. List <QueryBase> queries = QueryManager.get().findDoneQuery(lair.name); List <QueryBase> spawn_queries = queries.FindAll(x => (x as QuerySpawn) != null); foreach (var query in spawn_queries) { QuerySpawn query_spawn = query as QuerySpawn; // 용무를 마쳤으므로 삭제한다. query_spawn.set_expired(true); if (!query_spawn.isSuccess()) { continue; } dbwin.console().print("LairName:" + lair.name); dbwin.console().print("EnemyName:" + query_spawn.monster_id); //Debug.Log("LairName:" + lair.name); //Debug.Log("EnemyName:" + query_spawn.monster_id); lair.spawnEnemyFromPedigree(query_spawn.monster_id); } } } } while(false); }
// ================================================================ // // // 하급 몬스터 관계 조작 명령 패킷 수신. // public void OnReceiveMonsterDataPacket(int node, PacketId id, byte[] data) { if (m_isHost) { // 호스트의 몬스터는 발생 완료. return; } MonsterPacket packet = new MonsterPacket(data); MonsterData monster = packet.GetPacket(); //Debug.Log("[CLIENT] Receive monster data packet:" + monster.lairId + " - " + monster.monsterId); var lairs = enemies.FindAll(x => (x.behavior as chrBehaviorEnemy_Lair) != null); foreach(var lair in lairs) { if (lair.name == monster.lairId) { QuerySpawn query = new QuerySpawn(lair.name, monster.monsterId); query.set_done(true); query.set_success(true); QueryManager.get().registerQuery(query); } } }