Пример #1
0
    // ================================================================ //
    //
    //  하급 몬스터 관계 조작 명령 패킷 수신.
    //

    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);
            }
        }
    }
Пример #2
0
    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);
    }
Пример #3
0
	// ================================================================ //
	//
	//  하급 몬스터 관계 조작 명령 패킷 수신.
	//

	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);
			
			}
		}

	}