// ---------------------------------------------------------------- // // 패킷 수신 함수]. // 동기 대기 패킷 수신. 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); }