//WQ add. for HideSeek //插入大厅 public bool InsertGameLobby(tagGameLobby sGameLobby) { ////变量定义 //var buf = StructConverterByteArray.StructToBytes(sGameLobby); //tagGameLobby sGameLobbyItem = (tagGameLobby)StructConverterByteArray.BytesToStruct(buf, typeof(tagGameLobby)); //设置索引 m_GameLobbyItemMap[sGameLobby.wLobbyID] = sGameLobby; return(true); }
//WQ add. for HideSeek //大厅列表 bool onSocketListLobby(byte[] data, int size) { ////更新数据 tagGameLobby tempStruct = new tagGameLobby(); int itemSize = Marshal.SizeOf(tempStruct); if (size % itemSize != 0) { return(false); } byte[] pNetInfo = new byte[itemSize]; int iItemCount = size / itemSize; for (int i = 0; i < iItemCount; i++) { Buffer.BlockCopy(data, i * itemSize, pNetInfo, 0, itemSize); tagGameLobby sGameLobby = (tagGameLobby)StructConverterByteArray.BytesToStruct(pNetInfo, typeof(tagGameLobby)); CServerListData.shared().InsertGameLobby(sGameLobby); } //Create CGPLobbyMission Loom.QueueOnMainThread(() => { if (CServerListData.shared().GetGameLobbyCount() > 0) { tagGameLobby gameLobby = CServerListData.shared().getARandGameLobby(); if (gameLobby.wLobbyPort != 0) { CGPLobbyMission kGPLobbyMission = CGPLobbyMission.CreateInstance(gameLobby.szServerAddr, gameLobby.wLobbyPort); if (kGPLobbyMission != null && !kGPLobbyMission.isAlive()) { kGPLobbyMission.SendChatData("StartChatConnect!");//只是为了连接上 } } else { Debug.LogError("onSocketListLobby: incorrect wLobbyPort=0"); } } }); return(true); }
public tagGameLobby getARandGameLobby() { tagGameLobby sMinPlayerCoutLobby = new tagGameLobby(); //CServerListData pListData = GameNet.CServerListData.shared(); foreach (var cGameLobbyItem in m_GameLobbyItemMap) { sMinPlayerCoutLobby = cGameLobbyItem.Value; int randV = UnityEngine.Random.Range(1, 100); //float rand01 = (float)MersenneTwister.MT19937.Real1(); if (randV > 50) { break; } } return(sMinPlayerCoutLobby); }