//游戏配置 //游戏配置 public CParameterGame GetParameterGame(tagGameKind pGameKind) { //寻找现存 if (m_ParameterGameMap.ContainsKey(pGameKind.wKindID)) { return(m_ParameterGameMap[pGameKind.wKindID]); } //创建对象 //创建对象 CParameterGame pParameterGame = new CParameterGame(); //配置对象 // pParameterGame->InitParameter(pGameKind->szProcessName); //加载参数 pParameterGame.LoadParameter(); //设置数组 m_ParameterGameMap[pGameKind.wKindID] = pParameterGame; return(pParameterGame); }
//插入类型 public bool InsertGameKind(tagGameKind pGameKind) { //效验参数 //ASSERT(pGameKind!=0); //if (pGameKind == null) return false; //变量定义 CGameKindItem pGameKindItem = null; bool bInsert = false; if (m_GameKindItemMap.ContainsKey(pGameKind.wKindID)) { pGameKindItem = m_GameKindItemMap[pGameKind.wKindID]; } else { pGameKindItem = new CGameKindItem(); bInsert = true; } if (pGameKindItem == null) { return(false); } //设置数据 var buf = StructConverterByteArray.StructToBytes(pGameKind); pGameKindItem.m_GameKind = (tagGameKind)StructConverterByteArray.BytesToStruct(buf, typeof(tagGameKind)); //memcpy(&pGameKindItem.m_GameKind, pGameKind, sizeof(tagGameKind)); //插入处理 if (bInsert == true) { //设置索引 m_GameKindItemMap[pGameKind.wKindID] = pGameKindItem; //插入子项 if (m_pIServerListDataSink != null) { m_pIServerListDataSink.OnGameItemInsert(pGameKindItem); } } else { //更新子项 if (m_pIServerListDataSink != null) { m_pIServerListDataSink.OnGameItemUpdate(pGameKindItem); } } return(true); }
//类型信息 bool onSocketListKind(byte[] data, int size) { ////更新数据 tagGameKind tempStruct = new tagGameKind(); int itemSize = Marshal.SizeOf(tempStruct); if (size % itemSize != 0) { return(false); } byte[] pNetInfo = new byte[itemSize]; int iItemCount = size / itemSize; CServerListData pServerListData = CServerListData.shared(); for (int i = 0; i < iItemCount; i++) { Buffer.BlockCopy(data, i * itemSize, pNetInfo, 0, itemSize); tagGameKind pGameKind = (tagGameKind)StructConverterByteArray.BytesToStruct(pNetInfo, typeof(tagGameKind)); pServerListData.InsertGameKind(pGameKind); } return(true); }