private void ComputeMultiDat(string ShortName, ushort [,] ClientMap) { FileStream MapFile = File.Create(ShortName + ".dat"); BinaryWriter Bw = new BinaryWriter(MapFile); MapIndexRecord [] IdIndex = new MapIndexRecord[24 * 24 * 2]; //reserve size for the IdIndex for (int i = 0; i < 24 * 24 * 2; i++) { Bw.Write((UInt64)0); } int ZoneCount = 3072 / 128; int ActualIndex = 0; uint Position = 24 * 24 * 2 * 8; for (int j = 0; j < ZoneCount; j++) { for (int i = 0; i < ZoneCount; i++) { //compute even zone IdIndex[ActualIndex].Index = Position; IdIndex[ActualIndex].IndexSize = MakeZone(i * 128, j * 128, ClientMap, Bw); Position += IdIndex[ActualIndex].IndexSize * 2; ActualIndex++; //compute Odd zone IdIndex[ActualIndex].Index = Position; IdIndex[ActualIndex].IndexSize = MakeZone(i * 128, j * 128, ClientMap, Bw); Position += IdIndex[ActualIndex].IndexSize * 2; ActualIndex++; } } Bw.BaseStream.Seek(0, SeekOrigin.Begin); for (int i = 0; i < IdIndex.Length; i++) { Bw.Write(IdIndex[i].Index); Bw.Write(IdIndex[i].IndexSize); } }
private void ComputeMultiDat(string ShortName,ushort [,] ClientMap) { FileStream MapFile = File.Create(ShortName+".dat"); BinaryWriter Bw = new BinaryWriter(MapFile); MapIndexRecord [] IdIndex=new MapIndexRecord[24*24*2]; //reserve size for the IdIndex for (int i = 0; i < 24 * 24 * 2; i++) Bw.Write((UInt64)0); int ZoneCount = 3072 / 128; int ActualIndex = 0; uint Position = 24 * 24 * 2 * 8; for (int j=0;j<ZoneCount;j++) for (int i = 0; i < ZoneCount; i++) { //compute even zone IdIndex[ActualIndex].Index = Position; IdIndex[ActualIndex].IndexSize = MakeZone(i * 128, j * 128, ClientMap, Bw); Position += IdIndex[ActualIndex].IndexSize * 2; ActualIndex++; //compute Odd zone IdIndex[ActualIndex].Index = Position; IdIndex[ActualIndex].IndexSize = MakeZone(i * 128, j * 128, ClientMap, Bw); Position += IdIndex[ActualIndex].IndexSize * 2; ActualIndex++; } Bw.BaseStream.Seek(0, SeekOrigin.Begin); for (int i = 0; i < IdIndex.Length; i++) { Bw.Write(IdIndex[i].Index); Bw.Write(IdIndex[i].IndexSize); } }