// ---------------------------------------------------------------- //
    // 패킷 수신 함수].

    // 동기 대기 패킷 수신.
    public void OnReceiveSyncPacket(int node, PacketId id, byte[] data)
    {
        Debug.Log("[CLIENT]OnReceiveSyncPacket");

        GameSyncPacket packet = new GameSyncPacket(data);
        GameSyncInfo   sync   = packet.GetPacket();

        GlobalParam.get().seed = sync.seed;

        // 초기 장비를 보존한다.
        for (int i = 0; i < sync.items.Length; ++i)
        {
            CharEquipment equip = sync.items[i];

            GlobalParam.get().shot_type[equip.globalId] = (SHOT_TYPE)equip.shotType;
            this.select_done_players[equip.globalId] = true;

            Debug.Log("[CLIENT] AccountID:" + equip.globalId + " ShotType:" + equip.shotType);
        }

        // 응답이 있는 쿼리를 검색.
        string            account_id = this.player.control.getAccountID();
        QuerySelectFinish query      = QueryManager.get().findQuery <QuerySelectFinish>(x => x.account_id == account_id);

        if (query != null)
        {
            Debug.Log("[CLIENT]QuerySelectDone done");
            query.set_done(true);
            query.set_success(true);
        }

        Debug.Log("[CLIENT]Recv seed:" + sync.seed);
    }
    // ================================================================ //

    public void OnReceiveGameSyncPacket(int node, PacketId id, byte[] data)
    {
        GameSyncPacket packet = new GameSyncPacket(data);
        GameSyncInfo   info   = packet.GetPacket();

        Debug.Log("[SERVER] Receive Init packet");

        // 게임서버에서 난수 동기화 작업
        TimeSpan ts      = new TimeSpan(DateTime.Now.Ticks);
        double   seconds = ts.TotalSeconds;

        info.seed = (int)((long)seconds - (long)(seconds / 1000.0) * 1000);
        Debug.Log("Seed: " + info.seed);

        // 세션 관리 정보와 플레이어 글로벌 ID를 연결
        info.members = new CharacterID[NetConfig.PLAYER_MAX];
        for (int i = 0; i < NetConfig.PLAYER_MAX; i++)
        {
            info.members[i].globalId = i;
            if (!m_nodes.ContainsKey(node))
            {
                m_nodes.Add(node, info.members[i].globalId);
            }
        }
    }
    // ================================================================ //
    public void OnReceiveGameSyncPacket(int node, PacketId id, byte[] data)
    {
        GameSyncPacket packet = new GameSyncPacket(data);
        GameSyncInfo info = packet.GetPacket();

        Debug.Log("[SERVER] Receive Init packet");

        // 게임서버에서 난수 동기화 작업
        TimeSpan ts = new TimeSpan(DateTime.Now.Ticks);
        double seconds = ts.TotalSeconds;
        info.seed = (int)((long)seconds - (long)(seconds / 1000.0) * 1000);
        Debug.Log("Seed: " + info.seed);

        // 세션 관리 정보와 플레이어 글로벌 ID를 연결
        info.members = new CharacterID[NetConfig.PLAYER_MAX];
        for(int i = 0; i < NetConfig.PLAYER_MAX; i++)
        {
            info.members[i].globalId = i;
            if (!m_nodes.ContainsKey(node))
            {
                m_nodes.Add(node, info.members[i].globalId);
            }
        }
    }
	// ---------------------------------------------------------------- //
	// 패킷 수신 함수].

	// 동기 대기 패킷 수신.
	public void OnReceiveSyncPacket(int node, PacketId id, byte[] data)
	{
		Debug.Log("[CLIENT]OnReceiveSyncPacket");
		
		GameSyncPacket packet = new GameSyncPacket(data);
		GameSyncInfo sync = packet.GetPacket();

		GlobalParam.get().seed = sync.seed;

		// 초기 장비를 보존한다.
		for (int i = 0; i < sync.items.Length; ++i) {

			CharEquipment equip = sync.items[i];

			GlobalParam.get().shot_type[equip.globalId] = (SHOT_TYPE)equip.shotType;
			this.select_done_players[equip.globalId] = true;

			Debug.Log("[CLIENT] AccountID:" + equip.globalId + " ShotType:" + equip.shotType);
		}

		// 응답이 있는 쿼리를 검색.
		string account_id = this.player.control.getAccountID();
		QuerySelectFinish	query = QueryManager.get().findQuery<QuerySelectFinish>(x => x.account_id == account_id);

		if (query != null) {
			Debug.Log("[CLIENT]QuerySelectDone done");
			query.set_done(true);
			query.set_success(true);
		}
		
		Debug.Log("[CLIENT]Recv seed:" + sync.seed);
	}