mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/PCK-Studio.git
synced 2026-05-21 23:27:09 +00:00
Merge pull request #46 from Sowgro/json-export
Add option to export grf file to JSON
This commit is contained in:
@@ -44,6 +44,7 @@
|
||||
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.exportToJSONToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.compressionLvlToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.levelToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.noneToolStripMenuItem = new PckStudio.ToolboxItems.ToolStripRadioButtonMenuItem();
|
||||
@@ -55,6 +56,7 @@
|
||||
this.pS3ToolStripMenuItem = new PckStudio.ToolboxItems.ToolStripRadioButtonMenuItem();
|
||||
this.xbox360ToolStripMenuItem = new PckStudio.ToolboxItems.ToolStripRadioButtonMenuItem();
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
|
||||
this.MessageContextMenu.SuspendLayout();
|
||||
this.DetailContextMenu.SuspendLayout();
|
||||
this.menuStrip1.SuspendLayout();
|
||||
@@ -77,9 +79,7 @@
|
||||
//
|
||||
// MessageContextMenu
|
||||
//
|
||||
this.MessageContextMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.addGameRuleToolStripMenuItem,
|
||||
this.removeGameRuleToolStripMenuItem});
|
||||
this.MessageContextMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.addGameRuleToolStripMenuItem, this.removeGameRuleToolStripMenuItem });
|
||||
this.MessageContextMenu.Name = "MessageContextMenu";
|
||||
this.MessageContextMenu.Size = new System.Drawing.Size(178, 48);
|
||||
//
|
||||
@@ -113,9 +113,7 @@
|
||||
//
|
||||
// DetailContextMenu
|
||||
//
|
||||
this.DetailContextMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.addToolStripMenuItem1,
|
||||
this.removeToolStripMenuItem});
|
||||
this.DetailContextMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.addToolStripMenuItem1, this.removeToolStripMenuItem });
|
||||
this.DetailContextMenu.Name = "DetailContextMenu";
|
||||
this.DetailContextMenu.Size = new System.Drawing.Size(118, 48);
|
||||
//
|
||||
@@ -158,9 +156,7 @@
|
||||
// menuStrip1
|
||||
//
|
||||
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.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.fileToolStripMenuItem, this.compressionLvlToolStripMenuItem });
|
||||
this.menuStrip1.Location = new System.Drawing.Point(25, 60);
|
||||
this.menuStrip1.Name = "menuStrip1";
|
||||
this.menuStrip1.Size = new System.Drawing.Size(450, 24);
|
||||
@@ -169,9 +165,7 @@
|
||||
//
|
||||
// fileToolStripMenuItem
|
||||
//
|
||||
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.openToolStripMenuItem,
|
||||
this.saveToolStripMenuItem});
|
||||
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.openToolStripMenuItem, this.saveToolStripMenuItem, this.exportToJSONToolStripMenuItem });
|
||||
this.fileToolStripMenuItem.ForeColor = System.Drawing.SystemColors.Menu;
|
||||
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
|
||||
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
|
||||
@@ -180,7 +174,7 @@
|
||||
// openToolStripMenuItem
|
||||
//
|
||||
this.openToolStripMenuItem.Name = "openToolStripMenuItem";
|
||||
this.openToolStripMenuItem.Size = new System.Drawing.Size(103, 22);
|
||||
this.openToolStripMenuItem.Size = new System.Drawing.Size(154, 22);
|
||||
this.openToolStripMenuItem.Text = "Open";
|
||||
this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click);
|
||||
//
|
||||
@@ -188,15 +182,20 @@
|
||||
//
|
||||
this.saveToolStripMenuItem.BackColor = System.Drawing.Color.Transparent;
|
||||
this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
|
||||
this.saveToolStripMenuItem.Size = new System.Drawing.Size(103, 22);
|
||||
this.saveToolStripMenuItem.Size = new System.Drawing.Size(154, 22);
|
||||
this.saveToolStripMenuItem.Text = "Save";
|
||||
this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click);
|
||||
//
|
||||
// exportToJSONToolStripMenuItem
|
||||
//
|
||||
this.exportToJSONToolStripMenuItem.Name = "exportToJSONToolStripMenuItem";
|
||||
this.exportToJSONToolStripMenuItem.Size = new System.Drawing.Size(154, 22);
|
||||
this.exportToJSONToolStripMenuItem.Text = "Export To JSON";
|
||||
this.exportToJSONToolStripMenuItem.Click += new System.EventHandler(this.exportToJSONToolStripMenuItem_Click);
|
||||
//
|
||||
// compressionLvlToolStripMenuItem
|
||||
//
|
||||
this.compressionLvlToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.levelToolStripMenuItem,
|
||||
this.typeToolStripMenuItem});
|
||||
this.compressionLvlToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.levelToolStripMenuItem, this.typeToolStripMenuItem });
|
||||
this.compressionLvlToolStripMenuItem.ForeColor = System.Drawing.SystemColors.Menu;
|
||||
this.compressionLvlToolStripMenuItem.Name = "compressionLvlToolStripMenuItem";
|
||||
this.compressionLvlToolStripMenuItem.Size = new System.Drawing.Size(89, 20);
|
||||
@@ -205,11 +204,7 @@
|
||||
// levelToolStripMenuItem
|
||||
//
|
||||
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.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(101, 22);
|
||||
this.levelToolStripMenuItem.Text = "Level";
|
||||
@@ -251,10 +246,7 @@
|
||||
// typeToolStripMenuItem
|
||||
//
|
||||
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.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.wiiUPSVitaToolStripMenuItem, this.pS3ToolStripMenuItem, this.xbox360ToolStripMenuItem });
|
||||
this.typeToolStripMenuItem.Name = "typeToolStripMenuItem";
|
||||
this.typeToolStripMenuItem.Size = new System.Drawing.Size(101, 22);
|
||||
this.typeToolStripMenuItem.Text = "Type";
|
||||
@@ -293,9 +285,7 @@
|
||||
//
|
||||
// tableLayoutPanel1
|
||||
//
|
||||
this.tableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableLayoutPanel1.Controls.Add(this.metroLabel1, 0, 0);
|
||||
@@ -310,6 +300,13 @@
|
||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(450, 312);
|
||||
this.tableLayoutPanel1.TabIndex = 4;
|
||||
//
|
||||
// saveFileDialog1
|
||||
//
|
||||
this.saveFileDialog1.DefaultExt = "json";
|
||||
this.saveFileDialog1.Filter = "JSON File|*.json";
|
||||
this.saveFileDialog1.Title = "Export to JSON";
|
||||
this.saveFileDialog1.FileOk += new System.ComponentModel.CancelEventHandler(this.saveFileDialog1_FileOk);
|
||||
//
|
||||
// GameRuleFileEditor
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
@@ -336,9 +333,12 @@
|
||||
this.tableLayoutPanel1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
private System.Windows.Forms.SaveFileDialog saveFileDialog1;
|
||||
|
||||
private System.Windows.Forms.ToolStripMenuItem exportToJSONToolStripMenuItem;
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.TreeView GrfTreeView;
|
||||
|
||||
@@ -17,14 +17,18 @@
|
||||
**/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using Newtonsoft.Json;
|
||||
using PckStudio.Forms.Additional_Popups.Grf;
|
||||
using OMI.Formats.GameRule;
|
||||
using PckStudio.ToolboxItems;
|
||||
using PckStudio.Controls;
|
||||
using PckStudio.Interfaces;
|
||||
using PckStudio.Internal;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
||||
namespace PckStudio.Forms.Editor
|
||||
{
|
||||
@@ -254,5 +258,58 @@ namespace PckStudio.Forms.Editor
|
||||
if (sender is ToolStripRadioButtonMenuItem radioButton && radioButton.Checked)
|
||||
EditorValue.Header.CompressionType = GameRuleFile.CompressionType.XMem;
|
||||
}
|
||||
|
||||
private void exportToJSONToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
saveFileDialog1.FileName = "gameRules.json";
|
||||
saveFileDialog1.ShowDialog();
|
||||
}
|
||||
|
||||
private JArray BuildJSONData(IReadOnlyCollection<GameRuleFile.GameRule> gameRules)
|
||||
{
|
||||
JArray data = new JArray();
|
||||
|
||||
foreach (GameRuleFile.GameRule rule in gameRules)
|
||||
{
|
||||
JObject ruleObject = new JObject();
|
||||
|
||||
ruleObject["name"] = rule.Name;
|
||||
|
||||
JObject ruleParameters = new JObject();
|
||||
|
||||
foreach (var parameter in rule.GetParameters())
|
||||
{
|
||||
ruleParameters[parameter.Key] = parameter.Value;
|
||||
}
|
||||
|
||||
if (ruleParameters.Count > 0)
|
||||
ruleObject["parameters"] = ruleParameters;
|
||||
|
||||
JArray childRules = BuildJSONData(rule.GetRules());
|
||||
|
||||
if(childRules.Count > 0)
|
||||
ruleObject["rules"] = childRules;
|
||||
|
||||
data.Add(ruleObject);
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
private void saveFileDialog1_FileOk(object sender, CancelEventArgs e)
|
||||
{
|
||||
if (saveFileDialog1.FileName == "")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
using (StreamWriter file = File.CreateText(saveFileDialog1.FileName))
|
||||
using (JsonTextWriter writer = new JsonTextWriter(file))
|
||||
{
|
||||
JArray data = BuildJSONData(EditorValue.Root.GetRules());
|
||||
writer.Formatting = Formatting.Indented;
|
||||
data.WriteTo(writer);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,6 +126,9 @@
|
||||
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>348, 17</value>
|
||||
</metadata>
|
||||
<metadata name="saveFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>454, 18</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
|
||||
2
Vendor/OMI-Lib
vendored
2
Vendor/OMI-Lib
vendored
Submodule Vendor/OMI-Lib updated: 571a72c283...54b25c64bb
Reference in New Issue
Block a user