📄 umd_genegine.cs
字号:
{
File.Delete(text1);
}
else
{
result = "生成文件操作被用户取消";
return false;
}
}
FileStream stream1 = new FileStream(text1, FileMode.OpenOrCreate, FileAccess.Write);
BinaryWriter writer1 = new BinaryWriter(stream1);
this.iPGKSeed = (short) (random1.Next(0x401, 0x7fff) % 0xffff);
writer1.Write((uint) 0xde9a9b89);
writer1.Write('#');
writer1.Write((short) 1);
writer1.Write((byte) 0);
writer1.Write((byte) 8);
writer1.Write((byte) 2);//漫画书
writer1.Write(this.iPGKSeed);
writer1.Write('#');
writer1.Write((short) 2);
writer1.Write((byte) 0);
writer1.Write((byte) (5 + (this.iTitle.Length * 2)));
writer1.Write(Encoding.Unicode.GetBytes(this.iTitle));
writer1.Write('#');
writer1.Write((short) 3);
writer1.Write((byte) 0);
writer1.Write((byte) (5 + (this.iAuthor.Length * 2)));
writer1.Write(Encoding.Unicode.GetBytes(this.iAuthor));
if (this.iYear.Length > 0)
{
writer1.Write('#');
writer1.Write((short) 4);
writer1.Write((byte) 0);
writer1.Write((byte) (5 + (this.iYear.Length * 2)));
writer1.Write(Encoding.Unicode.GetBytes(this.iYear));
}
if (this.iMonth.Length > 0)
{
writer1.Write('#');
writer1.Write((short) 5);
writer1.Write((byte) 0);
writer1.Write((byte) (5 + (this.iMonth.Length * 2)));
writer1.Write(Encoding.Unicode.GetBytes(this.iMonth));
}
if (this.iDay.Length > 0)
{
writer1.Write('#');
writer1.Write((short) 6);
writer1.Write((byte) 0);
writer1.Write((byte) (5 + (this.iDay.Length * 2)));
writer1.Write(Encoding.Unicode.GetBytes(this.iDay));
}
if (this.iGender.Length > 0)
{
writer1.Write('#');
writer1.Write((short) 7);
writer1.Write((byte) 0);
writer1.Write((byte) (5 + (this.iGender.Length * 2)));
writer1.Write(Encoding.Unicode.GetBytes(this.iGender));
}
if (this.iPublisher.Length > 0)
{
writer1.Write('#');
writer1.Write((short) 8);
writer1.Write((byte) 0);
writer1.Write((byte) (5 + (this.iPublisher.Length * 2)));
writer1.Write(Encoding.Unicode.GetBytes(this.iPublisher));
}
if (this.iVendor.Length > 0)
{
writer1.Write('#');
writer1.Write((short) 9);
writer1.Write((byte) 0);
writer1.Write((byte) (5 + (this.iVendor.Length * 2)));
writer1.Write(Encoding.Unicode.GetBytes(this.iVendor));
}
// writer1.Write('#');
// writer1.Write((short) 11);
// writer1.Write((byte) 0);
// writer1.Write((byte) 9);
// writer1.Write(this.ibContent.Length);
// private ArrayList MHiChapterOff;// = new ArrayList();//目录偏移
// private ArrayList MHsChapterStr;// = new ArrayList();//目录名称
// private ArrayList MHsChapterJpg;// = new ArrayList();//图片列表
num1 = (uint) (0x3000 + random1.Next(0xfff));
writer1.Write('#');
writer1.Write((short) 0x83);
writer1.Write((byte) 1);
writer1.Write((byte) 9);
writer1.Write(num1);
writer1.Write('$');
writer1.Write(num1);
writer1.Write((uint) (9 + (this.MHiChapterOff.Count * 4)));
int num8 = 0;
while (num8 < MHiChapterOff.Count)
{
int num2 = (int)MHiChapterOff[num8];
writer1.Write(num2);
num8++;
}
num1 = (uint) (0x4000 + random1.Next(0xfff));
writer1.Write('#');
writer1.Write((short) 0x84);
writer1.Write((byte) 1);
writer1.Write((byte) 9);
writer1.Write(num1);
int num3 = 0;
foreach (object obj1 in this.MHsChapterStr)
{
num3 += ((((string) obj1).Length * 2) + 1);
}
writer1.Write('$');
writer1.Write(num1);
writer1.Write((uint) (9 + num3));
foreach (object obj2 in this.MHsChapterStr)
{
writer1.Write((byte) (((string) obj2).Length * 2));
writer1.Write(Encoding.Unicode.GetBytes((string) obj2));
//writer1.Write((byte)0x29);
//writer1.Write((byte)0x20);
}
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
writer1.Write('#');
writer1.Write((short) 0x0F);
writer1.Write((byte) 0);
writer1.Write((byte) 6);
writer1.Write((byte) 1);
uint[] numArray1 = new uint[this.MHsChapterJpg.Count];
int num5 = 0;
if (this.MHsChapterJpg.Count > 1)
{
num5 = random1.Next(0, MHsChapterJpg.Count - 1);
}
//********************************
//写入图片
for (int num6 = 0; num6 < this.MHsChapterJpg.Count; num6++)
{
string tmpJpgFileName = (string)MHsChapterJpg[num6];
//*********************************
if (!File.Exists(tmpJpgFileName))
{
result = "图形文件["+tmpJpgFileName+"]不存在!";
return false;
}
FileStream JpgStream = new FileStream(tmpJpgFileName, FileMode.Open,FileAccess.Read);
byte[] JpgBuffer = new byte[JpgStream.Length];
JpgStream.Read(JpgBuffer, 0, (int) JpgStream.Length);
JpgStream.Close();
//*********************************
numArray1[num6] = (uint) (random1.Next(1, 0xfffffff) * -1);
writer1.Write('$');
writer1.Write(numArray1[num6]);
writer1.Write((uint) (9 + JpgBuffer.Length));
writer1.Write(JpgBuffer);
//*********************************
if (num6 == num5)
{
writer1.Write('#');
writer1.Write((short) 10);
writer1.Write((byte) 0);
writer1.Write((byte) 9);
writer1.Write(this.iCID);
}
}
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
num1 = (uint) (0x2000 + random1.Next(0xfff));
writer1.Write('#');
writer1.Write((short) 0x81);
writer1.Write((byte) 1);
writer1.Write((byte) 9);
writer1.Write(num1);
writer1.Write('$');
writer1.Write(num1);
writer1.Write((uint) (9 + (numArray1.Length * 4)));
uint[] numArray4 = numArray1;
for (num8 = 0; num8 < numArray4.Length; num8++)
{
uint num7 = numArray4[num8];
writer1.Write(num7);
}
if (File.Exists(this.iCoverFile))
{
FileStream stream2 = new FileStream(this.iCoverFile + ".tmp", FileMode.Open);
byte[] buffer1 = new byte[stream2.Length];
stream2.Read(buffer1, 0, (int) stream2.Length);
stream2.Close();
num1 = (uint) (0x1000 + random1.Next(0xfff));
writer1.Write('#');
writer1.Write((short) 130);
writer1.Write((byte) 1);
writer1.Write((byte) 10);
writer1.Write((byte) 1);
writer1.Write(num1);
writer1.Write('$');
writer1.Write(num1);
writer1.Write((uint) (9 + buffer1.Length));
writer1.Write(buffer1);
}
writer1.Write('#');
writer1.Write((short) 0xf1);
writer1.Write((byte) 0);
writer1.Write((byte) 0x15);
writer1.Write(Encoding.ASCII.GetBytes("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"));
// pbar.Maximum = this.iContent.Length * 5;
// pbar.Value = 0;
// this.GetPageOffsetS60(0x10, this.ACTUAL_WIDTH_S60_HORI, ref pbar, out numArray2);
// this.WritePageOffset(0x10, (byte) (this.ACTUAL_WIDTH_S60_HORI + 4), ref numArray2, ref writer1, 1);
// numArray2.Initialize();
// this.GetPageOffsetS60(0x10, this.ACTUAL_WIDTH_S60_VERT, ref pbar, out numArray2);
// this.WritePageOffset(0x10, (byte) (this.ACTUAL_WIDTH_S60_VERT + 4), ref numArray2, ref writer1, 1);
// numArray2.Initialize();
// this.GetPageOffsetS60(12, this.ACTUAL_WIDTH_S60_HORI, ref pbar, out numArray2);
// this.WritePageOffset(12, (byte) (this.ACTUAL_WIDTH_S60_HORI + 4), ref numArray2, ref writer1, 1);
// numArray2.Initialize();
// this.GetPageOffsetS60(12, this.ACTUAL_WIDTH_S60_VERT, ref pbar, out numArray2);
// this.WritePageOffset(12, (byte) (this.ACTUAL_WIDTH_S60_VERT + 4), ref numArray2, ref writer1, 1);
// numArray2.Initialize();
// this.GetPageOffsetSP(10, this.ACTUAL_WIDTH_SP, ref pbar, out numArray2);
// this.WritePageOffset(10, this.ACTUAL_WIDTH_SP, ref numArray2, ref writer1, 5);
writer1.Write('#');
writer1.Write((short) 12);
writer1.Write((byte) 1);
writer1.Write((byte) 9);
writer1.Write((uint) (((uint) writer1.BaseStream.Position) + 4));
writer1.Close();
stream1.Close();
result = "true";
return true;
}
public bool MHMake(ref ProgressBar pbar, out string result)
{
Random random1 = new Random();
uint num1 = 0;
if (this.iSaveTo.EndsWith(@"\"))
{
this.iSaveTo.Remove(this.iSaveTo.Length - 1, 1);
}
string text1 = this.iSaveTo + @"\" + this.iTitle + ".umd";
if (File.Exists(text1))
{
if (MessageBox.Show("您要保存的文件已经存在,是否覆盖?", "mBook制作工具 版本:1.0", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
File.Delete(text1);
}
else
{
result = "生成文件操作被用户取消";
return false;
}
}
FileStream stream1 = new FileStream(text1, FileMode.OpenOrCreate, FileAccess.Write);
BinaryWriter writer1 = new BinaryWriter(stream1);
this.iPGKSeed = (short) (random1.Next(0x401, 0x7fff) % 0xffff);
writer1.Write((uint) 0xde9a9b89);
writer1.Write('#');
writer1.Write((short) 1);
writer1.Write((byte) 0);
writer1.Write((byte) 8);
writer1.Write((byte) 2);//漫画书
writer1.Write(this.iPGKSeed);
writer1.Write('#');
writer1.Write((short) 2);
writer1.Write((byte) 0);
writer1.Write((byte) (5 + (this.iTitle.Length * 2)));
writer1.Write(Encoding.Unicode.GetBytes(this.iTitle));
writer1.Write('#');
writer1.Write((short) 3);
writer1.Write((byte) 0);
writer1.Write((byte) (5 + (this.iAuthor.Length * 2)));
writer1.Write(Encoding.Unicode.GetBytes(this.iAuthor));
if (this.iYear.Length > 0)
{
writer1.Write('#');
writer1.Write((short) 4);
writer1.Write((byte) 0);
writer1.Write((byte) (5 + (this.iYear.Length * 2)));
writer1.Write(Encoding.Unicode.GetBytes(this.iYear));
}
if (this.iMonth.Length > 0)
{
writer1.Write('#');
writer1.Write((short) 5);
writer1.Write((byte) 0);
writer1.Write((byte) (5 + (this.iMonth.Length * 2)));
writer1.Write(Encoding.Unicode.GetBytes(this.iMonth));
}
if (this.iDay.Length > 0)
{
writer1.Write('#');
writer1.Write((short) 6);
writer1.Write((byte) 0);
writer1.Write((byte) (5 + (this.iDay.Length * 2)));
writer1.Write(Encoding.Unicode.GetBytes(this.iDay));
}
if (this.iGender.Length > 0)
{
writer1.Write('#');
writer1.Write((short) 7);
writer1.Write((byte) 0);
writer1.Write((byte) (5 + (this.iGender.Length * 2)));
writer1.Write(Encoding.Unicode.GetBytes(this.iGender));
}
if (this.iPublisher.Length > 0)
{
writer1.Write('#');
writer1.Write((short) 8);
writer1.Write((byte) 0);
writer1.Write((byte) (5 + (this.iPublisher.Length * 2)));
writer1.Write(Encoding.Unicode.GetBytes(this.iPublisher));
}
if (this.iVendor.Length > 0)
{
writer1.Write('#');
writer1.Write((short) 9);
writer1.Write((byte) 0);
writer1.Write((byte) (5 + (this.iVendor.Length * 2)));
writer1.Write(Encoding.Unicode.GetBytes(this.iVendor));
}
// writer1.Write('#');
// writer1.Write((short) 11);
// writer1.Write((byte) 0);
// writer1.Write((byte) 9);
// writer1.Write(this.ibContent.Length);
// private ArrayList MHiChapterOff;// = new ArrayList();//目录偏移
// private ArrayList MHsChapterStr;// = new ArrayList();//目录名称
// private ArrayList MHsChapterJpg;// = new ArrayList();//图片列表
num1 = (uint) (0x3000 + random1.Next(0xfff));
writer1.Write('#');
writer1.Write((short) 0x83);
writer1.Write((byte) 1);
writer1.Write((byte) 9);
writer1.Write(num1);
writer1.Write('$');
writer1.Write(num1);
writer1.Write((uint) (9 + (this.MHiChapterOff.Count * 4)));
int num8 = 0;
while (num8 < MHiChapterOff.Count)
{
int num2 = (int)MHiChapterOff[num8];
writer1.Write(num2);
num8++;
}
num1 = (uint) (0x4000 + random1.Next(0xfff));
writer1.Write('#');
writer1.Write((short) 0x84);
writer1.Write((byte) 1);
writer1.Write((byte) 9);
writer1.Write(num1);
int num3 = 0;
foreach (object obj1 in this.MHsChapterStr)
{
num3 += ((((string) obj1).Length * 2) + 3);
}
writer1.Write('$');
writer1.Write(num1);
writer1.Write((uint) (9 + num3));
foreach (object obj2 in this.MHsChapterStr)
{
writer1.Write((byte) (((string) obj2).Length * 2+2));
writer1.Write(Encoding.Unicode.GetBytes((string) obj2));
writer1.Write((byte)0x29);
writer1.Write((byte)0x20);
}
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
writer1.Write('#');
writer1.Write((short) 0x0E);
writer1.Write((byte) 0);
writer1.Write((byte) 6);
writer1.Write((byte) 1);
uint[] numArray1 = new uint[this.MHsChapterJpg.Count];
int num5 = 0;
if (this.MHsChapterJpg.Count > 1)
{
num5 = random1.Next(0, MHsChapterJpg.Count - 1);
}
//********************************
//写入图片
for (int num6 = 0; num6 < this.MHsChapterJpg.Count; num6++)
{
string tmpJpgFileName = (string)MHsChapterJpg[num6];
//*********************************
if (!File.Exists(tmpJpgFileName))
{
result = "图形文件["+tmpJpgFileName+"]不存在!";
return false;
}
FileStream JpgStream = new FileStream(tmpJpgFileName, FileMode.Open,FileAccess.Read);
byte[] JpgBuffer = new byte[JpgStream.Length];
JpgStream.Read(JpgBuffer, 0, (int) JpgStream.Length);
JpgStream.Close();
//*********************************
numArray1[num6] = (uint) (random1.Next(1, 0xfffffff) * -1);
writer1.Write('$');
writer1.Write(numArray1[num6]);
writer1.Write((uint) (9 + JpgBuffer.Length));
writer1.Write(JpgBuffer);
//*********************************
if (num6 == num5)
{
writer1.Write('#');
writer1.Write((short) 10);
writer1.Write((byte) 0);
writer1.Write((byte) 9);
writer1.Write(this.iCID);
}
}
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
num1 = (uint) (0x2000 + random1.Next(0xfff));
writer1.Write('#');
writer1.Write((short) 0x81);
writer1.Write((byte) 1);
writer1.Write((byte) 9);
writer1.Write(num1);
writer1.Write('$');
writer1.Write(num1);
writer1.Write((uint) (9 + (numArray1.Length * 4)));
uint[] numArray4 = numArray1;
for (num8 = 0; num8 < numArray4.Length; num8++)
{
uint num7 = numArray4[num8];
writer1.Write(num7);
}
if (File.Exists(this.iCoverFile))
{
FileStream stream2 = new FileStream(this.iCoverFile + ".tmp", FileMode.Open);
byte[] buffer1 = new byte[stream2.Length];
stream2.Read(buffer1, 0, (int) stream2.Length);
stream2.Close();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -