public bool InitMap(PlanesInstance planes, ushort index, ulong mapInstanceId, TableWrap.MapInfoData info, PlayerInstance creater) { mPlanes = planes; mOwner = creater; mIndexInServer = index; mMapInfo = info; // mMapInfo = MapInstanceManager.GetMapInitBySourceId(mapSourceId); // if (mMapInfo == null) // return false; //mUUID = mapInstanceId; mMapInstanceId = mapInstanceId; mMapSourceId = (ushort)info.MapData.id;// mapSourceId; InitPlayerPool((ushort)mMapInfo.MapData.maxPlayerCount); mNavigator = NavigatorMgr.Instance.InitNavigator(mMapSourceId, GetNavFilePath(mMapInfo.MapData.name)); // 从地图数据中创建实例数据 m_cellXCount = (int)(mMapInfo.MapData.sizeX / mServerMapCellWidth) + ((mMapInfo.MapData.sizeX % mServerMapCellWidth) > 0 ? 1 : 0); m_cellZCount = (int)(mMapInfo.MapData.sizeZ / mServerMapCellHeight) + ((mMapInfo.MapData.sizeZ % mServerMapCellHeight) > 0 ? 1 : 0); m_mapCells = new MapCellInstance[m_cellZCount, m_cellXCount]; for (int i = 0; i < m_cellZCount; i++) { for (int j = 0; j < m_cellXCount; j++) { MapCellInstance mapCell = new MapCellInstance(j, i); m_mapCells[i, j] = mapCell; } } //LoadMapData(); OnInit(); return(true); }
public static TableWrap.MapInfoData GetMapInitBySourceId(int mapSourceId) { lock (mMapInitDictionary) { TableWrap.MapInfoData outInit; if (mMapInitDictionary.TryGetValue(mapSourceId, out outInit)) { return(outInit); } outInit = new TableWrap.MapInfoData(); outInit.Init(mapSourceId); mMapInitDictionary[mapSourceId] = outInit; return(outInit); } }