From 777f0ce59a0413820f900d6c7e07009ecb9c88ec Mon Sep 17 00:00:00 2001 From: miku-666 <74728189+NessieHax@users.noreply.github.com> Date: Mon, 15 May 2023 17:45:26 +0200 Subject: [PATCH] GRF Editor - Changed UI of compression menu item --- .../ToolStripRadioButtonMenuItem.cs | 250 ++++++++++++++++++ .../Additional-Popups/ItemSelectionPopUp.cs | 2 +- .../Editor/GameRuleFileEditor.Designer.cs | 151 ++++++++--- PCK-Studio/Forms/Editor/GameRuleFileEditor.cs | 101 ++++++- PCK-Studio/PckStudio.csproj | 3 + 5 files changed, 457 insertions(+), 50 deletions(-) create mode 100644 PCK-Studio/Classes/ToolboxItems/ToolStripRadioButtonMenuItem.cs diff --git a/PCK-Studio/Classes/ToolboxItems/ToolStripRadioButtonMenuItem.cs b/PCK-Studio/Classes/ToolboxItems/ToolStripRadioButtonMenuItem.cs new file mode 100644 index 00000000..233124df --- /dev/null +++ b/PCK-Studio/Classes/ToolboxItems/ToolStripRadioButtonMenuItem.cs @@ -0,0 +1,250 @@ +using System; +using System.Drawing; +using System.Windows.Forms; +using System.Windows.Forms.VisualStyles; + +// source: +namespace PckStudio +{ + public class ToolStripRadioButtonMenuItem : ToolStripMenuItem + { + public ToolStripRadioButtonMenuItem() + : base() + { + Initialize(); + } + + public ToolStripRadioButtonMenuItem(string text) + : base(text, null, (EventHandler)null) + { + Initialize(); + } + + public ToolStripRadioButtonMenuItem(Image image) + : base(null, image, (EventHandler)null) + { + Initialize(); + } + + public ToolStripRadioButtonMenuItem(string text, Image image) + : base(text, image, (EventHandler)null) + { + Initialize(); + } + + public ToolStripRadioButtonMenuItem(string text, Image image, + EventHandler onClick) + : base(text, image, onClick) + { + Initialize(); + } + + public ToolStripRadioButtonMenuItem(string text, Image image, + EventHandler onClick, string name) + : base(text, image, onClick, name) + { + Initialize(); + } + + public ToolStripRadioButtonMenuItem(string text, Image image, + params ToolStripItem[] dropDownItems) + : base(text, image, dropDownItems) + { + Initialize(); + } + + public ToolStripRadioButtonMenuItem(string text, Image image, + EventHandler onClick, Keys shortcutKeys) + : base(text, image, onClick) + { + Initialize(); + this.ShortcutKeys = shortcutKeys; + } + + // Called by all constructors to initialize CheckOnClick. + private void Initialize() + { + CheckOnClick = true; + } + + protected override void OnCheckedChanged(EventArgs e) + { + base.OnCheckedChanged(e); + + // If this item is no longer in the checked state or if its + // parent has not yet been initialized, do nothing. + if (!Checked || this.Parent == null) return; + + // Clear the checked state for all siblings. + foreach (ToolStripItem item in Parent.Items) + { + ToolStripRadioButtonMenuItem radioItem = + item as ToolStripRadioButtonMenuItem; + if (radioItem != null && radioItem != this && radioItem.Checked) + { + radioItem.Checked = false; + + // Only one item can be selected at a time, + // so there is no need to continue. + return; + } + } + } + + protected override void OnClick(EventArgs e) + { + // If the item is already in the checked state, do not call + // the base method, which would toggle the value. + if (Checked) return; + + base.OnClick(e); + } + + // Let the item paint itself, and then paint the RadioButton + // where the check mark is normally displayed. + protected override void OnPaint(PaintEventArgs e) + { + if (Image != null) + { + // If the client sets the Image property, the selection behavior + // remains unchanged, but the RadioButton is not displayed and the + // selection is indicated only by the selection rectangle. + base.OnPaint(e); + return; + } + else + { + // If the Image property is not set, call the base OnPaint method + // with the CheckState property temporarily cleared to prevent + // the check mark from being painted. + CheckState currentState = this.CheckState; + this.CheckState = CheckState.Unchecked; + base.OnPaint(e); + this.CheckState = currentState; + } + + // Determine the correct state of the RadioButton. + RadioButtonState buttonState = RadioButtonState.UncheckedNormal; + if (Enabled) + { + if (mouseDownState) + { + if (Checked) buttonState = RadioButtonState.CheckedPressed; + else buttonState = RadioButtonState.UncheckedPressed; + } + else if (mouseHoverState) + { + if (Checked) buttonState = RadioButtonState.CheckedHot; + else buttonState = RadioButtonState.UncheckedHot; + } + else + { + if (Checked) buttonState = RadioButtonState.CheckedNormal; + } + } + else + { + if (Checked) buttonState = RadioButtonState.CheckedDisabled; + else buttonState = RadioButtonState.UncheckedDisabled; + } + + // Calculate the position at which to display the RadioButton. + Int32 offset = (ContentRectangle.Height - + RadioButtonRenderer.GetGlyphSize( + e.Graphics, buttonState).Height) / 2; + Point imageLocation = new Point( + ContentRectangle.Location.X + 4, + ContentRectangle.Location.Y + offset); + + // Paint the RadioButton. + RadioButtonRenderer.DrawRadioButton( + e.Graphics, imageLocation, buttonState); + } + + private bool mouseHoverState = false; + + protected override void OnMouseEnter(EventArgs e) + { + mouseHoverState = true; + + // Force the item to repaint with the new RadioButton state. + Invalidate(); + + base.OnMouseEnter(e); + } + + protected override void OnMouseLeave(EventArgs e) + { + mouseHoverState = false; + base.OnMouseLeave(e); + } + + private bool mouseDownState = false; + + protected override void OnMouseDown(MouseEventArgs e) + { + mouseDownState = true; + + // Force the item to repaint with the new RadioButton state. + Invalidate(); + + base.OnMouseDown(e); + } + + protected override void OnMouseUp(MouseEventArgs e) + { + mouseDownState = false; + base.OnMouseUp(e); + } + + // Enable the item only if its parent item is in the checked state + // and its Enabled property has not been explicitly set to false. + public override bool Enabled + { + get + { + ToolStripMenuItem ownerMenuItem = + OwnerItem as ToolStripMenuItem; + + // Use the base value in design mode to prevent the designer + // from setting the base value to the calculated value. + if (!DesignMode && + ownerMenuItem != null && ownerMenuItem.CheckOnClick) + { + return base.Enabled && ownerMenuItem.Checked; + } + else + { + return base.Enabled; + } + } + set + { + base.Enabled = value; + } + } + + // When OwnerItem becomes available, if it is a ToolStripMenuItem + // with a CheckOnClick property value of true, subscribe to its + // CheckedChanged event. + protected override void OnOwnerChanged(EventArgs e) + { + ToolStripMenuItem ownerMenuItem = + OwnerItem as ToolStripMenuItem; + if (ownerMenuItem != null && ownerMenuItem.CheckOnClick) + { + ownerMenuItem.CheckedChanged += + new EventHandler(OwnerMenuItem_CheckedChanged); + } + base.OnOwnerChanged(e); + } + + // When the checked state of the parent item changes, + // repaint the item so that the new Enabled state is displayed. + private void OwnerMenuItem_CheckedChanged( + object sender, EventArgs e) + { + Invalidate(); + } + } +} \ No newline at end of file diff --git a/PCK-Studio/Forms/Additional-Popups/ItemSelectionPopUp.cs b/PCK-Studio/Forms/Additional-Popups/ItemSelectionPopUp.cs index e6b81149..efb7f1b0 100644 --- a/PCK-Studio/Forms/Additional-Popups/ItemSelectionPopUp.cs +++ b/PCK-Studio/Forms/Additional-Popups/ItemSelectionPopUp.cs @@ -7,7 +7,7 @@ namespace PckStudio.Forms.Additional_Popups { public string SelectedItem => DialogResult == DialogResult.OK ? ComboBox.Text : string.Empty; - public ItemSelectionPopUp(string[] items) + public ItemSelectionPopUp(params string[] items) { InitializeComponent(); ComboBox.Items.AddRange(items); diff --git a/PCK-Studio/Forms/Editor/GameRuleFileEditor.Designer.cs b/PCK-Studio/Forms/Editor/GameRuleFileEditor.Designer.cs index e76b80ae..1a651a91 100644 --- a/PCK-Studio/Forms/Editor/GameRuleFileEditor.Designer.cs +++ b/PCK-Studio/Forms/Editor/GameRuleFileEditor.Designer.cs @@ -45,10 +45,16 @@ this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.compressionLvlToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripComboBox1 = new System.Windows.Forms.ToolStripComboBox(); - this.compressionTypeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.compressionTypeComboBox = new System.Windows.Forms.ToolStripComboBox(); + this.levelToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.typeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.metroPanel1 = new MetroFramework.Controls.MetroPanel(); + this.noneToolStripMenuItem = new PckStudio.ToolStripRadioButtonMenuItem(); + this.compressedToolStripMenuItem = new PckStudio.ToolStripRadioButtonMenuItem(); + this.compressedRLEToolStripMenuItem = new PckStudio.ToolStripRadioButtonMenuItem(); + this.compressedRLECRCToolStripMenuItem = new PckStudio.ToolStripRadioButtonMenuItem(); + this.wiiUPSVitaToolStripMenuItem = new PckStudio.ToolStripRadioButtonMenuItem(); + this.pS3ToolStripMenuItem = new PckStudio.ToolStripRadioButtonMenuItem(); + this.xbox360ToolStripMenuItem = new PckStudio.ToolStripRadioButtonMenuItem(); this.MessageContextMenu.SuspendLayout(); this.DetailContextMenu.SuspendLayout(); this.menuStrip1.SuspendLayout(); @@ -155,8 +161,7 @@ this.menuStrip1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.fileToolStripMenuItem, - this.compressionLvlToolStripMenuItem, - this.compressionTypeToolStripMenuItem}); + this.compressionLvlToolStripMenuItem}); this.menuStrip1.Location = new System.Drawing.Point(25, 60); this.menuStrip1.Name = "menuStrip1"; this.menuStrip1.Size = new System.Drawing.Size(450, 24); @@ -176,7 +181,7 @@ // openToolStripMenuItem // this.openToolStripMenuItem.Name = "openToolStripMenuItem"; - this.openToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.openToolStripMenuItem.Size = new System.Drawing.Size(103, 22); this.openToolStripMenuItem.Text = "Open"; this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click); // @@ -184,47 +189,42 @@ // this.saveToolStripMenuItem.BackColor = System.Drawing.Color.Transparent; this.saveToolStripMenuItem.Name = "saveToolStripMenuItem"; - this.saveToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.saveToolStripMenuItem.Size = new System.Drawing.Size(103, 22); this.saveToolStripMenuItem.Text = "Save"; this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click); // // compressionLvlToolStripMenuItem // this.compressionLvlToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.toolStripComboBox1}); + this.levelToolStripMenuItem, + this.typeToolStripMenuItem}); this.compressionLvlToolStripMenuItem.ForeColor = System.Drawing.SystemColors.Menu; this.compressionLvlToolStripMenuItem.Name = "compressionLvlToolStripMenuItem"; - this.compressionLvlToolStripMenuItem.Size = new System.Drawing.Size(106, 20); - this.compressionLvlToolStripMenuItem.Text = "Compression Lvl"; + this.compressionLvlToolStripMenuItem.Size = new System.Drawing.Size(89, 20); + this.compressionLvlToolStripMenuItem.Text = "Compression"; // - // toolStripComboBox1 + // levelToolStripMenuItem // - this.toolStripComboBox1.Items.AddRange(new object[] { - "None", - "Compressed", - "Compressed + RLE", - "Compressed + RLE + CRC"}); - this.toolStripComboBox1.Name = "toolStripComboBox1"; - this.toolStripComboBox1.Size = new System.Drawing.Size(121, 23); - this.toolStripComboBox1.Text = "None"; + this.levelToolStripMenuItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + this.levelToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.noneToolStripMenuItem, + this.compressedToolStripMenuItem, + this.compressedRLEToolStripMenuItem, + this.compressedRLECRCToolStripMenuItem}); + this.levelToolStripMenuItem.Name = "levelToolStripMenuItem"; + this.levelToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.levelToolStripMenuItem.Text = "Level"; // - // compressionTypeToolStripMenuItem + // typeToolStripMenuItem // - this.compressionTypeToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.compressionTypeComboBox}); - this.compressionTypeToolStripMenuItem.ForeColor = System.Drawing.SystemColors.Menu; - this.compressionTypeToolStripMenuItem.Name = "compressionTypeToolStripMenuItem"; - this.compressionTypeToolStripMenuItem.Size = new System.Drawing.Size(116, 20); - this.compressionTypeToolStripMenuItem.Text = "Compression Type"; - // - // compressionTypeComboBox - // - this.compressionTypeComboBox.Items.AddRange(new object[] { - "Wii U, PS Vita", - "PS3", - "Xbox 360"}); - this.compressionTypeComboBox.Name = "compressionTypeComboBox"; - this.compressionTypeComboBox.Size = new System.Drawing.Size(121, 23); + this.typeToolStripMenuItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + this.typeToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.wiiUPSVitaToolStripMenuItem, + this.pS3ToolStripMenuItem, + this.xbox360ToolStripMenuItem}); + this.typeToolStripMenuItem.Name = "typeToolStripMenuItem"; + this.typeToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.typeToolStripMenuItem.Text = "Type"; // // metroPanel1 // @@ -246,6 +246,72 @@ this.metroPanel1.VerticalScrollbarSize = 10; this.metroPanel1.Resize += new System.EventHandler(this.metroPanel1_Resize); // + // noneToolStripMenuItem + // + this.noneToolStripMenuItem.Checked = true; + this.noneToolStripMenuItem.CheckOnClick = true; + this.noneToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked; + this.noneToolStripMenuItem.Name = "noneToolStripMenuItem"; + this.noneToolStripMenuItem.Size = new System.Drawing.Size(210, 22); + this.noneToolStripMenuItem.Text = "None"; + this.noneToolStripMenuItem.CheckedChanged += new System.EventHandler(this.noneToolStripMenuItem_CheckedChanged); + // + // compressedToolStripMenuItem + // + this.compressedToolStripMenuItem.CheckOnClick = true; + this.compressedToolStripMenuItem.Name = "compressedToolStripMenuItem"; + this.compressedToolStripMenuItem.Size = new System.Drawing.Size(210, 22); + this.compressedToolStripMenuItem.Text = "Compressed"; + this.compressedToolStripMenuItem.CheckedChanged += new System.EventHandler(this.compressedToolStripMenuItem_CheckedChanged); + // + // compressedRLEToolStripMenuItem + // + this.compressedRLEToolStripMenuItem.CheckOnClick = true; + this.compressedRLEToolStripMenuItem.Name = "compressedRLEToolStripMenuItem"; + this.compressedRLEToolStripMenuItem.Size = new System.Drawing.Size(210, 22); + this.compressedRLEToolStripMenuItem.Text = "Compressed + RLE"; + this.compressedRLEToolStripMenuItem.CheckedChanged += new System.EventHandler(this.compressedRLEToolStripMenuItem_CheckedChanged); + // + // compressedRLECRCToolStripMenuItem + // + this.compressedRLECRCToolStripMenuItem.CheckOnClick = true; + this.compressedRLECRCToolStripMenuItem.Name = "compressedRLECRCToolStripMenuItem"; + this.compressedRLECRCToolStripMenuItem.Size = new System.Drawing.Size(210, 22); + this.compressedRLECRCToolStripMenuItem.Text = "Compressed + RLE + CRC"; + this.compressedRLECRCToolStripMenuItem.CheckedChanged += new System.EventHandler(this.compressedRLECRCToolStripMenuItem_CheckedChanged); + // + // wiiUPSVitaToolStripMenuItem + // + this.wiiUPSVitaToolStripMenuItem.BackColor = System.Drawing.SystemColors.Window; + this.wiiUPSVitaToolStripMenuItem.CheckOnClick = true; + this.wiiUPSVitaToolStripMenuItem.Name = "wiiUPSVitaToolStripMenuItem"; + this.wiiUPSVitaToolStripMenuItem.ShowShortcutKeys = false; + this.wiiUPSVitaToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.wiiUPSVitaToolStripMenuItem.Text = "Wii U, PS Vita"; + this.wiiUPSVitaToolStripMenuItem.CheckedChanged += new System.EventHandler(this.wiiUPSVitaToolStripMenuItem_CheckedChanged); + // + // pS3ToolStripMenuItem + // + this.pS3ToolStripMenuItem.BackColor = System.Drawing.SystemColors.Window; + this.pS3ToolStripMenuItem.CheckOnClick = true; + this.pS3ToolStripMenuItem.Name = "pS3ToolStripMenuItem"; + this.pS3ToolStripMenuItem.ShowShortcutKeys = false; + this.pS3ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.pS3ToolStripMenuItem.Text = "PS3"; + this.pS3ToolStripMenuItem.CheckedChanged += new System.EventHandler(this.pS3ToolStripMenuItem_CheckedChanged); + // + // xbox360ToolStripMenuItem + // + this.xbox360ToolStripMenuItem.BackColor = System.Drawing.SystemColors.Window; + this.xbox360ToolStripMenuItem.Checked = true; + this.xbox360ToolStripMenuItem.CheckOnClick = true; + this.xbox360ToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked; + this.xbox360ToolStripMenuItem.Name = "xbox360ToolStripMenuItem"; + this.xbox360ToolStripMenuItem.ShowShortcutKeys = false; + this.xbox360ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.xbox360ToolStripMenuItem.Text = "Xbox 360"; + this.xbox360ToolStripMenuItem.CheckedChanged += new System.EventHandler(this.xbox360ToolStripMenuItem_CheckedChanged); + // // GameRuleFileEditor // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -294,8 +360,17 @@ private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem; private MetroFramework.Controls.MetroPanel metroPanel1; private System.Windows.Forms.ToolStripMenuItem compressionLvlToolStripMenuItem; - private System.Windows.Forms.ToolStripComboBox toolStripComboBox1; - private System.Windows.Forms.ToolStripMenuItem compressionTypeToolStripMenuItem; - private System.Windows.Forms.ToolStripComboBox compressionTypeComboBox; + private System.Windows.Forms.ToolStripMenuItem levelToolStripMenuItem; + + private PckStudio.ToolStripRadioButtonMenuItem noneToolStripMenuItem; + private PckStudio.ToolStripRadioButtonMenuItem compressedToolStripMenuItem; + private PckStudio.ToolStripRadioButtonMenuItem compressedRLEToolStripMenuItem; + private PckStudio.ToolStripRadioButtonMenuItem compressedRLECRCToolStripMenuItem; + + private System.Windows.Forms.ToolStripMenuItem typeToolStripMenuItem; + + private PckStudio.ToolStripRadioButtonMenuItem wiiUPSVitaToolStripMenuItem; + private PckStudio.ToolStripRadioButtonMenuItem pS3ToolStripMenuItem; + private PckStudio.ToolStripRadioButtonMenuItem xbox360ToolStripMenuItem; } } \ No newline at end of file diff --git a/PCK-Studio/Forms/Editor/GameRuleFileEditor.cs b/PCK-Studio/Forms/Editor/GameRuleFileEditor.cs index 6ecfe956..8af2da99 100644 --- a/PCK-Studio/Forms/Editor/GameRuleFileEditor.cs +++ b/PCK-Studio/Forms/Editor/GameRuleFileEditor.cs @@ -11,6 +11,7 @@ using OMI.Workers.GameRule; using System.Diagnostics; using OMI.Formats.Pck; using PckStudio.Forms.Additional_Popups; +using PckStudio.Models; namespace PckStudio.Forms.Editor { @@ -18,7 +19,8 @@ namespace PckStudio.Forms.Editor { private PckFile.FileData _pckfile; private GameRuleFile _file; - + private GameRuleFile.CompressionType compressionType; + private GameRuleFile.CompressionLevel compressionLevel; public GameRuleFileEditor() { InitializeComponent(); @@ -27,28 +29,44 @@ namespace PckStudio.Forms.Editor private void PromptForCompressionType() { - ItemSelectionPopUp dialog = new ItemSelectionPopUp(compressionTypeComboBox.Items.Cast().ToArray()); + ItemSelectionPopUp dialog = new ItemSelectionPopUp("Wii U, PS Vita", "PS3", "Xbox 360"); dialog.label2.Text = "Type"; dialog.okBtn.Text = "Ok"; if (dialog.ShowDialog() == DialogResult.OK) - compressionTypeComboBox.SelectedIndex = compressionTypeComboBox.Items.IndexOf(dialog.SelectedItem); + { + switch(dialog.SelectedItem) + { + case "Wii U, PS Vita": + wiiUPSVitaToolStripMenuItem.Checked = true; + break; + case "PS3": + pS3ToolStripMenuItem.Checked = true; + break; + case "Xbox 360": + xbox360ToolStripMenuItem.Checked = true; + break; + } + } } public GameRuleFileEditor(PckFile.FileData file) : this() { _pckfile = file; - using (var stream = new MemoryStream(file.Data)) + if (file.Size > 0) { - _file = OpenGameRuleFile(stream, (GameRuleFile.CompressionType)compressionTypeComboBox.SelectedIndex); + using (var stream = new MemoryStream(file.Data)) + { + _file = OpenGameRuleFile(stream); + } } } public GameRuleFileEditor(Stream stream) : this() { - _file = OpenGameRuleFile(stream, (GameRuleFile.CompressionType)compressionTypeComboBox.SelectedIndex); + _file = OpenGameRuleFile(stream); } - private GameRuleFile OpenGameRuleFile(Stream stream, GameRuleFile.CompressionType compressionType) + private GameRuleFile OpenGameRuleFile(Stream stream) { try { @@ -83,13 +101,32 @@ namespace PckStudio.Forms.Editor private void ReloadGameRuleTree() { GrfTreeView.Nodes.Clear(); + SetCompressionLevel(); if (_file is not null) { - toolStripComboBox1.SelectedIndex = (int)_file.FileHeader.CompressionLevel; LoadGameRuleTree(GrfTreeView.Nodes, _file.Root); } } + private void SetCompressionLevel() + { + switch (_file.FileHeader.CompressionLevel) + { + case GameRuleFile.CompressionLevel.None: + noneToolStripMenuItem.Checked = true; + break; + case GameRuleFile.CompressionLevel.Compressed: + compressedToolStripMenuItem.Checked = true; + break; + case GameRuleFile.CompressionLevel.CompressedRle: + compressedRLEToolStripMenuItem.Checked = true; + break; + case GameRuleFile.CompressionLevel.CompressedRleCrc: + compressedRLECRCToolStripMenuItem.Checked = true; + break; + } + } + private void GrfTreeView_AfterSelect(object sender, TreeViewEventArgs e) { if (e.Node is TreeNode t && t.Tag is GameRuleFile.GameRule) @@ -215,8 +252,8 @@ namespace PckStudio.Forms.Editor { var writer = new GameRuleFileWriter( _file, - (GameRuleFile.CompressionLevel)toolStripComboBox1.SelectedIndex, - (GameRuleFile.CompressionType)compressionTypeComboBox.SelectedIndex); + compressionLevel, + compressionType); writer.WriteToStream(stream); _pckfile?.SetData(stream.ToArray()); MessageBox.Show("Saved!"); @@ -247,10 +284,52 @@ namespace PckStudio.Forms.Editor { using (var fs = File.OpenRead(dialog.FileName)) { - _file = OpenGameRuleFile(fs, (GameRuleFile.CompressionType)compressionTypeComboBox.SelectedIndex); + _file = OpenGameRuleFile(fs); ReloadGameRuleTree(); } } } + + private void noneToolStripMenuItem_CheckedChanged(object sender, EventArgs e) + { + if (sender is ToolStripRadioButtonMenuItem radioButton && radioButton.Checked) + compressionLevel = GameRuleFile.CompressionLevel.None; + } + + private void compressedToolStripMenuItem_CheckedChanged(object sender, EventArgs e) + { + if (sender is ToolStripRadioButtonMenuItem radioButton && radioButton.Checked) + compressionLevel = GameRuleFile.CompressionLevel.Compressed; + } + + private void compressedRLEToolStripMenuItem_CheckedChanged(object sender, EventArgs e) + { + if (sender is ToolStripRadioButtonMenuItem radioButton && radioButton.Checked) + compressionLevel = GameRuleFile.CompressionLevel.CompressedRle; + } + + private void compressedRLECRCToolStripMenuItem_CheckedChanged(object sender, EventArgs e) + { + if (sender is ToolStripRadioButtonMenuItem radioButton && radioButton.Checked) + compressionLevel = GameRuleFile.CompressionLevel.CompressedRleCrc; + } + + private void wiiUPSVitaToolStripMenuItem_CheckedChanged(object sender, EventArgs e) + { + if (sender is ToolStripRadioButtonMenuItem radioButton && radioButton.Checked) + compressionType = GameRuleFile.CompressionType.Zlib; + } + + private void pS3ToolStripMenuItem_CheckedChanged(object sender, EventArgs e) + { + if (sender is ToolStripRadioButtonMenuItem radioButton && radioButton.Checked) + compressionType = GameRuleFile.CompressionType.Deflate; + } + + private void xbox360ToolStripMenuItem_CheckedChanged(object sender, EventArgs e) + { + if (sender is ToolStripRadioButtonMenuItem radioButton && radioButton.Checked) + compressionType = GameRuleFile.CompressionType.XMem; + } } } diff --git a/PCK-Studio/PckStudio.csproj b/PCK-Studio/PckStudio.csproj index 27f0f8c6..f44013f1 100644 --- a/PCK-Studio/PckStudio.csproj +++ b/PCK-Studio/PckStudio.csproj @@ -170,6 +170,9 @@ Component + + Component +