Пример #1
0
        public void SaveGMSPR(ProjectWriter writer)
        {
            writer.Write(GMProject.GMMagic);

            var zlib_w = new ProjectWriter(new MemoryStream());

            zlib_w.Write(Version);
            zlib_w.Write(Origin);

            zlib_w.Write(Subimages.Count);
            for (int i = 0; i < Subimages.Count; i++)
            {
                var frame = Subimages[i];
                zlib_w.Write(800);
                zlib_w.Write(frame.Size);
                if (frame.Width * frame.Height != 0)
                {
                    zlib_w.Write(frame, true);
                }
            }

            zlib_w.Write((int)MaskMode);
            zlib_w.Write(AlphaTolerance);
            zlib_w.Write(SeparateMasks);
            zlib_w.Write((int)BBoxMode);
            zlib_w.Write(BBox);

            writer.WriteZlibChunk(zlib_w); // zlib_w gets disposed automatically wew.
        }
Пример #2
0
        public void SaveGMBCK(ProjectWriter writer)
        {
            const int Magic = 1234321;

            writer.Write(Magic);

            var zlib_w = new ProjectWriter(new MemoryStream());

            zlib_w.Write(Version);

            zlib_w.Write(UseAsTileset);
            zlib_w.Write(TileWidth);
            zlib_w.Write(TileHeight);
            zlib_w.Write(OffsetH);
            zlib_w.Write(OffsetV);
            zlib_w.Write(SepH);
            zlib_w.Write(SepV);
            zlib_w.Write(FrameVersion);
            if (Background != null)
            {
                zlib_w.Write(Background.Size);
                zlib_w.Write(Background, true);
            }
            else
            {
                // w = 0, h = 0, no image.
                zlib_w.Write(0);
                zlib_w.Write(0);
            }

            writer.WriteZlibChunk(zlib_w);
        }
Пример #3
0
        private void Save_GameInformation(ProjectWriter writer)
        {
            writer.Write(GameInformation.Version);
            var z_writer = new ProjectWriter(new MemoryStream());

            GameInformation.Save(z_writer);
            writer.WriteZlibChunk(z_writer);
        }
Пример #4
0
        private void Save_Options(ProjectWriter writer)
        {
            writer.Write(Options.FormatVersion);
            var z_writer = new ProjectWriter(new MemoryStream());

            Options.Write(z_writer);
            writer.WriteZlibChunk(z_writer);
        }
Пример #5
0
        private void Save_NullItem(ProjectWriter writer)
        {
            var stream = new MemoryStream();
            var w      = new ProjectWriter(stream);

            w.Write(0);
            writer.WriteZlibChunk(w);
        }
Пример #6
0
        public static void WriteGameInformation(ProjectWriter main_writer, GMGameInformation self)
        {
            main_writer.Write(self.Version);
            var stream = new MemoryStream();
            var writer = new ProjectWriter(stream);

            writer.Write(self.BackgroundColor);
            writer.Write(self.SeparateWindow);
            writer.Write(self.Caption);
            writer.Write(self.Position);
            writer.Write(self.ShowBorder);
            writer.Write(self.AllowResize);
            writer.Write(self.AlwaysOnTop);
            writer.Write(self.Freeze);
            writer.Write(self.Text);
            main_writer.WriteZlibChunk(writer);
            stream.Dispose();
            writer.Dispose();
        }
Пример #7
0
 private void Save_IncludedFiles(ProjectWriter writer)
 {
     writer.Write(800);
     writer.Write(IncludedFiles.Count);
     for (int i = 0; i < IncludedFiles.Count; i++)
     {
         var f = IncludedFiles[i];
         if (f == null)
         {
             Save_NullItem(writer);
         }
         else
         {
             var z_writer = new ProjectWriter(new MemoryStream());
             z_writer.Write(1);
             f.Save(z_writer);
             writer.WriteZlibChunk(z_writer);
         }
     }
 }
Пример #8
0
 private void Save_Rooms(ProjectWriter writer)
 {
     writer.Write(800);
     writer.Write(Rooms.Count);
     for (int i = 0; i < Rooms.Count; i++)
     {
         var r = Rooms[i];
         if (r == null)
         {
             Save_NullItem(writer);
         }
         else
         {
             var z_writer = new ProjectWriter(new MemoryStream());
             z_writer.Write(1);
             r.Save(z_writer, this);
             writer.WriteZlibChunk(z_writer);
         }
     }
 }
Пример #9
0
 private void Save_Objects(ProjectWriter writer)
 {
     writer.Write(800);
     writer.Write(Objects.Count);
     for (int i = 0; i < Objects.Count; i++)
     {
         var o = Objects[i];
         if (o == null)
         {
             Save_NullItem(writer);
         }
         else
         {
             var z_writer = new ProjectWriter(new MemoryStream());
             z_writer.Write(1);
             o.Save(z_writer, this);
             writer.WriteZlibChunk(z_writer);
         }
     }
 }
Пример #10
0
 private void Save_Timelines(ProjectWriter writer)
 {
     writer.Write(800);
     writer.Write(Timelines.Count);
     for (int i = 0; i < Timelines.Count; i++)
     {
         var t = Timelines[i];
         if (t == null)
         {
             Save_NullItem(writer);
         }
         else
         {
             var z_writer = new ProjectWriter(new MemoryStream());
             z_writer.Write(1);
             t.Save(z_writer, this);
             writer.WriteZlibChunk(z_writer);
         }
     }
 }
Пример #11
0
 private void Save_Scripts(ProjectWriter writer)
 {
     writer.Write(800);
     writer.Write(Scripts.Count);
     for (int i = 0; i < Scripts.Count; i++)
     {
         var s = Scripts[i];
         if (s == null)
         {
             Save_NullItem(writer);
         }
         else
         {
             var z_writer = new ProjectWriter(new MemoryStream());
             z_writer.Write(1);
             s.Save(z_writer);
             writer.WriteZlibChunk(z_writer);
         }
     }
 }
Пример #12
0
 private void Save_Paths(ProjectWriter writer)
 {
     writer.Write(800);
     writer.Write(Paths.Count);
     for (int i = 0; i < Paths.Count; i++)
     {
         var p = Paths[i];
         if (p == null)
         {
             Save_NullItem(writer);
         }
         else
         {
             var z_writer = new ProjectWriter(new MemoryStream());
             z_writer.Write(1);
             p.Save(z_writer, this);
             writer.WriteZlibChunk(z_writer);
         }
     }
 }
Пример #13
0
 private void Save_Backgrounds(ProjectWriter writer)
 {
     writer.Write(800);
     writer.Write(Backgrounds.Count);
     for (int i = 0; i < Backgrounds.Count; i++)
     {
         var b = Backgrounds[i];
         if (b == null)
         {
             Save_NullItem(writer);
         }
         else
         {
             var z_writer = new ProjectWriter(new MemoryStream());
             z_writer.Write(1);
             b.Save(z_writer);
             writer.WriteZlibChunk(z_writer);
         }
     }
 }
Пример #14
0
 private void Save_Triggers(ProjectWriter writer)
 {
     writer.Write(800); // version
     writer.Write(Triggers.Count);
     for (int i = 0; i < Triggers.Count; i++)
     {
         var t = Triggers[i];
         if (t == null)
         {
             Save_NullItem(writer);
         }
         else
         {
             var z_writer = new ProjectWriter(new MemoryStream());
             t.Save(z_writer);
             writer.WriteZlibChunk(z_writer);
         }
     }
     writer.Write(TriggersLastChanged);
 }
Пример #15
0
        public static void WriteAsset <T>(ProjectWriter writer, List <T> assets, Action <ProjectWriter, T, GMProject> assetDelegate, GMProject proj = null)
        {
            writer.Write(800);
            writer.Write(assets.Count);
            foreach (var self in assets)
            {
                ProjectWriter zlibA = new ProjectWriter(new MemoryStream());

                // null asset
                if (self == null)
                {
                    zlibA.Write(false); // does the asset exist?
                }
                else
                {
                    zlibA.Write(true); // the asset exists
                    // execute the delegate...
                    assetDelegate(zlibA, self, proj);
                }

                writer.WriteZlibChunk(zlibA);
            }
        }
Пример #16
0
        public static void WriteOptions(ProjectWriter main_writer, GMOptions go)
        {
            main_writer.Write(go.FormatVersion);
            var stream = new MemoryStream();
            var writer = new ProjectWriter(stream);

            writer.Write(go.StartInFullscreen);
            writer.Write(go.InterpolatePixels);
            writer.Write(go.DontDrawBorder);
            writer.Write(go.DisplayCursor);
            writer.Write(go.Scaling);
            writer.Write(go.AllowWindowResize);
            writer.Write(go.AlwaysOnTop);
            writer.Write(go.OutsideRoom);
            writer.Write(go.SetResolution);
            writer.Write((int)go.ColorDepth);
            writer.Write((int)go.ScreenResolution);
            writer.Write((int)go.Frequency);
            writer.Write(go.Borderless);
            uint vsync = go.VSync ? 1U : 0U;

            if (go.SoftwareVertex)
            {
                vsync |= 0x80000000;
            }
            writer.Write(vsync);
            writer.Write(go.DisableScreensavers);
            writer.Write(go.LetF4Fullscreen);
            writer.Write(go.LetF1GameInfo);
            writer.Write(go.LetESCEndGame);
            writer.Write(go.LetF5F6SaveLoad);
            writer.Write(go.LetF9Screenshot);
            writer.Write(go.TreatCloseAsESC);
            writer.Write((int)go.Priority);
            writer.Write(go.FreezeWhenFocusLost);
            writer.Write((int)go.LoadingBarMode);
            string AppDir = AppDomain.CurrentDomain.BaseDirectory;

            if (go.LoadingBarMode == GMOptions.ProgBars.BAR_CUSTOM)
            {
                writer.Write(go.BackLoadingBar);
                writer.Write(go.FrontLoadingBar);
            }
            else if (go.LoadingBarMode == GMOptions.ProgBars.BAR_DEFAULT)
            {
                string back = Path.Combine(AppDir, "back.png");
                if (File.Exists(back))
                {
                    Image defBack = Image.FromFile(back);
                    writer.Write(defBack);
                    defBack.Dispose();
                }

                string front = Path.Combine(AppDir, "front.png");
                if (File.Exists(front))
                {
                    Image defFront = Image.FromFile(front);
                    writer.Write(defFront);
                    defFront.Dispose();
                }
            }

            if (go.ShowCustomLoadImage && go.LoadingImage != null)
            {
                writer.Write(go.LoadingImage);
            }
            else
            {
                string load = Path.Combine(AppDir, "load.png");
                if (File.Exists(load))
                {
                    Image defLoad = Image.FromFile(load);
                    writer.Write(defLoad);
                    defLoad.Dispose();
                }
                else
                {
                    writer.Write(false);
                }
            }

            writer.Write(go.LoadimgImagePartTransparent);
            writer.Write(go.LoadImageAlpha);
            writer.Write(go.ScaleProgressBar);
            writer.Write(go.DisplayErrors);
            writer.Write(go.WriteToLog);
            writer.Write(go.AbortOnAllErrors);
            writer.Write(go.TreatUninitAsZero);
            main_writer.WriteZlibChunk(writer);
            stream.Dispose();
            writer.Dispose();
        }