static void BuildFlag() { bool[,] flags = new bool[36, 14]; for (int x = 1, i = 0; x < 72; x += 2, i++) { for (int y = 5, j = 0; y < 33; y += 2, j++) { string file = @"E:\Documents\ic10gd\Source\Code2015\bin\x86\Debug\terrain.lpk\tile_" + x.ToString("D2") + "_" + y.ToString("D2") + "_0.tdmp"; flags[i, j] = File.Exists(file); } } ContentBinaryWriter bw = new ContentBinaryWriter(File.Open(@"E:\Desktop\flags.dat", FileMode.OpenOrCreate)); for (int i = 0; i < 36; i++) { for (int j = 0; j < 14; j++) { bw.Write(flags[i, j]); } } bw.Close(); }
static void BuildLandAreaHeight() { FileLocation fl = new FileLocation(@"E:\Documents\ic10gd\Source\Code2015\bin\x86\Debug\terrain\terrain_l0.tdmp"); ContentBinaryReader br = new ContentBinaryReader(fl); const int DW = 36 * 513; const int DH = 14 * 513; ushort[,] data = new ushort[DH, DW]; for (int i = 0; i < DH; i++) { for (int j = 0; j < DW; j++) { ushort v = br.ReadUInt16(); data[i, j] = (v > (ushort)(1600 * 7)) ? v : (ushort)0; } } ContentBinaryWriter bw = new ContentBinaryWriter(File.Open(@"E:\Desktop\land513.raw", FileMode.OpenOrCreate)); for (int i = 0; i < DH; i++) { for (int j = 0; j < DW; j++) { bw.Write(data[i, j]); } } bw.Close(); }
public override void Convert(ResourceLocation source, ResourceLocation dest) { ContentBinaryReader br = new ContentBinaryReader(source); BinaryDataReader data = br.ReadBinaryData(); float xllcorner = data.GetDataSingle("xllcorner"); float yllcorner = data.GetDataSingle("yllcorner"); int width = data.GetDataInt32("width"); int height = data.GetDataInt32("height"); float[] demData = new float[height * width]; int bits = data.GetDataInt32("bits", 32); ContentBinaryReader br2 = data.GetData("data"); for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { demData[i * width + j] = br2.ReadSingle(); } } br2.Close(); data.Close(); Half[] demData16 = Half.ConvertToHalf(demData); // ========================================================= BinaryDataWriter result = new BinaryDataWriter(); result.AddEntry("xllcorner", xllcorner); result.AddEntry("yllcorner", yllcorner); result.AddEntry("width", width); result.AddEntry("height", height); result.AddEntry("bits", 16); Stream dataStream = result.AddEntryStream("data"); ContentBinaryWriter bw = new ContentBinaryWriter(dataStream); for (int i = 0; i < demData.Length; i++) { bw.Write(demData16[i].InternalValue); } bw.Close(); bw = new ContentBinaryWriter(dest); bw.Write(result); bw.Close(); }
public unsafe override void Convert(ResourceLocation source, ResourceLocation dest) { const int origWidth = 64; const int origHeight = 64; const int Id = 'S' << 24 | 'F' << 16 | 'N' << 8 | 'T'; Font font = new Font(currentFont, FontSize); ContentBinaryWriter bw = new ContentBinaryWriter(dest); bw.Write(Id); bw.Write((int)0); bw.Write((int)byte.MaxValue); bw.Write((int)origWidth); bw.Write((int)origHeight); bw.Write(FontSize); for (char c = '\0'; c < 256; c++) { Bitmap bmp = new Bitmap(origWidth, origHeight); System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmp); g.Clear(Color.Black); Size size = TextRenderer.MeasureText(c.ToString(), font); TextRenderer.DrawText(g, c.ToString(), font, new Rectangle(0, 0, origWidth, origHeight) , Color.White, Color.Black, TextFormatFlags.VerticalCenter | TextFormatFlags.HorizontalCenter); g.Dispose(); BitmapData data = bmp.LockBits(new Rectangle(0, 0, origWidth, origHeight), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb); byte *src = (byte *)data.Scan0; bw.Write((ushort)c); bw.Write(size.Width); bw.Write(size.Height); for (int i = 0; i < origHeight; i++) { for (int j = 0; j < origWidth; j++) { byte red = *src++; byte gr = *src++; byte bl = *src++; src++; float lum = (red * 0.3f + gr * 0.59f + bl * 0.11f); bw.Write((byte)lum); } } bmp.UnlockBits(data); //bmp.Save(@"E:\Desktop\out\" + ((ushort)c).ToString() + ".png", ImageFormat.Png); bmp.Dispose(); } bw.Close(); }
public unsafe override void Convert(ResourceLocation source, ResourceLocation dest) { const int origWidth = 64; const int origHeight = 64; const int Id = 'S' << 24 | 'F' << 16 | 'N' << 8 | 'T'; Font font = new Font(currentFont, FontSize); ContentBinaryWriter bw = new ContentBinaryWriter(dest); bw.Write(Id); bw.Write((int)0); bw.Write((int)byte.MaxValue); bw.Write((int)origWidth); bw.Write((int)origHeight); bw.Write(FontSize); for (char c = '\0'; c < 256; c++) { Bitmap bmp = new Bitmap(origWidth, origHeight); System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmp); g.Clear(Color.Black); Size size = TextRenderer.MeasureText(c.ToString(), font); TextRenderer.DrawText(g, c.ToString(), font, new Rectangle(0, 0, origWidth, origHeight) , Color.White, Color.Black, TextFormatFlags.VerticalCenter | TextFormatFlags.HorizontalCenter); g.Dispose(); BitmapData data = bmp.LockBits(new Rectangle(0, 0, origWidth, origHeight), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb); byte* src = (byte*)data.Scan0; bw.Write((ushort)c); bw.Write(size.Width); bw.Write(size.Height); for (int i = 0; i < origHeight; i++) { for (int j = 0; j < origWidth; j++) { byte red = *src++; byte gr = *src++; byte bl = *src++; src++; float lum = (red * 0.3f + gr * 0.59f + bl * 0.11f); bw.Write((byte)lum); } } bmp.UnlockBits(data); //bmp.Save(@"E:\Desktop\out\" + ((ushort)c).ToString() + ".png", ImageFormat.Png); bmp.Dispose(); } bw.Close(); }
public override void Convert(ResourceLocation source, ResourceLocation dest) { ContentBinaryReader br = new ContentBinaryReader(source); BinaryDataReader data = br.ReadBinaryData(); float xllcorner = data.GetDataSingle("xllcorner"); float yllcorner = data.GetDataSingle("yllcorner"); int width = data.GetDataInt32("width"); int height = data.GetDataInt32("height"); float[] demData = new float[height * width]; int bits = data.GetDataInt32("bits", 32); ContentBinaryReader br2 = data.GetData("data"); for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { demData[i * width + j] = br2.ReadSingle(); } } br2.Close(); data.Close(); // ========================================================= BinaryDataWriter result = new BinaryDataWriter(); result.AddEntry("xllcorner", xllcorner); result.AddEntry("yllcorner", yllcorner); result.AddEntry("width", width); result.AddEntry("height", height); result.AddEntry("bits", 8); Stream dataStream = result.AddEntryStream("data"); ContentBinaryWriter bw = new ContentBinaryWriter(dataStream); for (int i = 0; i < demData.Length; i++) { bw.Write((byte)(demData[i] * 255)); } bw.Close(); bw = new ContentBinaryWriter(dest); bw.Write(result); bw.Close(); }
static void BuildBitMap() { FileLocation fl = new FileLocation(@"E:\Desktop\terrain_l2副本.raw"); ContentBinaryReader br = new ContentBinaryReader(fl); const int DW = 36 * 32; const int DH = 14 * 32; ushort[,] data = new ushort[DH, DW]; for (int i = 0; i < DH; i++) { for (int j = 0; j < DW; j++) { ushort v = br.ReadUInt16(); data[i, j] = Math.Max(v, (ushort)(1640 * 7));// br.ReadUInt16(); } } br.Close(); int[,] dir = new int[DH, DW]; for (int i = 0; i < DH - 1; i++) { for (int j = 0; j < DW - 1; j++) { int dx = data[i + 1, j] - data[i, j]; int dy = data[i, j + 1] - data[i, j]; dir[i, j] = Math.Abs(dx) + Math.Abs(dy); } } for (int i = 0; i < DH - 1; i++) { int j = DW - 1; int dx = data[i + 1, j] - data[i, j]; int dy = data[i, 0] - data[i, j]; dir[i, j] = Math.Abs(dx) + Math.Abs(dy); } ContentBinaryWriter bw = new ContentBinaryWriter(File.Open(@"E:\Desktop\grad.raw", FileMode.OpenOrCreate)); for (int i = 0; i < DH; i++) { for (int j = 0; j < DW; j++) { if (dir[i, j] > ushort.MaxValue) { dir[i, j] = ushort.MaxValue; } bw.Write((ushort)dir[i, j]); } } bw.Close(); }
private void button4_Click(object sender, EventArgs e) { button1.Enabled = false; button2.Enabled = false; button3.Enabled = false; button4.Enabled = false; DevFileLocation fl = new DevFileLocation(textBox1.Text); ContentBinaryWriter bw = new ContentBinaryWriter(fl); bw.Write(LpkArchive.FileId); int count = listView1.Items.Count; bw.Write(count); progressBar1.Value = 0; progressBar1.Maximum = count; int oldPos = (int)bw.BaseStream.Position; ListView.ListViewItemCollection coll = listView1.Items; LpkArchiveEntry[] entries = new LpkArchiveEntry[count]; for (int i = 0; i < count; i++) { entries[i].Name = Path.GetFileName(coll[i].Text); bw.WriteStringUnicode(entries[i].Name); bw.Write(entries[i].CompressedSize); bw.Write(entries[i].Offset); bw.Write(entries[i].Size); bw.Write(entries[i].Flag); } #region 打包文件 for (int i = 0; i < count; i++) { FileStream fs = new FileStream(coll[i].Text, FileMode.Open, FileAccess.Read); BinaryReader br = new BinaryReader(fs); entries[i].Offset = (int)bw.BaseStream.Position; entries[i].Size = (int)br.BaseStream.Length; entries[i].CompressedSize = entries[i].Size; entries[i].Flag = 0; bw.Write(br.ReadBytes(entries[i].Size)); br.Close(); fs.Close(); Application.DoEvents(); progressBar1.Value = i + 1; } CoderPropID[] propIDs = { CoderPropID.DictionarySize, CoderPropID.Algorithm }; object[] properties = { 1048576*8, 2 }; SevenZip.Compression.LZMA.Encoder encoder = new SevenZip.Compression.LZMA.Encoder(); encoder.SetCoderProperties(propIDs, properties); System.IO.MemoryStream propms = new System.IO.MemoryStream(); encoder.WriteCoderProperties(propms); bw.Write((int)propms.Length); propms.Close(); bw.Write(propms.ToArray()); for (int i = 0; i < count; i++) { entries[i].Offset = (int)bw.BaseStream.Position; FileStream fs = new FileStream(coll[i].Text, FileMode.Open, FileAccess.Read); System.IO.MemoryStream ms = new System.IO.MemoryStream((int)fs.Length / 2); encoder.Code(fs, ms, -1, -1, null); entries[i].Size = (int)fs.Length; fs.Close(); ms.Close(); byte[] buffer = ms.ToArray(); bw.Write(buffer); entries[i].CompressedSize = buffer.Length; entries[i].Flag = 0; Application.DoEvents(); progressBar1.Value = i + 1; } #endregion bw.Seek(oldPos, SeekOrigin.Begin); for (int i = 0; i < count; i++) { bw.WriteStringUnicode(entries[i].Name); bw.Write(entries[i].CompressedSize); bw.Write(entries[i].Offset); bw.Write(entries[i].Size); bw.Write(entries[i].Flag); } bw.Close(); button1.Enabled = true; button2.Enabled = true; button3.Enabled = true; button4.Enabled = true; }
static unsafe void Grid() { //const int CellSpan = 3; const string SrcDir = @"E:\Documents\ic10gd\Source\Code2015\bin\x86\Debug\terrain\terrain_l2.tdmp"; ContentBinaryReader br = new ContentBinaryReader(new FileLocation(SrcDir)); const int DW = 33 * 36; const int DH = 33 * 14; byte[] hgtData = new byte[DW * DH]; for (int i = 0; i < DW * DH; i++) { float h = br.ReadUInt16() / (float)ushort.MaxValue; hgtData[i] = (byte)((byte)(h * 8) * 31); } br.Close(); //ushort[] result = new ushort[DW * DH]; //bool[] setFlag = new bool[DW * DH]; //for (int i = 0; i < DH-2; i ++) //{ // int rem = i % 2; // int st = rem == 0 ? 0 : 1; // for (int j = st; j < DW - 2; j += 2) // { // int top = i * DW + j + 1; // int left = (i + 1) * DW + j; // int right = (i + 1) * DW + j + 2; // int bottom = (i + 2) * DW + j + 1; // ushort vtop = setFlag[top] ? result[top] : hgtData[top]; // ushort vleft = setFlag[left] ? result[left] : hgtData[left]; // ushort vright = setFlag[right] ? result[right] : hgtData[right]; // ushort vbottom = setFlag[bottom] ? result[bottom] : hgtData[bottom]; // ushort vcenter = (ushort)((vtop + vleft + vright + vbottom) / 4); // int v = vcenter + vcenter - vtop; // if (v < 0) v = 0; // else if (v > ushort.MaxValue) v = ushort.MaxValue; // vbottom = (ushort)v; // //if (!setFlag[top]) // { // result[top] = vcenter;// vtop; // setFlag[top] = true; // } // //if (!setFlag[left]) // { // result[left] = vcenter;//vleft; // setFlag[left] = true; // } // //if (!setFlag[right]) // { // result[right] = vcenter;//vright; // setFlag[right] = true; // } // //if (!setFlag[bottom]) // { // result[bottom] = vcenter;// vbottom; // setFlag[bottom] = true; // } // int center = (i + 1) * DW + j + 1; // result[center] = vcenter; // setFlag[center] = true; // } //} ContentBinaryWriter bw = new ContentBinaryWriter(File.Open(@"E:\Desktop\res.raw", FileMode.OpenOrCreate)); for (int i = 0; i < DW * DH; i++) { bw.Write(hgtData[i]); } bw.Close(); }
private void button4_Click(object sender, EventArgs e) { button1.Enabled = false; button2.Enabled = false; button3.Enabled = false; button4.Enabled = false; DevFileLocation fl = new DevFileLocation(textBox1.Text); ContentBinaryWriter bw = new ContentBinaryWriter(fl); bw.Write(PakArchive.FileId); int count = listView1.Items.Count; bw.Write(count); progressBar1.Value = 0; progressBar1.Maximum = count; int oldPos = (int)bw.BaseStream.Position; ListView.ListViewItemCollection coll = listView1.Items; PakArchiveEntry[] entries = new PakArchiveEntry[count]; for (int i = 0; i < count; i++) { entries[i].Name = Path.GetFileName(coll[i].Text); bw.WriteStringUnicode(entries[i].Name); bw.Write(entries[i].Offset); bw.Write(entries[i].Size); bw.Write(entries[i].Flag); } #region 打包文件 for (int i = 0; i < count; i++) { FileStream fs = new FileStream(coll[i].Text, FileMode.Open, FileAccess.Read); BinaryReader br = new BinaryReader(fs); entries[i].Offset = (int)bw.BaseStream.Position; entries[i].Size = (int)br.BaseStream.Length; entries[i].Flag = 0; bw.Write(br.ReadBytes(entries[i].Size)); br.Close(); fs.Close(); Application.DoEvents(); progressBar1.Value = i + 1; } //CoderPropID[] propIDs = //{ // CoderPropID.DictionarySize, // CoderPropID.Algorithm //}; //object[] properties = //{ // 1048576*8, // 2 //}; //SevenZip.Compression.LZMA.Encoder encoder = new SevenZip.Compression.LZMA.Encoder(); //encoder.SetCoderProperties(propIDs, properties); //System.IO.MemoryStream propms = new System.IO.MemoryStream(); //encoder.WriteCoderProperties (propms); //bw.Write((int)propms.Length); //propms.Close(); //bw.Write(propms.ToArray()); //for (int i = 0; i < count; i++) //{ // entries[i].Offset = (int)bw.BaseStream.Position; // FileStream fs = new FileStream(coll[i].Text, FileMode.Open, FileAccess.Read); // System.IO.MemoryStream ms = new System.IO.MemoryStream((int)fs.Length / 2); // encoder.Code(fs, ms, -1, -1, null); // entries[i].Size = (int)fs.Length; // fs.Close(); // ms.Close(); // byte[] buffer = ms.ToArray(); // bw.Write(buffer); // entries[i].CompressedSize = buffer.Length; // entries[i].Flag = 0; // Application.DoEvents(); // progressBar1.Value = i + 1; //} #endregion bw.Seek(oldPos, SeekOrigin.Begin); for (int i = 0; i < count; i++) { bw.WriteStringUnicode(entries[i].Name); bw.Write(entries[i].Offset); bw.Write(entries[i].Size); bw.Write(entries[i].Flag); } bw.Close(); button1.Enabled = true; button2.Enabled = true; button3.Enabled = true; button4.Enabled = true; }
static unsafe void Grid() { //const int CellSpan = 3; const string SrcDir = @"E:\Documents\ic10gd\Source\Code2015\bin\x86\Debug\terrain\terrain_l2.tdmp"; ContentBinaryReader br = new ContentBinaryReader(new FileLocation(SrcDir)); const int DW = 33 * 36; const int DH = 33 * 14; byte[] hgtData = new byte[DW * DH]; for (int i = 0; i < DW * DH; i++) { float h = br.ReadUInt16() / (float)ushort.MaxValue; hgtData[i] = (byte)((byte)(h * 8) * 31); } br.Close(); //ushort[] result = new ushort[DW * DH]; //bool[] setFlag = new bool[DW * DH]; //for (int i = 0; i < DH-2; i ++) //{ // int rem = i % 2; // int st = rem == 0 ? 0 : 1; // for (int j = st; j < DW - 2; j += 2) // { // int top = i * DW + j + 1; // int left = (i + 1) * DW + j; // int right = (i + 1) * DW + j + 2; // int bottom = (i + 2) * DW + j + 1; // ushort vtop = setFlag[top] ? result[top] : hgtData[top]; // ushort vleft = setFlag[left] ? result[left] : hgtData[left]; // ushort vright = setFlag[right] ? result[right] : hgtData[right]; // ushort vbottom = setFlag[bottom] ? result[bottom] : hgtData[bottom]; // ushort vcenter = (ushort)((vtop + vleft + vright + vbottom) / 4); // int v = vcenter + vcenter - vtop; // if (v < 0) v = 0; // else if (v > ushort.MaxValue) v = ushort.MaxValue; // vbottom = (ushort)v; // //if (!setFlag[top]) // { // result[top] = vcenter;// vtop; // setFlag[top] = true; // } // //if (!setFlag[left]) // { // result[left] = vcenter;//vleft; // setFlag[left] = true; // } // //if (!setFlag[right]) // { // result[right] = vcenter;//vright; // setFlag[right] = true; // } // //if (!setFlag[bottom]) // { // result[bottom] = vcenter;// vbottom; // setFlag[bottom] = true; // } // int center = (i + 1) * DW + j + 1; // result[center] = vcenter; // setFlag[center] = true; // } //} ContentBinaryWriter bw = new ContentBinaryWriter(File.Open(@"E:\Desktop\res.raw", FileMode.OpenOrCreate)); for (int i = 0; i < DW * DH; i++) { bw.Write(hgtData[i]); } bw.Close(); }
static void BuildBitMap() { FileLocation fl = new FileLocation(@"E:\Desktop\terrain_l2副本.raw"); ContentBinaryReader br = new ContentBinaryReader(fl); const int DW = 36 * 32; const int DH = 14 * 32; ushort[,] data = new ushort[DH, DW]; for (int i = 0; i < DH; i++) { for (int j = 0; j < DW; j++) { ushort v = br.ReadUInt16(); data[i, j] = Math.Max(v, (ushort)(1640*7));// br.ReadUInt16(); } } br.Close(); int[,] dir = new int[DH, DW]; for (int i = 0; i < DH - 1; i++) { for (int j = 0; j < DW - 1; j++) { int dx = data[i + 1, j] - data[i, j]; int dy = data[i, j + 1] - data[i, j]; dir[i, j] = Math.Abs(dx) + Math.Abs(dy); } } for (int i = 0; i < DH - 1; i++) { int j = DW - 1; int dx = data[i + 1, j] - data[i, j]; int dy = data[i, 0] - data[i, j]; dir[i, j] = Math.Abs(dx) + Math.Abs(dy); } ContentBinaryWriter bw = new ContentBinaryWriter(File.Open(@"E:\Desktop\grad.raw", FileMode.OpenOrCreate)); for (int i = 0; i < DH; i++) { for (int j = 0; j < DW; j++) { if (dir[i, j] > ushort.MaxValue) dir[i, j] = ushort.MaxValue; bw.Write((ushort)dir[i, j]); } } bw.Close(); }
static void BuildLandAreaHeight() { FileLocation fl = new FileLocation(@"E:\Documents\ic10gd\Source\Code2015\bin\x86\Debug\terrain\terrain_l0.tdmp"); ContentBinaryReader br = new ContentBinaryReader(fl); const int DW = 36 * 513; const int DH = 14 * 513; ushort[,] data = new ushort[DH, DW]; for (int i = 0; i < DH; i++) { for (int j = 0; j < DW; j++) { ushort v = br.ReadUInt16(); data[i, j] = (v > (ushort)(1600 * 7)) ? v : (ushort)0; } } ContentBinaryWriter bw = new ContentBinaryWriter(File.Open(@"E:\Desktop\land513.raw", FileMode.OpenOrCreate)); for (int i = 0; i < DH; i++) { for (int j = 0; j < DW; j++) { bw.Write(data[i, j]); } } bw.Close(); }
static void BuildFlag() { bool[,] flags = new bool[36, 14]; for (int x = 1, i = 0; x < 72; x += 2, i++) { for (int y = 5, j = 0; y < 33; y += 2, j++) { string file = @"E:\Documents\ic10gd\Source\Code2015\bin\x86\Debug\terrain.lpk\tile_" + x.ToString("D2") + "_" + y.ToString("D2") + "_0.tdmp"; flags[i, j] = File.Exists(file); } } ContentBinaryWriter bw = new ContentBinaryWriter(File.Open(@"E:\Desktop\flags.dat", FileMode.OpenOrCreate)); for (int i = 0; i < 36; i++) { for (int j = 0; j < 14; j++) { bw.Write(flags[i, j]); } } bw.Close(); }