public void Save(System.IO.Stream s) { System.IO.BinaryWriter bw = new System.IO.BinaryWriter(s, Encoding.ASCII); bw.Write(GameMakerVersion); bw.Write(TabCaption.Length); bw.Write(TabCaption.ToCharArray()); bw.Write(1000);//LibraryID); bw.Write(Author.Length); bw.Write(Author.ToCharArray()); bw.Write(Version); bw.Write(LastChanged.Subtract(new DateTime(1899, 12, 30)).TotalDays); bw.Write(Info.Length); bw.Write(Info.ToCharArray()); bw.Write(InitializationCode.Length); bw.Write(InitializationCode.ToCharArray()); bw.Write(AdvancedModeOnly ? 1 : 0); bw.Write(ActionNumberIncremental); bw.Write(Actions.Count); foreach (ActionDefinition a in Actions) { bw.Write(a.GameMakerVersion); bw.Write(a.Name.Length); bw.Write(a.Name.ToCharArray()); bw.Write(a.ActionID); System.IO.MemoryStream ms = new System.IO.MemoryStream(); System.Drawing.Bitmap b = new System.Drawing.Bitmap(a.Image.Width, a.Image.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); System.Drawing.Graphics.FromImage(b).DrawImage(a.Image, 0, 0); b.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp); bw.Write((int)ms.Length); bw.Write(ms.ToArray()); ms.Close(); bw.Write(a.Hidden ? 1 : 0); bw.Write(a.Advanced ? 1 : 0); if (a.GameMakerVersion != 500) { bw.Write(a.RegisteredOnly ? 1 : 0); } bw.Write(a.Description.Length); bw.Write(a.Description.ToCharArray()); bw.Write(a.ListText.Length); bw.Write(a.ListText.ToCharArray()); bw.Write(a.HintText.Length); bw.Write(a.HintText.ToCharArray()); bw.Write((int)a.Kind); bw.Write((int)a.InterfaceKind); bw.Write(a.IsQuestion ? 1 : 0); bw.Write(a.ShowApplyTo ? 1 : 0); bw.Write(a.ShowRelative ? 1 : 0); bw.Write(a.ArgumentCount); bw.Write(8); for (int i = 0; i < 8; i++) { ActionArgument arg = i < a.ArgumentCount ? a.Arguments[i] : new ActionArgument(); bw.Write(arg.Caption.Length); bw.Write(arg.Caption.ToCharArray()); bw.Write((int)arg.Type); bw.Write(arg.DefaultValue.Length); bw.Write(arg.DefaultValue.ToCharArray()); bw.Write(arg.Menu.Length); bw.Write(arg.Menu.ToCharArray()); } bw.Write((int)a.ExecutionType); bw.Write(a.FunctionName.Length); bw.Write(a.FunctionName.ToCharArray()); bw.Write(a.Code.Length); bw.Write(a.Code.ToCharArray()); } s.Flush(); }
private void buildCaption() { this.tabCaption = new TabCaption(this, this.title); }