//把这个区域的data载入到内存中(从文件) private static bool LoadRegionData(Index regionIndex) { string indexString = regionIndex.ToString(); //如果没有载入 if (LoadedRegions.ContainsKey(indexString) == false) { // 如果文件存在,就载入 string regionPath = GetRegionPath(regionIndex); if (File.Exists(regionPath)) { StreamReader reader = new StreamReader(regionPath); string[] regionData = reader.ReadToEnd().Split((char)ushort.MaxValue); reader.Close(); LoadedRegions[indexString] = regionData; return(true); } else { //文件不存在 return(false); } } //数据已经载入 return(true); }
private static string[] GetRegionData(Index regionIndex) { if (LoadRegionData(regionIndex) == true) { return(LoadedRegions[regionIndex.ToString()]); } else { return(null); } }
public static Chunk GetChunkComponent(Index index) { string indexString = index.ToString(); if (ChunkManager.Chunks.ContainsKey(indexString)) { return(ChunkManager.Chunks[indexString]); } else { return(null); } }
//返回chunkData,没找到就返回空串 private string GetChunkData(Index index) { //尝试从temp中寻找返回 string indexString = index.ToString(); if (TempChunkData.ContainsKey(indexString)) { return(TempChunkData[indexString]); } int regionIndex = GetChunkRegionIndex(index); string[] regionData = GetRegionData(GetParentRegion(index)); if (regionData == null) { return(""); } return(regionData[regionIndex]); }
//获取区域块对应的文件名 private static string GetRegionPath(Index regionIndex) { return(Engine.WorldPath + (regionIndex.ToString() + ",.region")); }
//将chunk的data写入到temp private void WriteChunkData(Index index, string data) { TempChunkData[index.ToString()] = data; }