Core - Add AbstractColorContainer.cs

This commit is contained in:
miku-666
2025-12-14 04:54:12 +01:00
parent 8180623964
commit 997b6e5049
9 changed files with 290 additions and 582 deletions

View File

@@ -48,6 +48,7 @@ using PckStudio.Core.IO.PckAudio;
using PckStudio.Core.IO._3DST;
using PckStudio.Core.Misc;
using PckStudio.Core.DLC;
using PckStudio.Core.Colors;
namespace PckStudio.Controls
{
@@ -484,12 +485,15 @@ namespace PckStudio.Controls
private void HandleColourFile(PckAsset asset)
{
ColorContainer colorContainer = asset.GetData(new COLFileReader());
ISaveContext<ColorContainer> saveContext = new DelegatedSaveContext<ColorContainer>(Settings.Default.AutoSaveChanges, (colorContainer) =>
AbstractColorContainer abstractColorContainer = AbstractColorContainer.FromColorContainer(asset.GetData(new COLFileReader()));
ISaveContext<AbstractColorContainer> saveContext = new DelegatedSaveContext<AbstractColorContainer>(Settings.Default.AutoSaveChanges, (newColorContainer) =>
{
ColorContainer colorContainer = new ColorContainer();
colorContainer.Colors.AddRange(newColorContainer.Colors.Select(kv => new ColorContainer.Color() { Name = kv.Key, ColorPallette = kv.Value }));
colorContainer.WaterColors.AddRange(newColorContainer.WaterColors.Select(kv => new ColorContainer.WaterColor() { Name = kv.Key, SurfaceColor = kv.Value.Surface, FogColor = kv.Value.Fog, UnderwaterColor = kv.Value.Underwater }));
asset.SetData(new COLFileWriter(colorContainer));
});
using COLEditor diag = new COLEditor(colorContainer, saveContext);
using COLEditor diag = new COLEditor(abstractColorContainer, saveContext);
_wasModified = diag.ShowDialog(this) == DialogResult.OK;
}

View File

@@ -17,6 +17,7 @@
**/
using System;
using System.Drawing;
using System.Reflection;
using System.Windows.Forms;
using PckStudio.Core.Extensions;
@@ -24,8 +25,6 @@ namespace PckStudio.Forms.Additional_Popups.Animation
{
internal partial class FilterPrompt : UserControl
{
public Color PageBackColor { get; set; } = Color.FromArgb(64, 64, 64);
private object _selectedItem;
public object SelectedItem => _selectedItem;
@@ -53,15 +52,21 @@ namespace PckStudio.Forms.Additional_Popups.Animation
continue;
pageView.BeginUpdate();
pageView.ContextMenuStrip = backingView.ContextMenuStrip;
pageView.ImageList = backingView.ImageList;
pageView.Nodes.Clear();
FilterPredicate filerPredicate = tabpage.Tag as FilterPredicate;
pageView.Show();
FilterPredicate filerPredicate = tabpage.Tag as FilterPredicate;
foreach (TreeNode node in backingView.Nodes.GetLeafNodes())
{
if (string.IsNullOrEmpty(filterTextBox.Text) ||
node.FullPath.ToLower().Contains(filterTextBox.Text.ToLower()) ||
(filerPredicate?.Invoke(filterTextBox.Text, node.Tag) ?? false))
{
pageView.Nodes.BuildNodeTreeBySeperator(node.FullPath, backingView.PathSeparator);
TreeNode n = pageView.Nodes.BuildNodeTreeBySeperator(node.FullPath, backingView.PathSeparator);
n.Tag = node.Tag;
n.ImageIndex = node.ImageIndex;
n.SelectedImageIndex = node.SelectedImageIndex;
}
}
pageView.EndUpdate();
@@ -78,8 +83,9 @@ namespace PckStudio.Forms.Additional_Popups.Animation
var pageView = new TreeView()
{
Dock = DockStyle.Fill,
BackColor = PageBackColor,
};
BackColor = BackColor,
ForeColor = ForeColor,
};
pageView.AfterSelect += (sender, e) =>
{
_selectedItem = e.Node.Tag;
@@ -88,7 +94,8 @@ namespace PckStudio.Forms.Additional_Popups.Animation
var backingView = new TreeView()
{
Dock = DockStyle.Fill,
BackColor = PageBackColor,
BackColor = BackColor,
ForeColor = ForeColor,
};
pageView.Tag = backingView;
page.Controls.Add(pageView);

View File

@@ -34,8 +34,7 @@ namespace PckStudio.Forms.Editor
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(COLEditor));
this.metroPanel1 = new MetroFramework.Controls.MetroPanel();
this.metroTextBox1 = new MetroFramework.Controls.MetroTextBox();
this.metroLabel2 = new MetroFramework.Controls.MetroLabel();
this.filterPrompt = new PckStudio.Forms.Additional_Popups.Animation.FilterPrompt();
this.setColorBtn = new MetroFramework.Controls.MetroButton();
this.blueUpDown = new System.Windows.Forms.NumericUpDown();
this.greenUpDown = new System.Windows.Forms.NumericUpDown();
@@ -67,21 +66,14 @@ namespace PckStudio.Forms.Editor
this.TU54ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.TU69ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this._1_9_1ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.waterTab = new System.Windows.Forms.TabPage();
this.waterTreeView = new System.Windows.Forms.TreeView();
this.viewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.compactViewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ColorContextMenu = new MetroFramework.Controls.MetroContextMenu(this.components);
this.copyColorToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.pasteColorToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.restoreOriginalColorToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.addColorToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.removeColorToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.underwaterTreeView = new System.Windows.Forms.TreeView();
this.fogTreeView = new System.Windows.Forms.TreeView();
this.colorsTab = new System.Windows.Forms.TabPage();
this.colorTreeView = new System.Windows.Forms.TreeView();
this.tabControl = new MetroFramework.Controls.MetroTabControl();
this.underwaterTab = new System.Windows.Forms.TabPage();
this.fogTab = new System.Windows.Forms.TabPage();
this.metroPanel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.blueUpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.greenUpDown)).BeginInit();
@@ -89,18 +81,12 @@ namespace PckStudio.Forms.Editor
((System.ComponentModel.ISupportInitialize)(this.alphaUpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.menuStrip.SuspendLayout();
this.waterTab.SuspendLayout();
this.ColorContextMenu.SuspendLayout();
this.colorsTab.SuspendLayout();
this.tabControl.SuspendLayout();
this.underwaterTab.SuspendLayout();
this.fogTab.SuspendLayout();
this.SuspendLayout();
//
// metroPanel1
//
this.metroPanel1.Controls.Add(this.metroTextBox1);
this.metroPanel1.Controls.Add(this.metroLabel2);
this.metroPanel1.Controls.Add(this.filterPrompt);
this.metroPanel1.Controls.Add(this.setColorBtn);
this.metroPanel1.Controls.Add(this.blueUpDown);
this.metroPanel1.Controls.Add(this.greenUpDown);
@@ -124,41 +110,13 @@ namespace PckStudio.Forms.Editor
this.metroPanel1.VerticalScrollbarHighlightOnWheel = false;
this.metroPanel1.VerticalScrollbarSize = 10;
//
// metroTextBox1
// filterPrompt
//
//
//
//
this.metroTextBox1.CustomButton.Image = ((System.Drawing.Image)(resources.GetObject("resource.Image")));
this.metroTextBox1.CustomButton.Location = ((System.Drawing.Point)(resources.GetObject("resource.Location")));
this.metroTextBox1.CustomButton.Name = "";
this.metroTextBox1.CustomButton.Size = ((System.Drawing.Size)(resources.GetObject("resource.Size")));
this.metroTextBox1.CustomButton.Style = MetroFramework.MetroColorStyle.Blue;
this.metroTextBox1.CustomButton.TabIndex = ((int)(resources.GetObject("resource.TabIndex")));
this.metroTextBox1.CustomButton.Theme = MetroFramework.MetroThemeStyle.Light;
this.metroTextBox1.CustomButton.UseSelectable = true;
this.metroTextBox1.CustomButton.Visible = ((bool)(resources.GetObject("resource.Visible")));
this.metroTextBox1.Lines = new string[0];
resources.ApplyResources(this.metroTextBox1, "metroTextBox1");
this.metroTextBox1.MaxLength = 32767;
this.metroTextBox1.Name = "metroTextBox1";
this.metroTextBox1.PasswordChar = '\0';
this.metroTextBox1.ScrollBars = System.Windows.Forms.ScrollBars.None;
this.metroTextBox1.SelectedText = "";
this.metroTextBox1.SelectionLength = 0;
this.metroTextBox1.SelectionStart = 0;
this.metroTextBox1.ShortcutsEnabled = true;
this.metroTextBox1.Theme = MetroFramework.MetroThemeStyle.Dark;
this.metroTextBox1.UseSelectable = true;
this.metroTextBox1.WaterMarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(109)))), ((int)(((byte)(109)))), ((int)(((byte)(109)))));
this.metroTextBox1.WaterMarkFont = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Pixel);
this.metroTextBox1.TextChanged += new System.EventHandler(this.metroTextBox1_TextChanged);
//
// metroLabel2
//
resources.ApplyResources(this.metroLabel2, "metroLabel2");
this.metroLabel2.Name = "metroLabel2";
this.metroLabel2.Theme = MetroFramework.MetroThemeStyle.Dark;
this.filterPrompt.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18)))));
this.filterPrompt.ForeColor = System.Drawing.SystemColors.Control;
resources.ApplyResources(this.filterPrompt, "filterPrompt");
this.filterPrompt.Name = "filterPrompt";
this.filterPrompt.OnSelectedItemChanged += new System.EventHandler(this.filterPrompt_OnSelectedItemChanged);
//
// setColorBtn
//
@@ -247,16 +205,16 @@ namespace PckStudio.Forms.Editor
//
//
//
this.colorTextbox.CustomButton.Image = ((System.Drawing.Image)(resources.GetObject("resource.Image1")));
this.colorTextbox.CustomButton.Image = ((System.Drawing.Image)(resources.GetObject("resource.Image")));
this.colorTextbox.CustomButton.ImeMode = ((System.Windows.Forms.ImeMode)(resources.GetObject("resource.ImeMode")));
this.colorTextbox.CustomButton.Location = ((System.Drawing.Point)(resources.GetObject("resource.Location1")));
this.colorTextbox.CustomButton.Location = ((System.Drawing.Point)(resources.GetObject("resource.Location")));
this.colorTextbox.CustomButton.Name = "";
this.colorTextbox.CustomButton.Size = ((System.Drawing.Size)(resources.GetObject("resource.Size1")));
this.colorTextbox.CustomButton.Size = ((System.Drawing.Size)(resources.GetObject("resource.Size")));
this.colorTextbox.CustomButton.Style = MetroFramework.MetroColorStyle.Blue;
this.colorTextbox.CustomButton.TabIndex = ((int)(resources.GetObject("resource.TabIndex1")));
this.colorTextbox.CustomButton.TabIndex = ((int)(resources.GetObject("resource.TabIndex")));
this.colorTextbox.CustomButton.Theme = MetroFramework.MetroThemeStyle.Light;
this.colorTextbox.CustomButton.UseSelectable = true;
this.colorTextbox.CustomButton.Visible = ((bool)(resources.GetObject("resource.Visible1")));
this.colorTextbox.CustomButton.Visible = ((bool)(resources.GetObject("resource.Visible")));
this.colorTextbox.Lines = new string[0];
resources.ApplyResources(this.colorTextbox, "colorTextbox");
this.colorTextbox.MaxLength = 6;
@@ -293,7 +251,8 @@ namespace PckStudio.Forms.Editor
this.menuStrip.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.fileToolStripMenuItem,
this.toolsToolStripMenuItem});
this.toolsToolStripMenuItem,
this.viewToolStripMenuItem});
this.menuStrip.Name = "menuStrip";
//
// fileToolStripMenuItem
@@ -409,22 +368,21 @@ namespace PckStudio.Forms.Editor
this._1_9_1ToolStripMenuItem.Name = "_1_9_1ToolStripMenuItem";
resources.ApplyResources(this._1_9_1ToolStripMenuItem, "_1_9_1ToolStripMenuItem");
//
// waterTab
// viewToolStripMenuItem
//
this.waterTab.BackColor = System.Drawing.SystemColors.WindowFrame;
this.waterTab.Controls.Add(this.waterTreeView);
resources.ApplyResources(this.waterTab, "waterTab");
this.waterTab.Name = "waterTab";
this.viewToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.compactViewToolStripMenuItem});
this.viewToolStripMenuItem.ForeColor = System.Drawing.Color.White;
this.viewToolStripMenuItem.Name = "viewToolStripMenuItem";
resources.ApplyResources(this.viewToolStripMenuItem, "viewToolStripMenuItem");
//
// waterTreeView
// compactViewToolStripMenuItem
//
this.waterTreeView.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.waterTreeView.ContextMenuStrip = this.ColorContextMenu;
resources.ApplyResources(this.waterTreeView, "waterTreeView");
this.waterTreeView.ForeColor = System.Drawing.Color.White;
this.waterTreeView.Name = "waterTreeView";
this.waterTreeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView2_AfterSelect);
this.waterTreeView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.treeView2_KeyDown);
this.compactViewToolStripMenuItem.BackColor = System.Drawing.SystemColors.Control;
this.compactViewToolStripMenuItem.CheckOnClick = true;
this.compactViewToolStripMenuItem.Name = "compactViewToolStripMenuItem";
resources.ApplyResources(this.compactViewToolStripMenuItem, "compactViewToolStripMenuItem");
this.compactViewToolStripMenuItem.CheckStateChanged += new System.EventHandler(this.compactViewToolStripMenuItem_CheckStateChanged);
//
// ColorContextMenu
//
@@ -472,76 +430,11 @@ namespace PckStudio.Forms.Editor
resources.ApplyResources(this.removeColorToolStripMenuItem, "removeColorToolStripMenuItem");
this.removeColorToolStripMenuItem.Click += new System.EventHandler(this.removeColorToolStripMenuItem_Click);
//
// underwaterTreeView
//
this.underwaterTreeView.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.underwaterTreeView.ContextMenuStrip = this.ColorContextMenu;
this.underwaterTreeView.ForeColor = System.Drawing.Color.White;
resources.ApplyResources(this.underwaterTreeView, "underwaterTreeView");
this.underwaterTreeView.Name = "underwaterTreeView";
this.underwaterTreeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView3_AfterSelect);
this.underwaterTreeView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.treeView3_KeyDown);
//
// fogTreeView
//
this.fogTreeView.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.fogTreeView.ContextMenuStrip = this.ColorContextMenu;
this.fogTreeView.ForeColor = System.Drawing.Color.White;
resources.ApplyResources(this.fogTreeView, "fogTreeView");
this.fogTreeView.Name = "fogTreeView";
this.fogTreeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView4_AfterSelect);
this.fogTreeView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.treeView4_KeyDown);
//
// colorsTab
//
this.colorsTab.BackColor = System.Drawing.SystemColors.WindowFrame;
this.colorsTab.Controls.Add(this.colorTreeView);
resources.ApplyResources(this.colorsTab, "colorsTab");
this.colorsTab.Name = "colorsTab";
//
// colorTreeView
//
this.colorTreeView.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.colorTreeView.ContextMenuStrip = this.ColorContextMenu;
resources.ApplyResources(this.colorTreeView, "colorTreeView");
this.colorTreeView.ForeColor = System.Drawing.Color.White;
this.colorTreeView.Name = "colorTreeView";
this.colorTreeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView1_AfterSelect);
this.colorTreeView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.treeView1_KeyDown);
//
// tabControl
//
resources.ApplyResources(this.tabControl, "tabControl");
this.tabControl.Controls.Add(this.colorsTab);
this.tabControl.Controls.Add(this.waterTab);
this.tabControl.Controls.Add(this.underwaterTab);
this.tabControl.Controls.Add(this.fogTab);
this.tabControl.Name = "tabControl";
this.tabControl.SelectedIndex = 0;
this.tabControl.Style = MetroFramework.MetroColorStyle.White;
this.tabControl.Theme = MetroFramework.MetroThemeStyle.Dark;
this.tabControl.UseSelectable = true;
//
// underwaterTab
//
this.underwaterTab.BackColor = System.Drawing.SystemColors.WindowFrame;
this.underwaterTab.Controls.Add(this.underwaterTreeView);
resources.ApplyResources(this.underwaterTab, "underwaterTab");
this.underwaterTab.Name = "underwaterTab";
//
// fogTab
//
this.fogTab.BackColor = System.Drawing.SystemColors.WindowFrame;
this.fogTab.Controls.Add(this.fogTreeView);
resources.ApplyResources(this.fogTab, "fogTab");
this.fogTab.Name = "fogTab";
//
// COLEditor
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.menuStrip);
this.Controls.Add(this.tabControl);
this.Controls.Add(this.metroPanel1);
this.ForeColor = System.Drawing.SystemColors.ControlText;
this.Name = "COLEditor";
@@ -554,12 +447,7 @@ namespace PckStudio.Forms.Editor
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.menuStrip.ResumeLayout(false);
this.menuStrip.PerformLayout();
this.waterTab.ResumeLayout(false);
this.ColorContextMenu.ResumeLayout(false);
this.colorsTab.ResumeLayout(false);
this.tabControl.ResumeLayout(false);
this.underwaterTab.ResumeLayout(false);
this.fogTab.ResumeLayout(false);
this.ResumeLayout(false);
}
@@ -567,10 +455,6 @@ namespace PckStudio.Forms.Editor
#endregion
private MetroFramework.Controls.MetroPanel metroPanel1;
private TreeView colorTreeView;
private TreeView waterTreeView;
private TreeView fogTreeView;
private TreeView underwaterTreeView;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.MenuStrip menuStrip;
private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
@@ -580,12 +464,7 @@ namespace PckStudio.Forms.Editor
private MetroFramework.Controls.MetroLabel redLabel;
private MetroFramework.Controls.MetroLabel alphaLabel;
private System.Windows.Forms.NumericUpDown alphaUpDown;
private TabPage waterTab;
private TabPage colorsTab;
private MetroFramework.Controls.MetroTabControl tabControl;
private MetroFramework.Controls.MetroButton setColorBtn;
private TabPage underwaterTab;
private TabPage fogTab;
private NumericUpDown blueUpDown;
private NumericUpDown greenUpDown;
private NumericUpDown redUpDown;
@@ -593,8 +472,6 @@ namespace PckStudio.Forms.Editor
private MetroFramework.Controls.MetroLabel metroLabel1;
private MetroFramework.Controls.MetroContextMenu ColorContextMenu;
private ToolStripMenuItem restoreOriginalColorToolStripMenuItem;
private MetroFramework.Controls.MetroTextBox metroTextBox1;
private MetroFramework.Controls.MetroLabel metroLabel2;
private ToolStripMenuItem copyColorToolStripMenuItem;
private ToolStripMenuItem pasteColorToolStripMenuItem;
private ToolStripMenuItem toolsToolStripMenuItem;
@@ -615,5 +492,8 @@ namespace PckStudio.Forms.Editor
private ToolStripMenuItem stripPS4BiomesToolStripMenuItem;
private ToolStripMenuItem addColorToolStripMenuItem;
private ToolStripMenuItem removeColorToolStripMenuItem;
private Additional_Popups.Animation.FilterPrompt filterPrompt;
private ToolStripMenuItem viewToolStripMenuItem;
private ToolStripMenuItem compactViewToolStripMenuItem;
}
}

View File

@@ -8,15 +8,16 @@ using OMI.Formats.Color;
using OMI.Workers.Color;
using PckStudio.Core.Extensions;
using PckStudio.Core.Colors;
using PckStudio.Properties;
using PckStudio.Controls;
using PckStudio.Interfaces;
namespace PckStudio.Forms.Editor
{
public partial class COLEditor : EditorForm<ColorContainer>
public partial class COLEditor : EditorForm<AbstractColorContainer>
{
ColorContainer _defaultColourfile;
AbstractColorContainer _defaultColourfile;
string _clipboard_color = "#FFFFFF";
TreeView colorTreeView;
@@ -24,7 +25,7 @@ namespace PckStudio.Forms.Editor
TreeView underwaterTreeView;
TreeView fogTreeView;
private static readonly ICollection<string> PS4Biomes = new List<string>
private static readonly ICollection<string> PS4BiomeColors = new List<string>
{
"bamboo_jungle",
"bamboo_jungle_hills",
@@ -33,7 +34,7 @@ namespace PckStudio.Forms.Editor
"mega_taiga_mutated"
};
public COLEditor(ColorContainer colorContainer, ISaveContext<ColorContainer> saveContext)
public COLEditor(AbstractColorContainer colorContainer, ISaveContext<AbstractColorContainer> saveContext)
: base(colorContainer, saveContext)
{
InitializeComponent();
@@ -64,29 +65,34 @@ namespace PckStudio.Forms.Editor
underwaterTreeView.KeyDown += treeView1_KeyDown;
fogTreeView.KeyDown += treeView1_KeyDown;
colorTreeView.ContextMenuStrip = ColorContextMenu;
waterTreeView.ContextMenuStrip = ColorContextMenu;
underwaterTreeView.ContextMenuStrip = ColorContextMenu;
fogTreeView.ContextMenuStrip = ColorContextMenu;
BuildTreeViews(EditorValue);
}
private void BuildTreeViews(ColorContainer c)
private void BuildTreeViews(AbstractColorContainer c)
{
colorTreeView.Nodes.Clear();
waterTreeView.Nodes.Clear();
underwaterTreeView.Nodes.Clear();
fogTreeView.Nodes.Clear();
int nodeDepth = Convert.ToInt32(compactViewToolStripMenuItem.Checked);
c.Colors.ForEach(col =>
{
TreeNode n = colorTreeView.Nodes.BuildNodeTreeBySeperator(col.Name, '_', nodeDepth);
//n.Text = n.Text.Replace('_', '.');
n.Tag = col;
});
c.WaterColors.ForEach(col =>
foreach (KeyValuePair<string, Color> col in c.Colors)
{
waterTreeView.Nodes.BuildNodeTreeBySeperator(col.Name, '_', nodeDepth).Tag = col;
underwaterTreeView.Nodes.BuildNodeTreeBySeperator(col.Name, '_', nodeDepth).Tag = col;
fogTreeView.Nodes.BuildNodeTreeBySeperator(col.Name, '_', nodeDepth).Tag = col;
});
TreeNode n = colorTreeView.Nodes.BuildNodeTreeBySeperator(col.Key, '_', nodeDepth);
n.Tag = col;
}
foreach (KeyValuePair<string, (Color surface, Color underwater, Color fog)> col in c.WaterColors)
{
waterTreeView.Nodes.BuildNodeTreeBySeperator(col.Key, '_', 0).Tag = col;
underwaterTreeView.Nodes.BuildNodeTreeBySeperator(col.Key, '_', 0).Tag = col;
fogTreeView.Nodes.BuildNodeTreeBySeperator(col.Key, '_', 0).Tag = col;
}
filterPrompt.Update();
}
@@ -120,7 +126,7 @@ namespace PckStudio.Forms.Editor
var reader = new COLFileReader();
using (var stream = new MemoryStream(colorData))
{
_defaultColourfile = reader.FromStream(stream);
_defaultColourfile = AbstractColorContainer.FromColorContainer(reader.FromStream(stream));
}
BuildTreeViews(_defaultColourfile);
@@ -181,18 +187,18 @@ namespace PckStudio.Forms.Editor
{
Color color = Color.FromArgb(filterPrompt.SelectedTabIndex == 1 ? (int)alphaUpDown.Value : 255, (int)redUpDown.Value, (int)greenUpDown.Value, (int)blueUpDown.Value);
if (filterPrompt.SelectedTabIndex == 0 && filterPrompt.SelectedItem is ColorContainer.Color colorEntry)
if (filterPrompt.SelectedTabIndex == 0 && filterPrompt.SelectedItem is KeyValuePair<string, Color> colorEntry)
{
colorEntry.ColorPallette = color;
EditorValue.Colors[colorEntry.Key] = color;
}
else if (filterPrompt.SelectedItem is ColorContainer.WaterColor waterColorEntry)
else if (filterPrompt.SelectedItem is KeyValuePair<string, (Color Surface,Color Underwater, Color Fog)> waterColorEntry)
{
if (filterPrompt.SelectedTabIndex == 1)
waterColorEntry.SurfaceColor = color;
EditorValue.WaterColors[waterColorEntry.Key] = (color, waterColorEntry.Value.Underwater, waterColorEntry.Value.Fog);
else if (filterPrompt.SelectedTabIndex == 2)
waterColorEntry.UnderwaterColor = color;
EditorValue.WaterColors[waterColorEntry.Key] = (waterColorEntry.Value.Surface, color, waterColorEntry.Value.Fog);
else
waterColorEntry.FogColor = color;
EditorValue.WaterColors[waterColorEntry.Key] = (waterColorEntry.Value.Surface, waterColorEntry.Value.Underwater, color);
}
pictureBox1.BackColor = color;
@@ -207,74 +213,64 @@ namespace PckStudio.Forms.Editor
colorPick.SolidColorOnly = filterPrompt.SelectedTabIndex == 0;
if (colorPick.ShowDialog(this) != DialogResult.OK)
return;
if (filterPrompt.SelectedTabIndex == 1 && filterPrompt.SelectedItem is ColorContainer.WaterColor waterColor)
{
// preserves the alpha so the user can handle it since the color picker doesn't support alpha
waterColor.SurfaceColor = Color.FromArgb(waterColor.SurfaceColor.A, colorPick.Color);
SetColor(waterColor.SurfaceColor);
}
else if (filterPrompt.SelectedTabIndex == 2 && filterPrompt.SelectedItem is ColorContainer.WaterColor underwaterColor)
{
underwaterColor.UnderwaterColor = Color.FromArgb(0, colorPick.Color);
SetColor(underwaterColor.UnderwaterColor);
}
else if (filterPrompt.SelectedTabIndex == 3 && filterPrompt.SelectedItem is ColorContainer.WaterColor fogColor)
{
fogColor.FogColor = Color.FromArgb(0, colorPick.Color);
SetColor(fogColor.FogColor);
}
else if (filterPrompt.SelectedTabIndex == 0 && filterPrompt.SelectedItem is ColorContainer.Color color)
if (filterPrompt.SelectedTabIndex == 0 && filterPrompt.SelectedItem is ColorContainer.Color color)
{
color.ColorPallette = colorPick.Color;
SetColor(color.ColorPallette);
return;
}
if (filterPrompt.SelectedItem is KeyValuePair<string, (Color Surface,Color Underwater, Color Fog)> waterColorEntry)
{
Color wColor =
filterPrompt.SelectedTabIndex == 1 ? waterColorEntry.Value.Surface :
filterPrompt.SelectedTabIndex == 2 ? waterColorEntry.Value.Underwater : waterColorEntry.Value.Fog;
if (filterPrompt.SelectedTabIndex == 1)
EditorValue.WaterColors[waterColorEntry.Key] = (wColor, waterColorEntry.Value.Underwater, waterColorEntry.Value.Fog);
else if (filterPrompt.SelectedTabIndex == 2)
EditorValue.WaterColors[waterColorEntry.Key] = (waterColorEntry.Value.Surface, wColor, waterColorEntry.Value.Fog);
else
EditorValue.WaterColors[waterColorEntry.Key] = (waterColorEntry.Value.Surface, waterColorEntry.Value.Underwater, wColor);
}
}
private void alpha_ValueChanged(object sender, EventArgs e)
{
var colorEntry = (ColorContainer.WaterColor)waterTreeView.SelectedNode.Tag;
pictureBox1.BackColor = colorEntry.SurfaceColor = Color.FromArgb((int)alphaUpDown.Value, colorEntry.SurfaceColor);
var colorEntry = (KeyValuePair<string, (Color Surface,Color Underwater, Color Fog)>)waterTreeView.SelectedNode.Tag;
EditorValue.WaterColors[colorEntry.Key] = colorEntry.Value;
pictureBox1.BackColor = Color.FromArgb((int)alphaUpDown.Value, colorEntry.Value.Surface);
}
private void restoreOriginalColorToolStripMenuItem_Click(object sender, EventArgs e)
{
//if (tabControl.SelectedTab is var tab)
//{
// Color color = Color.Empty;
if (filterPrompt.SelectedItem is KeyValuePair<string, Color> color)
{
if (!_defaultColourfile.Colors.TryGetValue(color.Key, out Color col_entry))
{
HideColorEdit();
return;
}
EditorValue.Colors[color.Key] = col_entry;
SetColor(col_entry);
}
if (filterPrompt.SelectedItem is KeyValuePair<string, (Color Surface, Color Underwater, Color Fog)> waterColor)
{
if (_defaultColourfile.WaterColors.TryGetValue(waterColor.Key, out (Color Surface, Color Underwater, Color Fog) waterColorEntry))
{
HideColorEdit();
return;
}
// if (tab == colorsTab)
// {
// ColorContainer.Color col_entry = _defaultColourfile.Colors.Find(color => color.Name == node.Text);
// if (col_entry == null)
// return;
// color = col_entry.ColorPallette;
// colorTextbox.Text = ColorTranslator.ToHtml(color).TrimStart('#');
// }
// else
// {
// ColorContainer.WaterColor waterEntry = _defaultColourfile.WaterColors.Find(color => color.Name == node.Text);
// if (waterEntry == null)
// return;
// color =
// tab == waterTab ? waterEntry.SurfaceColor :
// tab == underwaterTab ? waterEntry.UnderwaterColor : waterEntry.FogColor;
// if (tab == waterTab)
// {
// alphaUpDown.Value = color.A;
// }
// redUpDown.Value = color.R;
// greenUpDown.Value = color.G;
// blueUpDown.Value = color.B;
// }
// pictureBox1.BackColor = Color.FromArgb(tab == colorsTab ? 0xFF : color.A, color);
//}
Color wColor =
filterPrompt.SelectedTabIndex == 1 ? waterColorEntry.Surface :
filterPrompt.SelectedTabIndex == 2 ? waterColorEntry.Underwater: waterColorEntry.Fog;
if (filterPrompt.SelectedTabIndex == 1)
EditorValue.WaterColors[waterColor.Key] = (wColor, waterColorEntry.Underwater, waterColorEntry.Fog);
else if (filterPrompt.SelectedTabIndex == 2)
EditorValue.WaterColors[waterColor.Key] = (waterColorEntry.Surface, wColor, waterColorEntry.Fog);
else
EditorValue.WaterColors[waterColor.Key] = (waterColorEntry.Surface, waterColorEntry.Underwater, wColor);
SetColor(wColor);
}
}
private void copyColorToolStripMenuItem_Click(object sender, EventArgs e)
@@ -314,7 +310,11 @@ namespace PckStudio.Forms.Editor
private void stripPS4BiomesToolStripMenuItem_Click(object sender, EventArgs e)
{
EditorValue.WaterColors.RemoveAll(col => PS4Biomes.Contains(col.Name));
foreach (string ps4BiomeColor in PS4BiomeColors)
{
if (EditorValue.WaterColors.ContainsKey(ps4BiomeColor))
EditorValue.WaterColors.Remove(ps4BiomeColor);
}
BuildTreeViews(EditorValue);
}
@@ -328,16 +328,12 @@ namespace PckStudio.Forms.Editor
prompt.contextLabel.Text = "Insert the name of the color you would like to add";
if (prompt.ShowDialog(this) == DialogResult.OK)
{
ColorContainer.Color entry = new ColorContainer.Color();
entry.Name = prompt.NewText;
entry.ColorPallette = Color.White;
if (EditorValue.Colors.Find(c => c.Name == entry.Name) != null)
if (EditorValue.Colors.ContainsKey(prompt.Name))
{
MessageBox.Show(this, $"\"{entry.Name}\" already exists in this color table", "Color not added");
MessageBox.Show(this, $"\"{prompt.Name}\" already exists in this color table", "Color not added");
}
EditorValue.Colors.Add(entry);
EditorValue.Colors.Add(prompt.Name, Color.White);
BuildTreeViews(EditorValue);
}
}
@@ -348,7 +344,7 @@ namespace PckStudio.Forms.Editor
{
if (filterPrompt.SelectedItem is ColorContainer.Color color)
{
EditorValue.Colors.Remove(color);
EditorValue.Colors.Remove(color.Name);
}
}
@@ -360,21 +356,45 @@ namespace PckStudio.Forms.Editor
pictureBox1.BackColor = Color.FromArgb(color.A == 0 ? 0xff : color.A, color);
colorTextbox.Text = color.ToArgb().ToString("X06");
ShowColorEdit();
alphaUpDown.Visible = color.A != 0;
}
private void filterPrompt_OnSelectedItemChanged(object sender, EventArgs e)
{
if (filterPrompt.SelectedItem is ColorContainer.Color col)
if (filterPrompt.SelectedItem is KeyValuePair<string, Color> col)
{
SetColor(col?.ColorPallette ?? Color.AliceBlue);
SetColor(col.Value);
return;
}
if (filterPrompt.SelectedItem is ColorContainer.WaterColor waterColor)
if (filterPrompt.SelectedItem is KeyValuePair<string, (Color Surface,Color Underwater, Color Fog)> waterColor)
{
SetColor(waterColor?.SurfaceColor ?? Color.AliceBlue);
SetColor(waterColor.Value.Surface);
return;
}
SetColor(Color.Black);
HideColorEdit();
}
private void HideColorEdit()
{
redUpDown.Visible = false;
greenUpDown.Visible = false;
blueUpDown.Visible = false;
alphaUpDown.Visible = false;
pictureBox1.Visible = false;
colorTextbox.Visible = false;
}
private void ShowColorEdit()
{
redUpDown.Visible = true;
greenUpDown.Visible = true;
blueUpDown.Visible = true;
alphaUpDown.Visible = true;
pictureBox1.Visible = true;
colorTextbox.Visible = true;
}
private void compactViewToolStripMenuItem_CheckStateChanged(object sender, EventArgs e)

View File

@@ -117,71 +117,28 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="resource.Image" type="System.Resources.ResXNullRef, System.Windows.Forms">
<value />
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="resource.Location" type="System.Drawing.Point, System.Drawing">
<value>113, 1</value>
<data name="filterPrompt.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 34</value>
</data>
<data name="resource.Size" type="System.Drawing.Size, System.Drawing">
<value>21, 21</value>
<data name="filterPrompt.Size" type="System.Drawing.Size, System.Drawing">
<value>323, 557</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="resource.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="resource.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="metroTextBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>101, 27</value>
</data>
<data name="metroTextBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>135, 23</value>
</data>
<data name="metroTextBox1.TabIndex" type="System.Int32, mscorlib">
<value>24</value>
</data>
<data name="&gt;&gt;metroTextBox1.Name" xml:space="preserve">
<value>metroTextBox1</value>
</data>
<data name="&gt;&gt;metroTextBox1.Type" xml:space="preserve">
<value>MetroFramework.Controls.MetroTextBox, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a</value>
</data>
<data name="&gt;&gt;metroTextBox1.Parent" xml:space="preserve">
<value>metroPanel1</value>
</data>
<data name="&gt;&gt;metroTextBox1.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="metroLabel2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="metroLabel2.Location" type="System.Drawing.Point, System.Drawing">
<value>62, 27</value>
</data>
<data name="metroLabel2.Size" type="System.Drawing.Size, System.Drawing">
<value>46, 19</value>
</data>
<data name="metroLabel2.TabIndex" type="System.Int32, mscorlib">
<data name="filterPrompt.TabIndex" type="System.Int32, mscorlib">
<value>23</value>
</data>
<data name="metroLabel2.Text" xml:space="preserve">
<value>Filter: </value>
<data name="&gt;&gt;filterPrompt.Name" xml:space="preserve">
<value>filterPrompt</value>
</data>
<data name="&gt;&gt;metroLabel2.Name" xml:space="preserve">
<value>metroLabel2</value>
<data name="&gt;&gt;filterPrompt.Type" xml:space="preserve">
<value>PckStudio.Forms.Additional_Popups.Animation.FilterPrompt, PCK-Studio, Version=7.0.0.2, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;metroLabel2.Type" xml:space="preserve">
<value>MetroFramework.Controls.MetroLabel, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a</value>
</data>
<data name="&gt;&gt;metroLabel2.Parent" xml:space="preserve">
<data name="&gt;&gt;filterPrompt.Parent" xml:space="preserve">
<value>metroPanel1</value>
</data>
<data name="&gt;&gt;metroLabel2.ZOrder" xml:space="preserve">
<value>3</value>
<data name="&gt;&gt;filterPrompt.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="setColorBtn.Location" type="System.Drawing.Point, System.Drawing">
<value>400, 290</value>
@@ -205,7 +162,7 @@
<value>metroPanel1</value>
</data>
<data name="&gt;&gt;setColorBtn.ZOrder" xml:space="preserve">
<value>4</value>
<value>3</value>
</data>
<data name="blueUpDown.Location" type="System.Drawing.Point, System.Drawing">
<value>400, 397</value>
@@ -226,7 +183,7 @@
<value>metroPanel1</value>
</data>
<data name="&gt;&gt;blueUpDown.ZOrder" xml:space="preserve">
<value>5</value>
<value>4</value>
</data>
<data name="greenUpDown.Location" type="System.Drawing.Point, System.Drawing">
<value>400, 371</value>
@@ -247,7 +204,7 @@
<value>metroPanel1</value>
</data>
<data name="&gt;&gt;greenUpDown.ZOrder" xml:space="preserve">
<value>6</value>
<value>5</value>
</data>
<data name="redUpDown.Location" type="System.Drawing.Point, System.Drawing">
<value>400, 345</value>
@@ -268,7 +225,7 @@
<value>metroPanel1</value>
</data>
<data name="&gt;&gt;redUpDown.ZOrder" xml:space="preserve">
<value>7</value>
<value>6</value>
</data>
<data name="alphaUpDown.Location" type="System.Drawing.Point, System.Drawing">
<value>400, 319</value>
@@ -292,7 +249,7 @@
<value>metroPanel1</value>
</data>
<data name="&gt;&gt;alphaUpDown.ZOrder" xml:space="preserve">
<value>8</value>
<value>7</value>
</data>
<data name="alphaLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@@ -322,7 +279,7 @@
<value>metroPanel1</value>
</data>
<data name="&gt;&gt;alphaLabel.ZOrder" xml:space="preserve">
<value>9</value>
<value>8</value>
</data>
<data name="blueLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@@ -349,7 +306,7 @@
<value>metroPanel1</value>
</data>
<data name="&gt;&gt;blueLabel.ZOrder" xml:space="preserve">
<value>10</value>
<value>9</value>
</data>
<data name="greenLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@@ -376,7 +333,7 @@
<value>metroPanel1</value>
</data>
<data name="&gt;&gt;greenLabel.ZOrder" xml:space="preserve">
<value>11</value>
<value>10</value>
</data>
<data name="redLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@@ -403,24 +360,25 @@
<value>metroPanel1</value>
</data>
<data name="&gt;&gt;redLabel.ZOrder" xml:space="preserve">
<value>12</value>
<value>11</value>
</data>
<data name="resource.Image1" type="System.Resources.ResXNullRef, System.Windows.Forms">
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="resource.Image" type="System.Resources.ResXNullRef, System.Windows.Forms">
<value />
</data>
<data name="resource.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="resource.Location1" type="System.Drawing.Point, System.Drawing">
<data name="resource.Location" type="System.Drawing.Point, System.Drawing">
<value>103, 1</value>
</data>
<data name="resource.Size1" type="System.Drawing.Size, System.Drawing">
<data name="resource.Size" type="System.Drawing.Size, System.Drawing">
<value>21, 21</value>
</data>
<data name="resource.TabIndex1" type="System.Int32, mscorlib">
<data name="resource.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="resource.Visible1" type="System.Boolean, mscorlib">
<data name="resource.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="colorTextbox.Location" type="System.Drawing.Point, System.Drawing">
@@ -442,7 +400,7 @@
<value>metroPanel1</value>
</data>
<data name="&gt;&gt;colorTextbox.ZOrder" xml:space="preserve">
<value>13</value>
<value>12</value>
</data>
<data name="metroLabel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@@ -469,7 +427,7 @@
<value>metroPanel1</value>
</data>
<data name="&gt;&gt;metroLabel1.ZOrder" xml:space="preserve">
<value>14</value>
<value>13</value>
</data>
<data name="pictureBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>378, 92</value>
@@ -490,16 +448,16 @@
<value>metroPanel1</value>
</data>
<data name="&gt;&gt;pictureBox1.ZOrder" xml:space="preserve">
<value>15</value>
<value>14</value>
</data>
<data name="metroPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="metroPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>20, 60</value>
<value>0, 0</value>
</data>
<data name="metroPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>612, 523</value>
<value>652, 603</value>
</data>
<data name="metroPanel1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
@@ -514,7 +472,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;metroPanel1.ZOrder" xml:space="preserve">
<value>3</value>
<value>2</value>
</data>
<metadata name="menuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
@@ -525,11 +483,11 @@
<data name="saveToolStripMenuItem1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4yMfEgaZUAAADdSURBVDhPzZJB
CoJQEIa9jy0iPFAnCDpAtG3ZooUE4b6oVtIuClpJIAgqZEVlKpqEHUAm5pGPmhTbRA18G//5P5iHgvA3
I7ZniiQ7aVM9QZzcOKYbwVDbw8I6A2YAICBvg2VJdtjSs2Cse1Dt6tCYbliGO0UCFlLBxAj590yA0D4X
1Ec7CK8JF9j+lUmWzoVlpYJaz4JKZ5ULZqWCT6F9Jhhowcv9eeBOoQBvPXoBrA0zF8yyR6V9LvCjGLYH
NxfMvipIMaQ3Ux6ClPYFsaUq/bmd0rspuIO/Pe3/bu5p+sr3gTvFEQAAAABJRU5ErkJggg==
vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4yMfEgaZUAAADfSURBVDhPYxg8
QLt++3yTGbf/Fm599P/Nh49wfPXxq/+rTt37f+Dak/8gOSBgAGEMANIMxGBFyAasPf/0v8GE8//z1t8C
y4HU4DIALIluwLpLL+HiMANAGKoNAWASCavv/n/57gPcgOvP3oENOXj7NViOoAFGU6791+k4ghWD5Aga
QCyGakMAkODcU89R/I8Ng9TgNADk14dPn/8/c+kqVgySgwUqVBsCwAx49urN/zsPHmPFIDmaGvAXJInN
38gYasBfqDYE0K7dOn/Wvut/sfkdGYPUgJI9VNuAAwYGAGn6yvdevWgPAAAAAElFTkSuQmCC
</value>
</data>
<data name="saveToolStripMenuItem1.Size" type="System.Drawing.Size, System.Drawing">
@@ -551,79 +509,79 @@
<value>Remove PS4 Biome Colors</value>
</data>
<data name="TU12ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>416, 22</value>
<value>414, 22</value>
</data>
<data name="TU12ToolStripMenuItem.Text" xml:space="preserve">
<value>TU12 (360)</value>
</data>
<data name="TU13ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>416, 22</value>
<value>414, 22</value>
</data>
<data name="TU13ToolStripMenuItem.Text" xml:space="preserve">
<value>TU13/1.00 (360/PS3)</value>
</data>
<data name="TU14ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>416, 22</value>
<value>414, 22</value>
</data>
<data name="TU14ToolStripMenuItem.Text" xml:space="preserve">
<value>TU14/1.04 (360/PS3)</value>
</data>
<data name="TU19ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>416, 22</value>
<value>414, 22</value>
</data>
<data name="TU19ToolStripMenuItem.Text" xml:space="preserve">
<value>TU19/1.12/CU7 (360/PS3-4-Vita/XONE)</value>
</data>
<data name="TU31ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>416, 22</value>
<value>414, 22</value>
</data>
<data name="TU31ToolStripMenuItem.Text" xml:space="preserve">
<value>TU31/1.22/CU19 (360/PS3-4-Vita/XONE)</value>
</data>
<data name="TU32ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>416, 22</value>
<value>414, 22</value>
</data>
<data name="TU32ToolStripMenuItem.Text" xml:space="preserve">
<value>TU32/1.24/CU20/P3 (360/PS3-4-Vita/XONE/WIIU)</value>
</data>
<data name="TU43ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>416, 22</value>
<value>414, 22</value>
</data>
<data name="TU43ToolStripMenuItem.Text" xml:space="preserve">
<value>TU43/1.35/CU32/P12 (360/PS3-4-Vita/XONE/WIIU)</value>
</data>
<data name="TU46ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>416, 22</value>
<value>414, 22</value>
</data>
<data name="TU46ToolStripMenuItem.Text" xml:space="preserve">
<value>TU46/1.38/CU36/P15 (360/PS3-4-Vita/XONE/WIIU)</value>
</data>
<data name="TU51ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>416, 22</value>
<value>414, 22</value>
</data>
<data name="TU51ToolStripMenuItem.Text" xml:space="preserve">
<value>TU51/1.44/CU41/P20 (360/PS3-4-Vita/XONE/WIIU)</value>
</data>
<data name="TU53ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>416, 22</value>
<value>414, 22</value>
</data>
<data name="TU53ToolStripMenuItem.Text" xml:space="preserve">
<value>TU53/1.49/CU43/P23/1.0.3 (360/PS3-4-Vita/XONE/WIIU/SWITCH)</value>
</data>
<data name="TU54ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>416, 22</value>
<value>414, 22</value>
</data>
<data name="TU54ToolStripMenuItem.Text" xml:space="preserve">
<value>TU54/1.52/CU44/P24/1.0.4 (360/PS3-4-Vita/XONE/WIIU/SWITCH)</value>
</data>
<data name="TU69ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>416, 22</value>
<value>414, 22</value>
</data>
<data name="TU69ToolStripMenuItem.Text" xml:space="preserve">
<value>TU69/1.76/P38 (360/PS3-4-Vita/WIIU)</value>
</data>
<data name="_1_9_1ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>416, 22</value>
<value>414, 22</value>
</data>
<data name="_1_9_1ToolStripMenuItem.Text" xml:space="preserve">
<value>1.91 (PS4)</value>
@@ -635,16 +593,28 @@
<value>Target Update</value>
</data>
<data name="toolsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>47, 20</value>
<value>46, 20</value>
</data>
<data name="toolsToolStripMenuItem.Text" xml:space="preserve">
<value>Tools</value>
</data>
<data name="compactViewToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>180, 22</value>
</data>
<data name="compactViewToolStripMenuItem.Text" xml:space="preserve">
<value>Compact View</value>
</data>
<data name="viewToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>44, 20</value>
</data>
<data name="viewToolStripMenuItem.Text" xml:space="preserve">
<value>View</value>
</data>
<data name="menuStrip.Location" type="System.Drawing.Point, System.Drawing">
<value>20, 60</value>
<value>0, 0</value>
</data>
<data name="menuStrip.Size" type="System.Drawing.Size, System.Drawing">
<value>612, 24</value>
<value>652, 24</value>
</data>
<data name="menuStrip.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
@@ -706,219 +676,6 @@
<data name="&gt;&gt;ColorContextMenu.Type" xml:space="preserve">
<value>MetroFramework.Controls.MetroContextMenu, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a</value>
</data>
<data name="waterTreeView.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="waterTreeView.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="waterTreeView.RightToLeft" type="System.Windows.Forms.RightToLeft, System.Windows.Forms">
<value>No</value>
</data>
<data name="waterTreeView.Size" type="System.Drawing.Size, System.Drawing">
<value>320, 424</value>
</data>
<data name="waterTreeView.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;waterTreeView.Name" xml:space="preserve">
<value>waterTreeView</value>
</data>
<data name="&gt;&gt;waterTreeView.Type" xml:space="preserve">
<value>System.Windows.Forms.TreeView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;waterTreeView.Parent" xml:space="preserve">
<value>waterTab</value>
</data>
<data name="&gt;&gt;waterTreeView.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="waterTab.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 38</value>
</data>
<data name="waterTab.Size" type="System.Drawing.Size, System.Drawing">
<value>320, 424</value>
</data>
<data name="waterTab.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="waterTab.Text" xml:space="preserve">
<value>Water</value>
</data>
<data name="&gt;&gt;waterTab.Name" xml:space="preserve">
<value>waterTab</value>
</data>
<data name="&gt;&gt;waterTab.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;waterTab.Parent" xml:space="preserve">
<value>tabControl</value>
</data>
<data name="&gt;&gt;waterTab.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="underwaterTreeView.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="underwaterTreeView.Size" type="System.Drawing.Size, System.Drawing">
<value>320, 424</value>
</data>
<data name="underwaterTreeView.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;underwaterTreeView.Name" xml:space="preserve">
<value>underwaterTreeView</value>
</data>
<data name="&gt;&gt;underwaterTreeView.Type" xml:space="preserve">
<value>System.Windows.Forms.TreeView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;underwaterTreeView.Parent" xml:space="preserve">
<value>underwaterTab</value>
</data>
<data name="&gt;&gt;underwaterTreeView.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="fogTreeView.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="fogTreeView.Size" type="System.Drawing.Size, System.Drawing">
<value>320, 424</value>
</data>
<data name="fogTreeView.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;fogTreeView.Name" xml:space="preserve">
<value>fogTreeView</value>
</data>
<data name="&gt;&gt;fogTreeView.Type" xml:space="preserve">
<value>System.Windows.Forms.TreeView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;fogTreeView.Parent" xml:space="preserve">
<value>fogTab</value>
</data>
<data name="&gt;&gt;fogTreeView.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="colorTreeView.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="colorTreeView.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="colorTreeView.Size" type="System.Drawing.Size, System.Drawing">
<value>320, 424</value>
</data>
<data name="colorTreeView.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;colorTreeView.Name" xml:space="preserve">
<value>colorTreeView</value>
</data>
<data name="&gt;&gt;colorTreeView.Type" xml:space="preserve">
<value>System.Windows.Forms.TreeView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;colorTreeView.Parent" xml:space="preserve">
<value>colorsTab</value>
</data>
<data name="&gt;&gt;colorTreeView.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="colorsTab.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 38</value>
</data>
<data name="colorsTab.Size" type="System.Drawing.Size, System.Drawing">
<value>320, 424</value>
</data>
<data name="colorsTab.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="colorsTab.Text" xml:space="preserve">
<value>Everything</value>
</data>
<data name="&gt;&gt;colorsTab.Name" xml:space="preserve">
<value>colorsTab</value>
</data>
<data name="&gt;&gt;colorsTab.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;colorsTab.Parent" xml:space="preserve">
<value>tabControl</value>
</data>
<data name="&gt;&gt;colorsTab.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tabControl.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left</value>
</data>
<data name="underwaterTab.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 38</value>
</data>
<data name="underwaterTab.Size" type="System.Drawing.Size, System.Drawing">
<value>320, 424</value>
</data>
<data name="underwaterTab.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="underwaterTab.Text" xml:space="preserve">
<value>Underwater</value>
</data>
<data name="&gt;&gt;underwaterTab.Name" xml:space="preserve">
<value>underwaterTab</value>
</data>
<data name="&gt;&gt;underwaterTab.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;underwaterTab.Parent" xml:space="preserve">
<value>tabControl</value>
</data>
<data name="&gt;&gt;underwaterTab.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="fogTab.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 38</value>
</data>
<data name="fogTab.Size" type="System.Drawing.Size, System.Drawing">
<value>320, 424</value>
</data>
<data name="fogTab.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="fogTab.Text" xml:space="preserve">
<value>Underwater Fog</value>
</data>
<data name="&gt;&gt;fogTab.Name" xml:space="preserve">
<value>fogTab</value>
</data>
<data name="&gt;&gt;fogTab.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;fogTab.Parent" xml:space="preserve">
<value>tabControl</value>
</data>
<data name="&gt;&gt;fogTab.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="tabControl.Location" type="System.Drawing.Point, System.Drawing">
<value>23, 114</value>
</data>
<data name="tabControl.Size" type="System.Drawing.Size, System.Drawing">
<value>328, 466</value>
</data>
<data name="tabControl.TabIndex" type="System.Int32, mscorlib">
<value>22</value>
</data>
<data name="&gt;&gt;tabControl.Name" xml:space="preserve">
<value>tabControl</value>
</data>
<data name="&gt;&gt;tabControl.Type" xml:space="preserve">
<value>MetroFramework.Controls.MetroTabControl, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a</value>
</data>
<data name="&gt;&gt;tabControl.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;tabControl.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
@@ -3551,6 +3308,18 @@
<data name="&gt;&gt;_1_9_1ToolStripMenuItem.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;viewToolStripMenuItem.Name" xml:space="preserve">
<value>viewToolStripMenuItem</value>
</data>
<data name="&gt;&gt;viewToolStripMenuItem.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;compactViewToolStripMenuItem.Name" xml:space="preserve">
<value>compactViewToolStripMenuItem</value>
</data>
<data name="&gt;&gt;compactViewToolStripMenuItem.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;copyColorToolStripMenuItem.Name" xml:space="preserve">
<value>copyColorToolStripMenuItem</value>
</data>
@@ -3585,6 +3354,6 @@
<value>COLEditor</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>ImmersiveForm, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a</value>
<value>PckStudio.Controls.EditorForm`1[[OMI.Formats.Color.ColorContainer, OMI Filetypes, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], PCK-Studio, Version=7.0.0.2, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View File

@@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OMI.Formats.Color;
namespace PckStudio.Core.Colors
{
public class AbstractColorContainer
{
public AbstractColorContainer(IDictionary<string, Color> colors, IDictionary<string, (Color Surface, Color Underwater, Color Fog)> waterColors)
{
Colors = colors;
WaterColors = waterColors;
}
public bool HasColor(string colorName) => Colors.ContainsKey(colorName) || WaterColors.ContainsKey(colorName);
public static AbstractColorContainer FromColorContainer(ColorContainer colorContainer)
{
IDictionary<string, Color> colors = colorContainer.Colors
.GroupBy(c => c.Name)
.Select(grp => grp.FirstOrDefault())
.ToDictionary(c => c.Name, c => c.ColorPallette);
IDictionary<string, (Color, Color, Color)> waterColors = colorContainer.WaterColors
.GroupBy(c => c.Name)
.Select(grp => grp.FirstOrDefault())
.ToDictionary(c => c.Name, c => (c.SurfaceColor, c.UnderwaterColor, c.FogColor));
return new AbstractColorContainer(colors, waterColors);
}
public IDictionary<string, Color> Colors { get; }
public IDictionary<string, (Color Surface, Color Underwater, Color Fog)> WaterColors { get; }
}
}

View File

@@ -18,6 +18,7 @@ using OMI.Workers.Material;
using OMI.Workers.Model;
using OMI.Workers.Pck;
using PckStudio.Core.App;
using PckStudio.Core.Colors;
using PckStudio.Core.Deserializer;
using PckStudio.Core.Extensions;
using PckStudio.Core.FileFormats;
@@ -329,15 +330,6 @@ namespace PckStudio.Core.DLC
ColorContainer colorContainer = dataPck.GetAssetsByType(PckAssetType.ColourTableFile).FirstOrDefault()?.GetData(new COLFileReader()) ?? new ColorContainer();
IDictionary<string, Color> colors = colorContainer.Colors
.GroupBy(c => c.Name)
.Select(grp => grp.FirstOrDefault())
.ToDictionary(c => c.Name, c => c.ColorPallette);
IDictionary<string, (Color, Color, Color)> waterColors = colorContainer.WaterColors
.GroupBy(c => c.Name)
.Select(grp => grp.FirstOrDefault())
.ToDictionary(c => c.Name, c => (c.SurfaceColor, c.UnderwaterColor, c.FogColor));
IDictionary<string, Image> environmentTextures = dataPck.GetDirectoryContent("res/environment/", PckAssetType.TextureFile)
.ToDictionary(a => Path.GetFileNameWithoutExtension(a.Filename), defaultDeserializer.Deserialize);
environmentTextures.TryGetValue("clouds", out Image clouds);
@@ -371,8 +363,7 @@ namespace PckStudio.Core.DLC
ArmorSetDescription.Diamond.GetArmorSet(tryGetTexture),
ArmorSetDescription.Turtle.GetArmorSet(tryGetTexture),
environmentData,
colors,
waterColors,
AbstractColorContainer.FromColorContainer(colorContainer),
customModels,
materials,
blockEntityBreakAnimation,

View File

@@ -6,6 +6,8 @@ using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using OMI.Formats.Color;
using PckStudio.Core.Colors;
using PckStudio.Core.Extensions;
using PckStudio.Core.Interfaces;
using PckStudio.Core.Model;
@@ -50,8 +52,7 @@ namespace PckStudio.Core.DLC
//! Data for x{16}Data.pck
//! => colours.col
private IDictionary<string, Color> _colors;
private IDictionary<string, (Color surface, Color underwater, Color fog)> _waterColors;
private AbstractColorContainer _colorContainter;
private AbstractModelContainer _customModels; //! can be null.. => models.bin
private IDictionary<string, string> _materials; //! can be null..
@@ -99,8 +100,7 @@ namespace PckStudio.Core.DLC
ArmorSet diamondArmorSet,
ArmorSet turtleArmorSet,
EnvironmentData environmentData,
IDictionary<string, Color> colors,
IDictionary<string, (Color surface, Color underwater, Color fog)> waterColors,
AbstractColorContainer colorContainter,
AbstractModelContainer customModels,
IDictionary<string, string> materials,
Animation blockEntityBreakAnimation,
@@ -129,8 +129,7 @@ namespace PckStudio.Core.DLC
_diamondArmorSet = diamondArmorSet;
_turtleArmorSet = turtleArmorSet;
_environmentData = environmentData;
_colors = colors ?? new Dictionary<string, Color>();
_waterColors = waterColors ?? new Dictionary<string, (Color, Color, Color)>();
_colorContainter = colorContainter;
_customModels = customModels;
_materials = materials;
_blockEntityBreakAnimation = blockEntityBreakAnimation;
@@ -218,7 +217,7 @@ namespace PckStudio.Core.DLC
new ArmorSet(ArmorSetDescription.DIAMOND, Resources.diamond, default),
new ArmorSet(ArmorSetDescription.TURTLE, Resources.turtle, default),
new EnvironmentData(Resources.clouds, Resources.rain, Resources.snow),
colors, waterColors,
new AbstractColorContainer(colors, waterColors),
new AbstractModelContainer(),
new Dictionary<string, string>(),
blockEntityBreakAnimation,

View File

@@ -66,6 +66,7 @@
<Compile Include="Atlas\AtlasOverlayGroup.cs" />
<Compile Include="Atlas\AtlasTile.cs" />
<Compile Include="BoundingBox.cs" />
<Compile Include="Colors\AbstractColorContainer.cs" />
<Compile Include="ConsolePlatform.cs" />
<Compile Include="DelegatedFileSaveContext.cs" />
<Compile Include="DelegatedSaveContext.cs" />