Merge branch 'TextureAtlasEditor'

This commit is contained in:
MattN-L
2024-03-16 00:10:17 -04:00
31 changed files with 7108 additions and 1502 deletions

View File

@@ -29,11 +29,10 @@
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TextureAtlasEditor));
this.variantLabel = new MetroFramework.Controls.MetroLabel();
this.internalTileNameLabel = new MetroFramework.Controls.MetroLabel();
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.extractTileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.viewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.applyColorMaskToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.playAnimationsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -41,8 +40,13 @@
this.originalPictureBox = new PckStudio.ToolboxItems.InterpolationPictureBox();
this.selectTilePictureBox = new PckStudio.ToolboxItems.AnimationPictureBox();
this.replaceButton = new MetroFramework.Controls.MetroButton();
this.animationButton = new MetroFramework.Controls.MetroButton();
this.tileNameLabel = new MetroFramework.Controls.MetroLabel();
this.setColorButton = new MetroFramework.Controls.MetroButton();
this.animationButton = new MetroFramework.Controls.MetroButton();
this.clearColorButton = new MetroFramework.Controls.MetroButton();
this.extractButton = new MetroFramework.Controls.MetroButton();
this.colorSlider = new MetroFramework.Controls.MetroTrackBar();
this.colorSliderLabel = new MetroFramework.Controls.MetroLabel();
this.variantComboBox = new MetroFramework.Controls.MetroComboBox();
this.menuStrip1.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout();
@@ -50,19 +54,20 @@
((System.ComponentModel.ISupportInitialize)(this.selectTilePictureBox)).BeginInit();
this.SuspendLayout();
//
// variantLabel
// internalTileNameLabel
//
this.variantLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
this.internalTileNameLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.variantLabel.AutoSize = true;
this.variantLabel.Location = new System.Drawing.Point(3, 254);
this.variantLabel.Name = "variantLabel";
this.variantLabel.Size = new System.Drawing.Size(82, 28);
this.variantLabel.TabIndex = 18;
this.variantLabel.Text = "Variant:";
this.variantLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
this.variantLabel.Theme = MetroFramework.MetroThemeStyle.Dark;
this.tableLayoutPanel1.SetColumnSpan(this.internalTileNameLabel, 2);
this.internalTileNameLabel.FontSize = MetroFramework.MetroLabelSize.Small;
this.internalTileNameLabel.Location = new System.Drawing.Point(3, 281);
this.internalTileNameLabel.Name = "internalTileNameLabel";
this.internalTileNameLabel.Size = new System.Drawing.Size(208, 15);
this.internalTileNameLabel.TabIndex = 18;
this.internalTileNameLabel.Text = "InternalTileName";
this.internalTileNameLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.internalTileNameLabel.Theme = MetroFramework.MetroThemeStyle.Dark;
this.internalTileNameLabel.WrapToLine = true;
//
// menuStrip1
//
@@ -80,8 +85,7 @@
//
this.fileToolStripMenuItem.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.saveToolStripMenuItem,
this.extractTileToolStripMenuItem});
this.saveToolStripMenuItem});
this.fileToolStripMenuItem.ForeColor = System.Drawing.SystemColors.Menu;
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
@@ -90,17 +94,10 @@
// saveToolStripMenuItem
//
this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
this.saveToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.saveToolStripMenuItem.Size = new System.Drawing.Size(98, 22);
this.saveToolStripMenuItem.Text = "Save";
this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click);
//
// extractTileToolStripMenuItem
//
this.extractTileToolStripMenuItem.Name = "extractTileToolStripMenuItem";
this.extractTileToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.extractTileToolStripMenuItem.Text = "Extract Tile";
this.extractTileToolStripMenuItem.Click += new System.EventHandler(this.extractTileToolStripMenuItem_Click);
//
// viewToolStripMenuItem
//
this.viewToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
@@ -117,7 +114,7 @@
this.applyColorMaskToolStripMenuItem.CheckOnClick = true;
this.applyColorMaskToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
this.applyColorMaskToolStripMenuItem.Name = "applyColorMaskToolStripMenuItem";
this.applyColorMaskToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.applyColorMaskToolStripMenuItem.Size = new System.Drawing.Size(168, 22);
this.applyColorMaskToolStripMenuItem.Text = "Apply Color Mask";
this.applyColorMaskToolStripMenuItem.CheckedChanged += new System.EventHandler(this.applyColorMaskToolStripMenuItem_CheckedChanged);
//
@@ -127,7 +124,7 @@
this.playAnimationsToolStripMenuItem.CheckOnClick = true;
this.playAnimationsToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
this.playAnimationsToolStripMenuItem.Name = "playAnimationsToolStripMenuItem";
this.playAnimationsToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.playAnimationsToolStripMenuItem.Size = new System.Drawing.Size(168, 22);
this.playAnimationsToolStripMenuItem.Text = "Play Animations";
this.playAnimationsToolStripMenuItem.CheckedChanged += new System.EventHandler(this.playAnimationsToolStripMenuItem_CheckedChanged);
//
@@ -136,38 +133,49 @@
this.tableLayoutPanel1.AutoSize = true;
this.tableLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.tableLayoutPanel1.ColumnCount = 3;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 15F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 60F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10.43842F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 26.09603F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 63.46555F));
this.tableLayoutPanel1.Controls.Add(this.originalPictureBox, 2, 0);
this.tableLayoutPanel1.Controls.Add(this.selectTilePictureBox, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.replaceButton, 0, 5);
this.tableLayoutPanel1.Controls.Add(this.animationButton, 0, 4);
this.tableLayoutPanel1.Controls.Add(this.replaceButton, 0, 8);
this.tableLayoutPanel1.Controls.Add(this.tileNameLabel, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.variantComboBox, 1, 2);
this.tableLayoutPanel1.Controls.Add(this.variantLabel, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.setColorButton, 0, 5);
this.tableLayoutPanel1.Controls.Add(this.animationButton, 1, 8);
this.tableLayoutPanel1.Controls.Add(this.clearColorButton, 1, 5);
this.tableLayoutPanel1.Controls.Add(this.extractButton, 0, 7);
this.tableLayoutPanel1.Controls.Add(this.colorSlider, 1, 4);
this.tableLayoutPanel1.Controls.Add(this.colorSliderLabel, 0, 4);
this.tableLayoutPanel1.Controls.Add(this.variantComboBox, 0, 3);
this.tableLayoutPanel1.Controls.Add(this.internalTileNameLabel, 0, 2);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(20, 84);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 6;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 40F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 5F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 5F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 40F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 5F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 5F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 42.82212F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 8.938088F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 8.943623F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 8.943623F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 8.943623F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 5.352765F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 5.350623F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 5.352765F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 5.352765F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(590, 565);
this.tableLayoutPanel1.TabIndex = 17;
//
// originalPictureBox
//
this.originalPictureBox.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.originalPictureBox.BackColor = System.Drawing.Color.Transparent;
this.originalPictureBox.Dock = System.Windows.Forms.DockStyle.Fill;
this.originalPictureBox.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
this.originalPictureBox.Location = new System.Drawing.Point(238, 3);
this.originalPictureBox.Location = new System.Drawing.Point(217, 3);
this.originalPictureBox.Name = "originalPictureBox";
this.tableLayoutPanel1.SetRowSpan(this.originalPictureBox, 6);
this.originalPictureBox.Size = new System.Drawing.Size(349, 559);
this.tableLayoutPanel1.SetRowSpan(this.originalPictureBox, 9);
this.originalPictureBox.Size = new System.Drawing.Size(370, 535);
this.originalPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.originalPictureBox.TabIndex = 4;
this.originalPictureBox.TabStop = false;
@@ -186,7 +194,7 @@
this.selectTilePictureBox.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
this.selectTilePictureBox.Location = new System.Drawing.Point(3, 3);
this.selectTilePictureBox.Name = "selectTilePictureBox";
this.selectTilePictureBox.Size = new System.Drawing.Size(229, 220);
this.selectTilePictureBox.Size = new System.Drawing.Size(208, 227);
this.selectTilePictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.selectTilePictureBox.TabIndex = 0;
this.selectTilePictureBox.TabStop = false;
@@ -198,53 +206,131 @@
| System.Windows.Forms.AnchorStyles.Right)));
this.replaceButton.AutoSize = true;
this.tableLayoutPanel1.SetColumnSpan(this.replaceButton, 2);
this.replaceButton.Location = new System.Drawing.Point(3, 539);
this.replaceButton.Location = new System.Drawing.Point(3, 515);
this.replaceButton.Name = "replaceButton";
this.replaceButton.Size = new System.Drawing.Size(229, 23);
this.replaceButton.Size = new System.Drawing.Size(208, 23);
this.replaceButton.TabIndex = 14;
this.replaceButton.Text = "Replace";
this.replaceButton.Text = "Replace Tile on Atlas";
this.replaceButton.Theme = MetroFramework.MetroThemeStyle.Dark;
this.replaceButton.UseSelectable = true;
this.replaceButton.Click += new System.EventHandler(this.replaceButton_Click);
//
// tileNameLabel
//
this.tileNameLabel.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.SetColumnSpan(this.tileNameLabel, 2);
this.tileNameLabel.Location = new System.Drawing.Point(3, 233);
this.tileNameLabel.Name = "tileNameLabel";
this.tileNameLabel.Size = new System.Drawing.Size(208, 48);
this.tileNameLabel.TabIndex = 19;
this.tileNameLabel.Text = "TileName";
this.tileNameLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.tileNameLabel.Theme = MetroFramework.MetroThemeStyle.Dark;
this.tileNameLabel.WrapToLine = true;
//
// setColorButton
//
this.setColorButton.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tableLayoutPanel1.SetColumnSpan(this.setColorButton, 2);
this.setColorButton.Location = new System.Drawing.Point(3, 434);
this.setColorButton.Name = "setColorButton";
this.setColorButton.Size = new System.Drawing.Size(208, 17);
this.setColorButton.TabIndex = 25;
this.setColorButton.Text = "Set Custom Colour";
this.setColorButton.Theme = MetroFramework.MetroThemeStyle.Dark;
this.setColorButton.UseSelectable = true;
this.setColorButton.Click += new System.EventHandler(this.setColorButton_Click);
//
// animationButton
//
this.animationButton.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.animationButton.AutoSize = true;
this.tableLayoutPanel1.SetColumnSpan(this.animationButton, 2);
this.animationButton.Location = new System.Drawing.Point(3, 511);
this.animationButton.Location = new System.Drawing.Point(3, 544);
this.animationButton.Name = "animationButton";
this.animationButton.Size = new System.Drawing.Size(229, 22);
this.animationButton.Size = new System.Drawing.Size(208, 18);
this.animationButton.TabIndex = 16;
this.animationButton.Text = "Animation";
this.animationButton.Theme = MetroFramework.MetroThemeStyle.Dark;
this.animationButton.UseSelectable = true;
this.animationButton.Click += new System.EventHandler(this.animationButton_Click);
//
// tileNameLabel
// clearColorButton
//
this.tileNameLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
this.clearColorButton.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tileNameLabel.AutoSize = true;
this.tableLayoutPanel1.SetColumnSpan(this.tileNameLabel, 2);
this.tileNameLabel.Location = new System.Drawing.Point(3, 235);
this.tileNameLabel.Name = "tileNameLabel";
this.tileNameLabel.Size = new System.Drawing.Size(229, 19);
this.tileNameLabel.TabIndex = 19;
this.tileNameLabel.Text = "TileName";
this.tileNameLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.tileNameLabel.Theme = MetroFramework.MetroThemeStyle.Dark;
this.clearColorButton.AutoSize = true;
this.tableLayoutPanel1.SetColumnSpan(this.clearColorButton, 2);
this.clearColorButton.Location = new System.Drawing.Point(3, 457);
this.clearColorButton.Name = "clearColorButton";
this.clearColorButton.Size = new System.Drawing.Size(208, 23);
this.clearColorButton.TabIndex = 24;
this.clearColorButton.Text = "Clear Custom Colour";
this.clearColorButton.Theme = MetroFramework.MetroThemeStyle.Dark;
this.clearColorButton.UseSelectable = true;
this.clearColorButton.Click += new System.EventHandler(this.clearColorButton_Click);
//
// extractButton
//
this.extractButton.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.extractButton.AutoSize = true;
this.tableLayoutPanel1.SetColumnSpan(this.extractButton, 2);
this.extractButton.Location = new System.Drawing.Point(3, 486);
this.extractButton.Name = "extractButton";
this.extractButton.Size = new System.Drawing.Size(208, 23);
this.extractButton.TabIndex = 27;
this.extractButton.Text = "Extract Tile from Atlas";
this.extractButton.Theme = MetroFramework.MetroThemeStyle.Dark;
this.extractButton.UseSelectable = true;
this.extractButton.Click += new System.EventHandler(this.extractTileToolStripMenuItem_Click);
//
// colorSlider
//
this.colorSlider.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)));
this.colorSlider.BackColor = System.Drawing.Color.Transparent;
this.colorSlider.Location = new System.Drawing.Point(64, 380);
this.colorSlider.Maximum = 255;
this.colorSlider.Name = "colorSlider";
this.colorSlider.Size = new System.Drawing.Size(147, 42);
this.colorSlider.TabIndex = 26;
this.colorSlider.Text = "metroTrackBar1";
this.colorSlider.Theme = MetroFramework.MetroThemeStyle.Dark;
this.colorSlider.Value = 255;
this.colorSlider.Visible = false;
this.colorSlider.ValueChanged += new System.EventHandler(this.colorSlider_ValueChanged);
//
// colorSliderLabel
//
this.colorSliderLabel.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.colorSliderLabel.BackColor = System.Drawing.Color.Transparent;
this.colorSliderLabel.FontSize = MetroFramework.MetroLabelSize.Small;
this.colorSliderLabel.Location = new System.Drawing.Point(3, 377);
this.colorSliderLabel.Name = "colorSliderLabel";
this.colorSliderLabel.Size = new System.Drawing.Size(55, 48);
this.colorSliderLabel.TabIndex = 19;
this.colorSliderLabel.Text = "Color Value:";
this.colorSliderLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.colorSliderLabel.Theme = MetroFramework.MetroThemeStyle.Dark;
this.colorSliderLabel.Visible = false;
this.colorSliderLabel.WrapToLine = true;
//
// variantComboBox
//
this.variantComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.tableLayoutPanel1.SetColumnSpan(this.variantComboBox, 2);
this.variantComboBox.Enabled = false;
this.variantComboBox.FormattingEnabled = true;
this.variantComboBox.ItemHeight = 23;
this.variantComboBox.Location = new System.Drawing.Point(91, 257);
this.variantComboBox.Location = new System.Drawing.Point(3, 338);
this.variantComboBox.Name = "variantComboBox";
this.variantComboBox.Size = new System.Drawing.Size(141, 29);
this.variantComboBox.Size = new System.Drawing.Size(208, 29);
this.variantComboBox.TabIndex = 17;
this.variantComboBox.Theme = MetroFramework.MetroThemeStyle.Dark;
this.variantComboBox.UseSelectable = true;
@@ -287,12 +373,16 @@
private PckStudio.ToolboxItems.InterpolationPictureBox originalPictureBox;
private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem;
private MetroFramework.Controls.MetroButton animationButton;
private System.Windows.Forms.ToolStripMenuItem extractTileToolStripMenuItem;
private MetroFramework.Controls.MetroComboBox variantComboBox;
private System.Windows.Forms.ToolStripMenuItem viewToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem applyColorMaskToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem playAnimationsToolStripMenuItem;
private MetroFramework.Controls.MetroLabel tileNameLabel;
private MetroFramework.Controls.MetroLabel variantLabel;
private MetroFramework.Controls.MetroLabel internalTileNameLabel;
private MetroFramework.Controls.MetroButton clearColorButton;
private MetroFramework.Controls.MetroButton setColorButton;
private MetroFramework.Controls.MetroTrackBar colorSlider;
private MetroFramework.Controls.MetroLabel colorSliderLabel;
private MetroFramework.Controls.MetroButton extractButton;
}
}

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2023-present miku-666
/* Copyright (c) 2023-present miku-666, MattNL
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
@@ -37,13 +37,14 @@ namespace PckStudio.Forms.Editor
{
internal partial class TextureAtlasEditor : MetroForm
{
private Image _workingTexture;
public Image FinalTexture
{
get
{
if (DialogResult != DialogResult.OK)
return null;
return (Image)originalPictureBox.Image.Clone();
return _workingTexture;
}
}
@@ -76,7 +77,17 @@ namespace PckStudio.Forms.Editor
private int SelectedIndex
{
set => SetImageDisplayed(value);
set {
if (value < 0)
{
value = _tiles.Count + value;
}
else if (value >= _tiles.Count)
{
value = value - _tiles.Count;
}
SetImageDisplayed(value);
}
}
private const ImageLayoutDirection _imageLayout = ImageLayoutDirection.Horizontal;
@@ -86,6 +97,9 @@ namespace PckStudio.Forms.Editor
InitializeComponent();
AcquireColorTable(pckFile);
_workingTexture = atlas;
_areaSize = areaSize;
_pckFile = pckFile;
_rowCount = atlas.Width / areaSize.Width;
@@ -94,17 +108,61 @@ namespace PckStudio.Forms.Editor
{
"terrain" => (Tiles.BlockTileInfos, "blocks"),
"items" => (Tiles.ItemTileInfos, "items"),
"particles" => (Tiles.ParticleTileInfos, "particles"),
"mapicons" => (Tiles.MapIconTileInfos, "map_icons"),
"additionalmapicons" => (Tiles.AdditionalMapIconTileInfos, "additional_map_icons"),
"moon_phases" => (Tiles.MoonPhaseTileInfos, "moon_phases"),
"xporb" => (Tiles.ExperienceOrbTileInfos, "experience_orbs"),
"explosion" => (Tiles.ExplosionTileInfos, "explosions"),
"kz" => (Tiles.PaintingTileInfos, "paintings"),
"Banner_Atlas" => (Tiles.BannerTileInfos, "banners"),
_ => (null, null),
};
originalPictureBox.Image = atlas;
originalPictureBox.Image = atlas.GetArea(new Rectangle(0, 0, atlas.Width, atlas.Height));
var images = atlas.Split(_areaSize, _imageLayout);
var tiles = images.enumerate().Select(
p => new AtlasTile(p.index, GetAtlasArea(p.index, _rowCount, _columnCount, _areaSize, _imageLayout), tileInfos.IndexInRange(p.index) ? tileInfos[p.index] : null, p.value)
p => new AtlasTile(
p.index,
GetAtlasArea(
p.index,
tileInfos.IndexInRange(p.index)
? tileInfos[p.index].Width : 1,
tileInfos.IndexInRange(p.index)
? tileInfos[p.index].Height : 1,
_rowCount,
_columnCount,
_areaSize,
_imageLayout),
tileInfos.IndexInRange(p.index)
? tileInfos[p.index] : null,
// get texture for tiles that are not 1x1 tiles
tileInfos.IndexInRange(p.index)
? atlas.GetArea(
new Rectangle(
GetSelectedPoint(p.index, _rowCount, _columnCount, _imageLayout).X * _areaSize.Width,
GetSelectedPoint(p.index, _rowCount, _columnCount, _imageLayout).Y * _areaSize.Height,
tileInfos[p.index].Width * _areaSize.Width,
tileInfos[p.index].Height * _areaSize.Height))
: p.value)
);
_tiles = new List<AtlasTile>(tiles);
SelectedIndex = 0;
bool isParticles = _atlasType == "particles";
// this is directly based on Java's source code for handling enchanted hits
// the particle is assigned a random grayscale color between roughly 154 and 230
// since critical hit is the only particle with this distinction, we just need to check the atlas type
colorSlider.Maximum = isParticles ? 230 : 255;
colorSlider.Minimum = isParticles ? 154 : 0;
colorSlider.Value = isParticles ? colorSlider.Maximum : colorSlider.Minimum;
}
private bool AcquireColorTable(PckFile pckFile)
@@ -121,11 +179,37 @@ namespace PckStudio.Forms.Editor
return false;
}
private void UpdateAtlasDisplay()
{
var graphicsConfig = new GraphicsConfig()
{
InterpolationMode = selectTilePictureBox.InterpolationMode,
PixelOffsetMode = PixelOffsetMode.HighQuality
};
using (var g = Graphics.FromImage(originalPictureBox.Image))
{
g.ApplyConfig(graphicsConfig);
g.Clear(Color.Transparent);
g.DrawImage(_workingTexture, 0, 0, _workingTexture.Width, _workingTexture.Height);
SolidBrush brush = new SolidBrush(Color.FromArgb(127, 255, 255, 255));
var rect = new Rectangle(_selectedTile.Area.X, _selectedTile.Area.Y,
_areaSize.Width, _areaSize.Height);
g.FillRectangle(brush, rect);
}
originalPictureBox.Invalidate();
}
private void SetImageDisplayed(int index)
{
tileNameLabel.Text = string.Empty;
variantLabel.Visible = false;
internalTileNameLabel.Text = string.Empty;
colorSlider.Visible = false;
colorSliderLabel.Visible = false;
variantComboBox.Visible = false;
variantComboBox.Items.Clear();
variantComboBox.SelectedItem = null;
@@ -141,32 +225,41 @@ namespace PckStudio.Forms.Editor
dataTile = _selectedTile;
if (string.IsNullOrEmpty(dataTile.Tile.DisplayName))
UpdateAtlasDisplay();
if (string.IsNullOrEmpty(dataTile.Tile.DisplayName) && !string.IsNullOrEmpty(dataTile.Tile.InternalName))
{
dataTile = _tiles.Find(t => t.Tile.InternalName == _selectedTile.Tile.InternalName);
}
selectTilePictureBox.Image = dataTile.Texture;
tileNameLabel.Text = $"{dataTile.Tile.DisplayName}";
internalTileNameLabel.Text = $"{dataTile.Tile.InternalName}";
selectTilePictureBox.BlendColor = GetBlendColor();
selectTilePictureBox.UseBlendColor = applyColorMaskToolStripMenuItem.Checked;
bool hasAnimation =
_pckFile.TryGetValue($"res/textures/{_atlasType}/{dataTile.Tile.InternalName}.png", PckFileType.TextureFile, out var animationFile);
animationButton.Text = hasAnimation ? "Edit Animation" : "Create Animation";
replaceButton.Enabled = !hasAnimation;
if (playAnimationsToolStripMenuItem.Checked &&
hasAnimation &&
animationFile.Size > 0)
if (animationButton.Enabled = _atlasType == "blocks" || _atlasType == "items")
{
var animation = AnimationHelper.GetAnimationFromFile(animationFile);
selectTilePictureBox.Start(animation);
bool hasAnimation =
_pckFile.TryGetValue($"res/textures/{_atlasType}/{dataTile.Tile.InternalName}.png", PckFileType.TextureFile, out var animationFile);
animationButton.Text = hasAnimation ? "Edit Animation" : "Create Animation";
if (playAnimationsToolStripMenuItem.Checked &&
hasAnimation &&
animationFile.Size > 0)
{
var animation = AnimationHelper.GetAnimationFromFile(animationFile);
selectTilePictureBox.Start(animation);
}
}
if (variantComboBox.Enabled = variantLabel.Visible = variantComboBox.Visible =
dataTile.Tile.HasColourEntry)
if (setColorButton.Enabled = clearColorButton.Enabled = dataTile.Tile.HasColourEntry)
{
setColorButton.Enabled = clearColorButton.Enabled = dataTile.Tile.ColourEntry.HasCustomColour;
clearColorButton.Enabled = false;
variantComboBox.Enabled = variantComboBox.Visible = dataTile.Tile.ColourEntry.Variants.Length > 1;
if (dataTile.Tile.ColourEntry.IsWaterColour && _colourTable.WaterColors.Count > 0)
{
foreach (var col in _colourTable.WaterColors)
@@ -178,10 +271,7 @@ namespace PckStudio.Forms.Editor
dataTile.Tile.ColourEntry.DefaultName = _colourTable.WaterColors[0].Name;
}
if (dataTile.Tile.ColourEntry.Variants.Length > 1)
{
variantComboBox.Items.AddRange(dataTile.Tile.ColourEntry.Variants);
}
variantComboBox.Items.AddRange(dataTile.Tile.ColourEntry.Variants);
variantComboBox.SelectedItem = dataTile.Tile.ColourEntry.DefaultName;
}
@@ -270,11 +360,11 @@ namespace PckStudio.Forms.Editor
};
}
private static Rectangle GetAtlasArea(int index, int rowCount, int columnCount, Size size, ImageLayoutDirection imageLayout)
private static Rectangle GetAtlasArea(int index, int width, int height, int rowCount, int columnCount, Size size, ImageLayoutDirection imageLayout)
{
var p = GetSelectedPoint(index, rowCount, columnCount, imageLayout);
var ap = new Point(p.X * size.Width, p.Y * size.Height);
return new Rectangle(ap, size);
return new Rectangle(ap, new Size(size.Width * width, size.Height * height));
}
private static Point GetSelectedPoint(int index, int rowCount, int columnCount, ImageLayoutDirection imageLayout)
@@ -294,16 +384,22 @@ namespace PckStudio.Forms.Editor
};
if (texture.Size != _areaSize)
texture = texture.Resize(_areaSize, graphicsConfig);
using (var g = Graphics.FromImage(originalPictureBox.Image))
using (var g = Graphics.FromImage(_workingTexture))
{
g.ApplyConfig(graphicsConfig);
g.Fill(_selectedTile.Area, Color.Transparent);
g.DrawImage(texture, _selectedTile.Area);
g.Fill(dataTile.Area, Color.Transparent);
g.DrawImage(texture, dataTile.Area);
}
_tiles[_selectedTile.Index] = new AtlasTile(_selectedTile.Index, _selectedTile.Area, _selectedTile.Tile, texture);
selectTilePictureBox.Image = texture;
originalPictureBox.Invalidate();
var _finalTexture = _workingTexture.GetArea(new Rectangle(dataTile.Area.X, dataTile.Area.Y, dataTile.Area.Width, dataTile.Area.Height));
if(_selectedTile != dataTile)
_tiles[dataTile.Index] = new AtlasTile(dataTile.Index, dataTile.Area, dataTile.Tile, _finalTexture);
else
_tiles[_selectedTile.Index] = new AtlasTile(_selectedTile.Index, _selectedTile.Area, _selectedTile.Tile, _finalTexture);
selectTilePictureBox.Image = _finalTexture;
UpdateAtlasDisplay();
}
private Color GetBlendColor()
@@ -313,11 +409,35 @@ namespace PckStudio.Forms.Editor
var col = FindBlendColorByKey(dataTile.Tile.ColourEntry.DefaultName);
return col;
}
return Color.White;
}
private Color HandleSpecialTiles(string colorKey)
{
colorSlider.Visible = colorSliderLabel.Visible = true;
// Simply, Experience orbs red value is just sliding between 255 and 0
if (colorKey == "experience_orb") return Color.FromArgb(colorSlider.Value, 255, 0);
//similar story for critical hits, but for all values
var final_color = Color.FromArgb(colorSlider.Value, colorSlider.Value, colorSlider.Value);
// enchanted hits are modified critical hit particles
if (dataTile.Tile.InternalName == "enchanted_hit")
// this is directly based on Java's source code for handling enchanted hits
// it just multiplies the red by 0.3 and green by .8 of the color assigned to the critical hit particle
final_color = Color.FromArgb((int)(final_color.R * 0.3f), (int)(final_color.R * 0.8f), final_color.B);
return final_color;
}
private Color FindBlendColorByKey(string colorKey)
{
// The following tiles are hardcoded within a range and do not have color table entries
if (colorKey == "experience_orb" || colorKey == "critical_hit")
return HandleSpecialTiles(colorKey);
if (_colourTable is not null &&
dataTile.Tile.HasColourEntry &&
dataTile.Tile.ColourEntry is not null)
@@ -335,6 +455,7 @@ namespace PckStudio.Forms.Editor
return waterColor.SurfaceColor;
}
}
return Color.White;
}
@@ -342,35 +463,22 @@ namespace PckStudio.Forms.Editor
{
switch (keyData)
{
case Keys.R:
// Refreshes the specific tile
SelectedIndex = _selectedTile.Index;
return true;
case Keys.Left:
if (_tiles.IndexInRange(_selectedTile.Index - 1))
{
SelectedIndex = _selectedTile.Index - 1;
return true;
}
break;
SelectedIndex = _selectedTile.Index - 1;
return true;
case Keys.Right:
if (_tiles.IndexInRange(_selectedTile.Index + 1))
{
SelectedIndex = _selectedTile.Index + 1;
return true;
}
break;
SelectedIndex = _selectedTile.Index + 1;
return true;
case Keys.Up:
if (_tiles.IndexInRange(_selectedTile.Index - _rowCount))
{
SelectedIndex = _selectedTile.Index - _rowCount;
return true;
}
break;
SelectedIndex = _selectedTile.Index - _rowCount;
return true;
case Keys.Down:
if (_tiles.IndexInRange(_selectedTile.Index + _rowCount))
{
SelectedIndex = _selectedTile.Index + _rowCount;
return true;
}
break;
SelectedIndex = _selectedTile.Index + _rowCount;
return true;
}
return false;
@@ -381,9 +489,11 @@ namespace PckStudio.Forms.Editor
if (e.Button != MouseButtons.Left)
return;
ActiveControl = null;
int index = GetSelectedImageIndex(
originalPictureBox.Size,
originalPictureBox.Image.Size,
_workingTexture.Size,
_areaSize,
e.Location,
originalPictureBox.SizeMode,
@@ -444,7 +554,7 @@ namespace PckStudio.Forms.Editor
};
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
selectTilePictureBox.Image.Save(saveFileDialog.FileName, ImageFormat.Png);
dataTile.Texture.Save(saveFileDialog.FileName, ImageFormat.Png);
}
}
@@ -474,5 +584,57 @@ namespace PckStudio.Forms.Editor
if (selectTilePictureBox.IsPlaying)
selectTilePictureBox.Stop();
}
private void setColorButton_Click(object sender, EventArgs e)
{
ColorDialog colorPick = new ColorDialog();
colorPick.AllowFullOpen = true;
colorPick.AnyColor = true;
colorPick.SolidColorOnly = true;
// custom colors are read as BGR for some reason, so hex values are "backwards"
// values below are the default Minecraft dyed leather armor values for convenience
colorPick.CustomColors = new int[] {
0xfefff9, // White
0x1d80f9, // Orange
0xbd4ec7, // Magenta
0xdab33a, // Light Blue
0x3dd8fe, // Yellow
0x1fc780, // Lime
0xaa8bf3, // Pink
0x524f47, // Gray
0x979d9d, // Light Gray
0x9c9c16, // Cyan
0xb83289, // Purple
0xaa443c, // Blue
0x325483, // Brown
0x167c5e, // Green
0x262eb0, // Red
0x211d1d // Black
};
if (colorPick.ShowDialog() != DialogResult.OK) return;
selectTilePictureBox.BlendColor = colorPick.Color;
selectTilePictureBox.Image = dataTile.Texture;
variantComboBox.Enabled = false;
clearColorButton.Enabled = true;
}
private void clearColorButton_Click(object sender, EventArgs e)
{
variantComboBox.Enabled = true;
variantComboBox_SelectedIndexChanged(sender, e);
clearColorButton.Enabled = false;
}
private void colorSlider_ValueChanged(object sender, EventArgs e)
{
selectTilePictureBox.BlendColor = GetBlendColor();
selectTilePictureBox.Image = dataTile.Texture;
}
}
}

View File

@@ -21,11 +21,24 @@ namespace PckStudio.Internal
{
Profiler.Start();
{
_entityImages ??= Resources.entities_sheet.SplitHorizontal(32).ToArray();
_entityImages ??= Resources.entities_atlas.SplitHorizontal(32).ToArray();
DataCacher ??= new FileCacher(Program.AppDataCache);
_ = Tiles.JsonTileData;
_ = Tiles.ItemImageList;
_ = Tiles.JsonBlockData;
_ = Tiles.JsonItemData;
_ = Tiles.JsonParticleData;
_ = Tiles.JsonMoonPhaseData;
_ = Tiles.JsonExplosionData;
_ = Tiles.JsonMapIconData;
_ = Tiles.JsonExperienceOrbData;
_ = Tiles.JsonPaintingData;
_ = Tiles.BlockImageList;
_ = Tiles.ItemImageList;
_ = Tiles.ParticleImageList;
_ = Tiles.ExplosionImageList;
_ = Tiles.MapIconImageList;
_ = Tiles.ExperienceOrbImageList;
_ = Tiles.MoonPhaseImageList;
_ = Tiles.PaintingImageList;
SettingsManager.Initialize();
CultureInfo.CurrentCulture = CultureInfo.InvariantCulture;
}

View File

@@ -15,6 +15,9 @@ namespace PckStudio.Internal.Json
[JsonProperty("isWaterColour", DefaultValueHandling = DefaultValueHandling.Populate)]
public bool IsWaterColour { get; set; }
[JsonProperty("hasCustomColour", DefaultValueHandling = DefaultValueHandling.Populate)]
public bool HasCustomColour { get; set; }
[JsonProperty("variants", DefaultValueHandling = DefaultValueHandling.Populate)]
public string[] Variants { get; set; }
}

View File

@@ -15,6 +15,12 @@ namespace PckStudio.Internal.Json
[JsonProperty("internalName")]
public string InternalName { get; set; }
[JsonProperty("width")]
public int Width { get; set; } = 1;
[JsonProperty("height")]
public int Height { get; set; } = 1;
[JsonProperty("hasColourEntry", DefaultValueHandling = DefaultValueHandling.Populate)]
public bool HasColourEntry { get; set; }

View File

@@ -13,55 +13,108 @@ namespace PckStudio.Internal.Json
{
internal class JsonTiles
{
[JsonProperty("blocks")]
public List<JsonTileInfo> Blocks { get; set; }
[JsonProperty("items")]
public List<JsonTileInfo> Items { get; set; }
[JsonProperty("entries")]
public List<JsonTileInfo> Entries { get; set; }
[JsonProperty("additional_entries")]
public List<JsonTileInfo> AdditionalEntries { get; set; }
}
internal static class Tiles
{
private static JsonTiles _jsonData;
internal static JsonTiles JsonTileData => _jsonData ??= JsonConvert.DeserializeObject<JsonTiles>(Resources.tileData);
private static JsonTiles
_jsonBlockData, _jsonItemData,
_jsonParticleData, _jsonMoonPhaseData,
_jsonMapIconData, _jsonExplosionData,
_jsonExperienceOrbData, _jsonPaintingData, _jsonBannerData;
internal static JsonTiles JsonBlockData => _jsonBlockData ??= JsonConvert.DeserializeObject<JsonTiles>(Resources.blockData);
internal static JsonTiles JsonItemData => _jsonItemData ??= JsonConvert.DeserializeObject<JsonTiles>(Resources.itemData);
internal static JsonTiles JsonParticleData => _jsonParticleData ??= JsonConvert.DeserializeObject<JsonTiles>(Resources.particleData);
internal static JsonTiles JsonMoonPhaseData => _jsonMoonPhaseData ??= JsonConvert.DeserializeObject<JsonTiles>(Resources.moonPhaseData);
internal static JsonTiles JsonMapIconData => _jsonMapIconData ??= JsonConvert.DeserializeObject<JsonTiles>(Resources.mapIconData);
internal static JsonTiles JsonExplosionData => _jsonExplosionData ??= JsonConvert.DeserializeObject<JsonTiles>(Resources.explosionData);
internal static JsonTiles JsonExperienceOrbData => _jsonExperienceOrbData ??= JsonConvert.DeserializeObject<JsonTiles>(Resources.experienceOrbData);
internal static JsonTiles JsonPaintingData => _jsonPaintingData ??= JsonConvert.DeserializeObject<JsonTiles>(Resources.paintingData);
internal static JsonTiles JsonBannerData => _jsonBannerData ??= JsonConvert.DeserializeObject<JsonTiles>(Resources.bannerData);
internal static List<JsonTileInfo> ItemTileInfos => JsonTileData.Items;
internal static List<JsonTileInfo> BlockTileInfos => JsonTileData.Blocks;
internal static List<JsonTileInfo> ItemTileInfos => JsonItemData.Entries;
internal static List<JsonTileInfo> BlockTileInfos => JsonBlockData.Entries;
internal static List<JsonTileInfo> ParticleTileInfos => JsonParticleData.Entries;
internal static List<JsonTileInfo> MoonPhaseTileInfos => JsonMoonPhaseData.Entries;
internal static List<JsonTileInfo> MapIconTileInfos => JsonMapIconData.Entries;
internal static List<JsonTileInfo> AdditionalMapIconTileInfos => JsonMapIconData.AdditionalEntries;
internal static List<JsonTileInfo> ExperienceOrbTileInfos => JsonExperienceOrbData.Entries;
internal static List<JsonTileInfo> ExplosionTileInfos => JsonExplosionData.Entries;
internal static List<JsonTileInfo> PaintingTileInfos => JsonPaintingData.Entries;
internal static List<JsonTileInfo> BannerTileInfos => JsonBannerData.Entries;
private static Image[] _itemImages;
public static Image[] ItemImages => _itemImages ??= Resources.items_sheet.SplitHorizontal(16).ToArray();
public static Image[] ItemImages => _itemImages ??= Resources.items_atlas.SplitHorizontal(16).ToArray();
private static Image[] _blockImages;
public static Image[] BlockImages => _blockImages ??= Resources.terrain_sheet.SplitHorizontal(16).ToArray();
public static Image[] BlockImages => _blockImages ??= Resources.terrain_atlas.SplitHorizontal(16).ToArray();
private static ImageList _itemImageList;
public static ImageList ItemImageList
private static Image[] _particleImages;
public static Image[] ParticleImages => _particleImages ??= Resources.particles_atlas.SplitHorizontal(16).ToArray();
private static Image[] _moonPhaseImages;
public static Image[] MoonPhaseImages => _moonPhaseImages ??= Resources.moon_phases_atlas.SplitHorizontal(4).ToArray();
private static Image[] _mapIconImages;
public static Image[] MapIconImages => _mapIconImages ??= Resources.map_icons_atlas.SplitHorizontal(4).ToArray();
private static Image[] _additionalMapIconImages;
public static Image[] AdditionalMapIconImages => _additionalMapIconImages ??= Resources.additional_map_icons_atlas.SplitHorizontal(4).ToArray();
private static Image[] _experienceOrbIconImages;
public static Image[] ExperienceOrbImages => _experienceOrbIconImages ??= Resources.experience_orbs_atlas.SplitHorizontal(4).ToArray();
private static Image[] _explosionImages;
public static Image[] ExplosionImages => _explosionImages ??= Resources.explosions_atlas.SplitHorizontal(4).ToArray();
private static Image[] _paintingImages;
public static Image[] PaintingImages => _paintingImages ??= Resources.paintings_atlas.SplitHorizontal(16).ToArray();
private static Image[] _bannerImages;
public static Image[] BannerImages => _bannerImages ??= Resources.banners_atlas.SplitHorizontal(6).ToArray();
private static ImageList GetImageList(Image[] images)
{
get
{
if (_itemImageList is null)
{
_itemImageList = new ImageList();
_itemImageList.ColorDepth = ColorDepth.Depth32Bit;
_itemImageList.Images.AddRange(ItemImages);
}
return _itemImageList;
}
ImageList _imageList = new ImageList();
_imageList.ColorDepth = ColorDepth.Depth32Bit;
_imageList.Images.AddRange(images);
return _imageList;
}
private static ImageList _blockImageList;
public static ImageList BlockImageList
{
get
{
if (_blockImageList is null)
{
_blockImageList = new ImageList();
_blockImageList.ColorDepth = ColorDepth.Depth32Bit;
_blockImageList.Images.AddRange(BlockImages);
}
return _blockImageList;
}
}
private static ImageList _blockImageList = GetImageList(BlockImages);
public static ImageList BlockImageList { get { return _blockImageList; } }
private static ImageList _itemImageList = GetImageList(ItemImages);
public static ImageList ItemImageList { get { return _itemImageList; } }
private static ImageList _particleImageList = GetImageList(ParticleImages);
public static ImageList ParticleImageList { get { return _particleImageList; } }
private static ImageList _moonPhaseImageList = GetImageList(MoonPhaseImages);
public static ImageList MoonPhaseImageList { get { return _moonPhaseImageList; } }
private static ImageList _mapIconImageList = GetImageList(MapIconImages);
public static ImageList MapIconImageList { get { return _mapIconImageList; } }
private static ImageList _additionalMapIconImageList = GetImageList(AdditionalMapIconImages);
public static ImageList AdditionalMapIconImageList { get { return _additionalMapIconImageList; } }
private static ImageList _experienceOrbsImageList = GetImageList(ExperienceOrbImages);
public static ImageList ExperienceOrbImageList { get { return _experienceOrbsImageList; } }
private static ImageList _explosionImageList = GetImageList(ExplosionImages);
public static ImageList ExplosionImageList { get { return _explosionImageList; } }
private static ImageList _paintingImageList = GetImageList(PaintingImages);
public static ImageList PaintingImageList { get { return _paintingImageList; } }
private static ImageList _bannerImageList = GetImageList(BannerImages);
public static ImageList BannerImageList { get { return _bannerImageList; } }
}
}

View File

@@ -392,15 +392,72 @@ namespace PckStudio
return;
}
if (file.Filename == "res/terrain.png" || file.Filename == "res/items.png")
bool isTerrain = file.Filename == "res/terrain.png";
bool isItems = file.Filename == "res/items.png";
bool isParticles = file.Filename == "res/particles.png";
bool isMoonPhases = file.Filename == "res/terrain/moon_phases.png";
bool isMapIcons = file.Filename == "res/misc/mapicons.png";
bool isAdditionalMapIcons = file.Filename == "res/misc/additionalmapicons.png";
bool isXPOrbs = file.Filename == "res/item/xporb.png";
bool isExplosions = file.Filename == "res/misc/explosion.png";
bool isPaintings = file.Filename == "res/art/kz.png";
bool isBanners = file.Filename == "res/item/banner/Banner_Atlas.png";
if (
isTerrain || isItems || isParticles || isMoonPhases || isPaintings ||
isMapIcons || isAdditionalMapIcons || isXPOrbs || isExplosions || isBanners
)
{
var img = file.GetTexture();
var res = img.Width / 16; // texture count on X axes
var size = new Size(res, res);
var viewer = new TextureAtlasEditor(currentPCK, file.Filename, img, size);
var tile_size = new Size();
var banner_scale = img.Width / Resources.banners_atlas.Width;
if (isBanners)
{
// The banner atlas has extra space on it that has to be truncated for the editor
img = img.GetArea(new Rectangle(0, 0, img.Width - (4 * banner_scale), img.Height - (1 * banner_scale)));
// banners are 42x41 because of course they are
tile_size = new Size(42 * banner_scale, 41 * banner_scale);
}
// most atlases have 4 columns
var columnCount = isBanners ? 6 : 4;
if (isTerrain || isItems || isParticles || isPaintings) columnCount = 16;
if (!isBanners)
{
var resolution = img.Width / columnCount;
tile_size = new Size(resolution, resolution);
}
var viewer = new TextureAtlasEditor(currentPCK, file.Filename, img, tile_size);
if (viewer.ShowDialog() == DialogResult.OK)
{
file.SetData(viewer.FinalTexture, ImageFormat.Png);
var texture = viewer.FinalTexture;
if(isBanners)
{
var graphicsConfig = new GraphicsConfig()
{
InterpolationMode = InterpolationMode.NearestNeighbor,
PixelOffsetMode = PixelOffsetMode.HighQuality
};
var _img = new Bitmap((Resources.banners_atlas.Width + 4) * banner_scale,
(Resources.banners_atlas.Height + 1) * banner_scale);
using (var g = Graphics.FromImage(_img))
{
g.ApplyConfig(graphicsConfig);
g.DrawImage(texture, 0, 0, texture.Width, texture.Height);
}
texture = _img;
}
file.SetData(texture, ImageFormat.Png);
wasModified = true;
BuildMainTreeView();
}

View File

@@ -140,6 +140,11 @@
<Compile Include="Internal\AnimationCategory.cs" />
<Compile Include="Internal\SkinAnimFlag.cs" />
<Compile Include="Internal\SkinAnimMask.cs" />
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="ToolboxItems\BlendPictureBox.cs">
<SubType>Component</SubType>
</Compile>
@@ -614,11 +619,6 @@
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
@@ -629,7 +629,16 @@
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\entityData.json" />
<None Include="Resources\atlases\bannerData.json" />
<None Include="Resources\atlases\blockData.json" />
<None Include="Resources\atlases\entityData.json" />
<None Include="Resources\atlases\experienceOrbData.json" />
<None Include="Resources\atlases\explosionData.json" />
<None Include="Resources\atlases\itemData.json" />
<None Include="Resources\atlases\mapIconData.json" />
<None Include="Resources\atlases\moonPhaseData.json" />
<None Include="Resources\atlases\paintingData.json" />
<None Include="Resources\atlases\particleData.json" />
<None Include="Resources\TexturePackIcon.png" />
<None Include="Resources\binka\binkawin.asi" />
<None Include="Resources\fileTemplates\1.91_colours.col" />
@@ -645,16 +654,13 @@
<None Include="Resources\fileTemplates\tu53colours.col" />
<None Include="Resources\fileTemplates\tu54colours.col" />
<None Include="Resources\fileTemplates\tu69colours.col" />
<None Include="Resources\tileData.json" />
<None Include="Resources\external\Youtube.png" />
<None Include="Resources\pckClosed.png" />
<None Include="Resources\external\Discord.png" />
<None Include="Resources\icons\clock.png" />
<None Include="Resources\changeTile.png" />
<None Include="Resources\items.png" />
<None Include="Resources\HamburgerMenuIcon.png" />
<None Include="Resources\pack.png" />
<None Include="Resources\terrain.png" />
<None Include="Resources\external\Xbox.png" />
<None Include="Resources\external\PS3.png" />
<None Include="Resources\external\WiiU.png" />
@@ -680,7 +686,17 @@
<None Include="Resources\Comparison.png" />
<None Include="Resources\iconImageList\ENTITY MATERIALS ICON.png" />
<None Include="Resources\iconImageList\blank.png" />
<None Include="Resources\entities.png" />
<None Include="Resources\atlases\additional_mapicons.png" />
<None Include="Resources\atlases\map_icons.png" />
<None Include="Resources\atlases\banners.png" />
<Content Include="Resources\atlases\entities.png" />
<None Include="Resources\atlases\experience_orbs.png" />
<None Include="Resources\atlases\explosion.png" />
<Content Include="Resources\atlases\items.png" />
<Content Include="Resources\atlases\moon_phases.png" />
<None Include="Resources\atlases\particles.png" />
<None Include="Resources\atlases\paintings.png" />
<Content Include="Resources\atlases\terrain.png" />
<Content Include="Resources\icons\file_delete.png" />
<Content Include="Resources\icons\file_empty.png" />
<None Include="Resources\icons\file_export.png" />

View File

@@ -70,6 +70,16 @@ namespace PckStudio.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap additional_map_icons_atlas {
get {
object obj = ResourceManager.GetObject("additional_map_icons_atlas", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
@@ -90,6 +100,53 @@ namespace PckStudio.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to {
/// &quot;COMMENT_1&quot;: &quot;JSON by MattNL&quot;,
/// &quot;banners&quot;: [
/// {
/// &quot;internalName&quot;: &quot;base&quot;,
/// &quot;displayName&quot;: &quot;Base&quot;
/// },
/// {
/// &quot;internalName&quot;: &quot;border&quot;,
/// &quot;displayName&quot;: &quot;Bordure&quot;
/// },
/// {
/// &quot;internalName&quot;: &quot;bricks&quot;,
/// &quot;displayName&quot;: &quot;Field Masoned&quot;
/// },
/// {
/// &quot;internalName&quot;: &quot;circle&quot;,
/// &quot;displayName&quot;: &quot;Roundel&quot;
/// },
/// {
/// &quot;internalName&quot;: &quot;creeper&quot;,
/// &quot;displayName&quot;: &quot;Creeper Charge&quot;
/// },
/// {
/// &quot;internalName&quot;: &quot;cross&quot;,
/// &quot;displayName&quot;: &quot;Saltire&quot;
/// },
/// {
/// &quot;internalName&quot;: &quot;curly_bo [rest of string was truncated]&quot;;.
/// </summary>
public static string bannerData {
get {
return ResourceManager.GetString("bannerData", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap banners_atlas {
get {
object obj = ResourceManager.GetObject("banners_atlas", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
@@ -140,6 +197,38 @@ namespace PckStudio.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to {
/// &quot;COMMENT_1&quot;: &quot;Tile data research by MattNL&quot;,
/// &quot;COMMENT_2&quot;: &quot;JSON by PhoenixARC, MattNL, and NessieHax (Miku-666)&quot;,
/// &quot;blocks&quot;: [
/// {
/// &quot;internalName&quot;: &quot;grass_top&quot;,
/// &quot;displayName&quot;: &quot;Grass Block (Top)&quot;,
/// &quot;hasColourEntry&quot;: true,
/// &quot;colourEntry&quot;: {
/// &quot;defaultName&quot;: &quot;Grass_Common&quot;,
/// &quot;variants&quot;: [
/// &quot;Grass_Common&quot;,
/// &quot;Grass_Mesa&quot;,
/// &quot;Grass_Swamp1&quot;,
/// &quot;Grass_Swamp2&quot;
/// ]
/// }
/// },
/// {
/// &quot;internalName&quot;: &quot;stone&quot;,
/// &quot;displayName&quot;: &quot;Stone&quot;
/// },
/// {
/// &quot;internalName&quot;: [rest of string was truncated]&quot;;.
/// </summary>
public static string blockData {
get {
return ResourceManager.GetString("blockData", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
@@ -235,9 +324,9 @@ namespace PckStudio.Properties {
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap entities_sheet {
public static System.Drawing.Bitmap entities_atlas {
get {
object obj = ResourceManager.GetObject("entities_sheet", resourceCulture);
object obj = ResourceManager.GetObject("entities_atlas", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
@@ -284,6 +373,87 @@ namespace PckStudio.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap experience_orbs_atlas {
get {
object obj = ResourceManager.GetObject("experience_orbs_atlas", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized string similar to {
/// &quot;COMMENT_1&quot;: &quot;JSON by MattNL&quot;,
/// &quot;experience_orbs&quot;: [
/// {
/// &quot;internalName&quot;: &quot;experience_orb_0&quot;,
/// &quot;displayName&quot;: &quot;Experience Orb (Size 1)&quot;,
/// &quot;hasColourEntry&quot;: true,
/// &quot;colourEntry&quot;: {
/// &quot;defaultName&quot;: &quot;experience_orb&quot;,
/// &quot;variants&quot;: [&quot;experience_orb&quot;]
/// }
/// },
/// {
/// &quot;internalName&quot;: &quot;experience_orb_1&quot;,
/// &quot;displayName&quot;: &quot;Experience Orb (Size 2)&quot;,
/// &quot;hasColourEntry&quot;: true,
/// &quot;colourEntry&quot;: {
/// &quot;defaultName&quot;: &quot;experience_orb&quot;,
/// &quot;variants&quot;: [&quot;experience_orb&quot;]
/// }
/// },
/// [rest of string was truncated]&quot;;.
/// </summary>
public static string experienceOrbData {
get {
return ResourceManager.GetString("experienceOrbData", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to {
/// &quot;COMMENT_1&quot;: &quot;JSON by MattNL&quot;,
/// &quot;explosions&quot;: [
/// {
/// &quot;internalName&quot;: &quot;explosion_0&quot;,
/// &quot;displayName&quot;: &quot;Explosion (Stage 1)&quot;,
/// &quot;hasColourEntry&quot;: true,
/// &quot;colourEntry&quot;: {
/// &quot;defaultName&quot;: &quot;Particle_Explode&quot;,
/// &quot;variants&quot;: [
/// &quot;Particle_Explode&quot;,
/// &quot;Particle_HugeExplosion&quot;
/// ]
/// }
/// },
/// {
/// &quot;internalName&quot;: &quot;explosion_1&quot;,
/// &quot;displayName&quot;: &quot;Explosion (Stage 2)&quot;,
/// &quot;hasColourEntry&quot;: true,
/// &quot;colourEntry&quot;: {
/// &quot;defaultName&quot;: &quot;Particle_Explode&quot;,
/// &quot;variants&quot;: [
/// [rest of string was truncated]&quot;;.
/// </summary>
public static string explosionData {
get {
return ResourceManager.GetString("explosionData", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap explosions_atlas {
get {
object obj = ResourceManager.GetObject("explosions_atlas", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
@@ -384,12 +554,40 @@ namespace PckStudio.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to {
/// &quot;COMMENT_1&quot;: &quot;Tile data research by MattNL&quot;,
/// &quot;COMMENT_2&quot;: &quot;JSON by PhoenixARC, MattNL, and NessieHax (Miku-666)&quot;,
/// &quot;items&quot;: [
/// {
/// &quot;internalName&quot;: &quot;helmetCloth&quot;,
/// &quot;displayName&quot;: &quot;Leather Cap&quot;,
/// &quot;hasColourEntry&quot;: true,
/// &quot;colourEntry&quot;: {
/// &quot;hasCustomColour&quot;: true,
/// &quot;defaultName&quot;: &quot;Armour_Default_Leather_Colour&quot;,
/// &quot;variants&quot;: [ &quot;Armour_Default_Leather_Colour&quot; ]
/// }
/// },
/// {
/// &quot;internalName&quot;: &quot;helmetChain&quot;,
/// &quot;displayName&quot;: &quot;Chain Helmet&quot;
/// },
/// {
/// &quot;internalName&quot;: &quot;he [rest of string was truncated]&quot;;.
/// </summary>
public static string itemData {
get {
return ResourceManager.GetString("itemData", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap items_sheet {
public static System.Drawing.Bitmap items_atlas {
get {
object obj = ResourceManager.GetObject("items_sheet", resourceCulture);
object obj = ResourceManager.GetObject("items_atlas", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
@@ -404,6 +602,53 @@ namespace PckStudio.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap map_icons_atlas {
get {
object obj = ResourceManager.GetObject("map_icons_atlas", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized string similar to {
/// &quot;COMMENT_1&quot;: &quot;JSON by MattNL&quot;,
/// &quot;map_icons&quot;: [
/// {
/// &quot;internalName&quot;: &quot;player_1&quot;,
/// &quot;displayName&quot;: &quot;Player 1&quot;
/// },
/// {
/// &quot;internalName&quot;: &quot;player_2&quot;,
/// &quot;displayName&quot;: &quot;Player 2&quot;
/// },
/// {
/// &quot;internalName&quot;: &quot;player_3&quot;,
/// &quot;displayName&quot;: &quot;Player 3&quot;
/// },
/// {
/// &quot;internalName&quot;: &quot;player_4&quot;,
/// &quot;displayName&quot;: &quot;Player 4&quot;
/// },
/// {
/// &quot;internalName&quot;: &quot;target_x&quot;,
/// &quot;displayName&quot;: &quot;Unused&quot;
/// },
/// {
/// &quot;internalName&quot;: &quot;target_point&quot;,
/// &quot;displayName&quot;: &quot;Target Point (Unused)&quot;
/// },
/// {
/// [rest of string was truncated]&quot;;.
/// </summary>
public static string mapIconData {
get {
return ResourceManager.GetString("mapIconData", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
@@ -414,6 +659,50 @@ namespace PckStudio.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap moon_phases_atlas {
get {
object obj = ResourceManager.GetObject("moon_phases_atlas", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized string similar to {
/// &quot;COMMENT_1&quot;: &quot;JSON by MattNL&quot;,
/// &quot;moon_phases&quot;: [
/// {
/// &quot;internalName&quot;: &quot;moon_phase_0&quot;,
/// &quot;displayName&quot;: &quot;Full Moon&quot;
/// },
/// {
/// &quot;internalName&quot;: &quot;moon_phase_1&quot;,
/// &quot;displayName&quot;: &quot;Waning Gibbous&quot;
/// },
/// {
/// &quot;internalName&quot;: &quot;moon_phase_2&quot;,
/// &quot;displayName&quot;: &quot;Last Quarter&quot;
/// },
/// {
/// &quot;internalName&quot;: &quot;moon_phase_3&quot;,
/// &quot;displayName&quot;: &quot;Waning Crescent&quot;
/// },
/// {
/// &quot;internalName&quot;: &quot;moon_phase_4&quot;,
/// &quot;displayName&quot;: &quot;New Moon&quot;
/// },
/// {
/// &quot;internalName&quot;: &quot;moon_phase_5&quot;,
/// &quot;displayNa [rest of string was truncated]&quot;;.
/// </summary>
public static string moonPhaseData {
get {
return ResourceManager.GetString("moonPhaseData", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.Byte[].
/// </summary>
@@ -454,6 +743,87 @@ namespace PckStudio.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to {
/// &quot;COMMENT_1&quot;: &quot;JSON by MattNL&quot;,
/// &quot;paintings&quot;: [
/// {
/// &quot;internalName&quot;: &quot;Kebab&quot;,
/// &quot;displayName&quot;: &quot;\&quot;Kebab med tre pepperoni\&quot; by Kristoffer Zetterstrand&quot;
/// },
/// {
/// &quot;internalName&quot;: &quot;Aztec&quot;,
/// &quot;displayName&quot;: &quot;\&quot;de_aztec\&quot; by Kristoffer Zetterstrand&quot;
/// },
/// {
/// &quot;internalName&quot;: &quot;Alban&quot;,
/// &quot;displayName&quot;: &quot;\&quot;Albanian\&quot; by Kristoffer Zetterstrand&quot;
/// },
/// {
/// &quot;internalName&quot;: &quot;Aztec2&quot;,
/// &quot;displayName&quot;: &quot;\&quot;de_aztec\&quot; by Kristoffer Zetterstrand&quot;
/// },
/// {
/// &quot;internalName&quot;: &quot;Bomb&quot;,
/// &quot;di [rest of string was truncated]&quot;;.
/// </summary>
public static string paintingData {
get {
return ResourceManager.GetString("paintingData", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap paintings_atlas {
get {
object obj = ResourceManager.GetObject("paintings_atlas", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized string similar to {
/// &quot;COMMENT_1&quot;: &quot;JSON by MattNL&quot;,
/// &quot;particles&quot;: [
/// {
/// &quot;internalName&quot;: &quot;generic_0&quot;,
/// &quot;displayName&quot;: &quot;Generic (Stage 1)&quot;,
/// &quot;hasColourEntry&quot;: true,
/// &quot;colourEntry&quot;: {
/// &quot;defaultName&quot;: &quot;None&quot;,
/// &quot;variants&quot;: [
/// &quot;None&quot;,
/// &quot;Particle_Smoke&quot;,
/// &quot;Particle_NetherPortal&quot;,
/// &quot;Particle_EnderPortal&quot;,
/// &quot;Particle_Ender&quot;,
/// &quot;Particle_DragonBreathMin&quot;,
/// &quot;Particle_DragonBreathMax&quot;
/// ]
/// }
/// },
/// {
/// &quot;internalName&quot;: &quot;generic_1&quot;,
/// &quot;displayName&quot;: &quot;Generic (Stage 2)&quot;, [rest of string was truncated]&quot;;.
/// </summary>
public static string particleData {
get {
return ResourceManager.GetString("particleData", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap particles_atlas {
get {
object obj = ResourceManager.GetObject("particles_atlas", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
@@ -587,9 +957,9 @@ namespace PckStudio.Properties {
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap terrain_sheet {
public static System.Drawing.Bitmap terrain_atlas {
get {
object obj = ResourceManager.GetObject("terrain_sheet", resourceCulture);
object obj = ResourceManager.GetObject("terrain_atlas", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
@@ -614,40 +984,6 @@ namespace PckStudio.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to {
/// &quot;COMMENT_1&quot;: &quot;Tile data research by MattNL&quot;,
/// &quot;COMMENT_2&quot;: &quot;JSON conversion by PhoenixARC&quot;,
/// &quot;blocks&quot;: [
/// {
/// &quot;internalName&quot;: &quot;grass_top&quot;,
/// &quot;displayName&quot;: &quot;Grass Block (Top)&quot;
/// },
/// {
/// &quot;internalName&quot;: &quot;stone&quot;,
/// &quot;displayName&quot;: &quot;Stone&quot;
/// },
/// {
/// &quot;internalName&quot;: &quot;dirt&quot;,
/// &quot;displayName&quot;: &quot;Dirt&quot;
/// },
/// {
/// &quot;internalName&quot;: &quot;grass_side&quot;,
/// &quot;displayName&quot;: &quot;Grass Block (Side)&quot;
/// },
/// {
/// &quot;internalName&quot;: &quot;planks_oak&quot;,
/// &quot;displayName&quot;: &quot;Oak Planks&quot;
/// },
/// {
/// &quot;internalName&quot;: [rest of string was truncated]&quot;;.
/// </summary>
public static string tileData {
get {
return ResourceManager.GetString("tileData", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.Byte[].
/// </summary>

View File

@@ -172,9 +172,6 @@
<data name="GRH_ICON" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\iconImageList\GRH ICON.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="tileData" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\tileData.json;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
</data>
<data name="pckClosed" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\pckClosed.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@@ -226,8 +223,8 @@
<data name="INFO_ICON" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\iconImageList\INFO ICON.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="terrain_sheet" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\terrain.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="terrain_atlas" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\atlases\terrain.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="tu53colours" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\fileTemplates\tu53colours.col;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
@@ -235,8 +232,8 @@
<data name="clock" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons\clock.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="items_sheet" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\items.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="items_atlas" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\atlases\items.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="CHANGELOG" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\..\CHANGELOG.md;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
@@ -280,11 +277,11 @@
<data name="blank" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\iconImageList\blank.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="entities_sheet" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\entities.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="entities_atlas" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\atlases\entities.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="entityData" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\entityData.json;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
<value>..\Resources\atlases\entityData.json;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
</data>
<data name="file_delete" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons\file_delete.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@@ -328,4 +325,55 @@
<data name="ProjectLogo" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\..\ProjectLogo.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="moon_phases_atlas" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\atlases\moon_phases.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="additional_map_icons_atlas" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\atlases\additional_mapicons.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="map_icons_atlas" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\atlases\map_icons.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="experience_orbs_atlas" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\atlases\experience_orbs.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="blockData" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\atlases\blockData.json;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
</data>
<data name="experienceOrbData" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\atlases\experienceOrbData.json;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
</data>
<data name="explosionData" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\atlases\explosionData.json;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
</data>
<data name="explosions_atlas" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\atlases\explosion.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="itemData" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\atlases\itemData.json;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
</data>
<data name="mapIconData" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\atlases\mapIconData.json;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
</data>
<data name="moonPhaseData" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\atlases\moonPhaseData.json;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
</data>
<data name="particleData" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\atlases\particleData.json;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
</data>
<data name="particles_atlas" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\atlases\particles.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="bannerData" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\atlases\bannerData.json;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
</data>
<data name="banners_atlas" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\atlases\banners.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="paintingData" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\atlases\paintingData.json;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="paintings_atlas" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\atlases\paintings.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 49 KiB

View File

@@ -0,0 +1,124 @@
{
"COMMENT_1": "JSON by MattNL",
"entries": [
{
"internalName": "experience_orb_0",
"displayName": "Experience Orb (Size 1)",
"hasColourEntry": true,
"colourEntry": {
"defaultName": "experience_orb",
"variants": ["experience_orb"]
}
},
{
"internalName": "experience_orb_1",
"displayName": "Experience Orb (Size 2)",
"hasColourEntry": true,
"colourEntry": {
"defaultName": "experience_orb",
"variants": ["experience_orb"]
}
},
{
"internalName": "experience_orb_2",
"displayName": "Experience Orb (Size 3)",
"hasColourEntry": true,
"colourEntry": {
"defaultName": "experience_orb",
"variants": ["experience_orb"]
}
},
{
"internalName": "experience_orb_3",
"displayName": "Experience Orb (Size 4)",
"hasColourEntry": true,
"colourEntry": {
"defaultName": "experience_orb",
"variants": ["experience_orb"]
}
},
{
"internalName": "experience_orb_4",
"displayName": "Experience Orb (Size 5)",
"hasColourEntry": true,
"colourEntry": {
"defaultName": "experience_orb",
"variants": ["experience_orb"]
}
},
{
"internalName": "experience_orb_5",
"displayName": "Experience Orb (Size 6)",
"hasColourEntry": true,
"colourEntry": {
"defaultName": "experience_orb",
"variants": ["experience_orb"]
}
},
{
"internalName": "experience_orb_6",
"displayName": "Experience Orb (Size 7)",
"hasColourEntry": true,
"colourEntry": {
"defaultName": "experience_orb",
"variants": ["experience_orb"]
}
},
{
"internalName": "experience_orb_7",
"displayName": "Experience Orb (Size 8)",
"hasColourEntry": true,
"colourEntry": {
"defaultName": "experience_orb",
"variants": ["experience_orb"]
}
},
{
"internalName": "experience_orb_8",
"displayName": "Experience Orb (Size 9)",
"hasColourEntry": true,
"colourEntry": {
"defaultName": "experience_orb",
"variants": ["experience_orb"]
}
},
{
"internalName": "experience_orb_9",
"displayName": "Experience Orb (Size 10)",
"hasColourEntry": true,
"colourEntry": {
"defaultName": "experience_orb",
"variants": ["experience_orb"]
}
},
{
"internalName": "experience_orb_10",
"displayName": "Experience Orb (Size 11)",
"hasColourEntry": true,
"colourEntry": {
"defaultName": "experience_orb",
"variants": ["experience_orb"]
}
},
{
"internalName": "",
"displayName": ""
},
{
"internalName": "",
"displayName": ""
},
{
"internalName": "",
"displayName": ""
},
{
"internalName": "",
"displayName": ""
},
{
"internalName": "",
"displayName": ""
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 583 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1,197 @@
{
"COMMENT_1": "JSON by MattNL",
"entries": [
{
"internalName": "explosion_0",
"displayName": "Explosion (Stage 1)",
"hasColourEntry": true,
"colourEntry": {
"defaultName": "Particle_Explode",
"variants": [
"Particle_Explode",
"Particle_HugeExplosion"
]
}
},
{
"internalName": "explosion_1",
"displayName": "Explosion (Stage 2)",
"hasColourEntry": true,
"colourEntry": {
"defaultName": "Particle_Explode",
"variants": [
"Particle_Explode",
"Particle_HugeExplosion"
]
}
},
{
"internalName": "explosion_2",
"displayName": "Explosion (Stage 3)",
"hasColourEntry": true,
"colourEntry": {
"defaultName": "Particle_Explode",
"variants": [
"Particle_Explode",
"Particle_HugeExplosion"
]
}
},
{
"internalName": "explosion_3",
"displayName": "Explosion (Stage 4)",
"hasColourEntry": true,
"colourEntry": {
"defaultName": "Particle_Explode",
"variants": [
"Particle_Explode",
"Particle_HugeExplosion"
]
}
},
{
"internalName": "explosion_4",
"displayName": "Explosion (Stage 5)",
"hasColourEntry": true,
"colourEntry": {
"defaultName": "Particle_Explode",
"variants": [
"Particle_Explode",
"Particle_HugeExplosion"
]
}
},
{
"internalName": "explosion_5",
"displayName": "Explosion (Stage 6)",
"hasColourEntry": true,
"colourEntry": {
"defaultName": "Particle_Explode",
"variants": [
"Particle_Explode",
"Particle_HugeExplosion"
]
}
},
{
"internalName": "explosion_6",
"displayName": "Explosion (Stage 7)",
"hasColourEntry": true,
"colourEntry": {
"defaultName": "Particle_Explode",
"variants": [
"Particle_Explode",
"Particle_HugeExplosion"
]
}
},
{
"internalName": "explosion_7",
"displayName": "Explosion (Stage 8)",
"hasColourEntry": true,
"colourEntry": {
"defaultName": "Particle_Explode",
"variants": [
"Particle_Explode",
"Particle_HugeExplosion"
]
}
},
{
"internalName": "explosion_8",
"displayName": "Explosion (Stage 9)",
"hasColourEntry": true,
"colourEntry": {
"defaultName": "Particle_Explode",
"variants": [
"Particle_Explode",
"Particle_HugeExplosion"
]
}
},
{
"internalName": "explosion_9",
"displayName": "Explosion (Stage 10)",
"hasColourEntry": true,
"colourEntry": {
"defaultName": "Particle_Explode",
"variants": [
"Particle_Explode",
"Particle_HugeExplosion"
]
}
},
{
"internalName": "explosion_10",
"displayName": "Explosion (Stage 11)",
"hasColourEntry": true,
"colourEntry": {
"defaultName": "Particle_Explode",
"variants": [
"Particle_Explode",
"Particle_HugeExplosion"
]
}
},
{
"internalName": "explosion_11",
"displayName": "Explosion (Stage 12)",
"hasColourEntry": true,
"colourEntry": {
"defaultName": "Particle_Explode",
"variants": [
"Particle_Explode",
"Particle_HugeExplosion"
]
}
},
{
"internalName": "explosion_12",
"displayName": "Explosion (Stage 13)",
"hasColourEntry": true,
"colourEntry": {
"defaultName": "Particle_Explode",
"variants": [
"Particle_Explode",
"Particle_HugeExplosion"
]
}
},
{
"internalName": "explosion_13",
"displayName": "Explosion (Stage 14)",
"hasColourEntry": true,
"colourEntry": {
"defaultName": "Particle_Explode",
"variants": [
"Particle_Explode",
"Particle_HugeExplosion"
]
}
},
{
"internalName": "explosion_14",
"displayName": "Explosion (Stage 15)",
"hasColourEntry": true,
"colourEntry": {
"defaultName": "Particle_Explode",
"variants": [
"Particle_Explode",
"Particle_HugeExplosion"
]
}
},
{
"internalName": "explosion_15",
"displayName": "Explosion (Stage 16)",
"hasColourEntry": true,
"colourEntry": {
"defaultName": "Particle_Explode",
"variants": [
"Particle_Explode",
"Particle_HugeExplosion"
]
}
}
]
}

File diff suppressed because it is too large Load Diff

View File

Before

Width:  |  Height:  |  Size: 152 KiB

After

Width:  |  Height:  |  Size: 152 KiB

View File

@@ -0,0 +1,135 @@
{
"COMMENT_1": "JSON by MattNL",
"entries": [
{
"internalName": "player_1",
"displayName": "Player 1"
},
{
"internalName": "player_2",
"displayName": "Player 2"
},
{
"internalName": "player_3",
"displayName": "Player 3"
},
{
"internalName": "player_4",
"displayName": "Player 4"
},
{
"internalName": "target_x",
"displayName": "Unused"
},
{
"internalName": "target_point",
"displayName": "Target Point (Unused)"
},
{
"internalName": "player_off_map",
"displayName": "Player (Off Map) (Unused)"
},
{
"internalName": "frame",
"displayName": "Item Frame"
},
{
"internalName": "player_5",
"displayName": "Player 5"
},
{
"internalName": "player_6",
"displayName": "Player 6"
},
{
"internalName": "player_7",
"displayName": "Player 7"
},
{
"internalName": "player_8",
"displayName": "Player 8"
},
{
"internalName": "structure",
"displayName": "Structure (Explorer Map)"
},
{
"internalName": "player_off_limits",
"displayName": "Player (Off Limits) (Unused)"
},
{
"internalName": "mansion",
"displayName": "Woodland Mansion (Explorer Map)"
},
{
"internalName": "monument",
"displayName": "Ocean Monument (Explorer Map)"
}
],
"additional_entries": [
{
"internalName": "player_1_off_map",
"displayName": "Player 1 (Off Map)"
},
{
"internalName": "player_2_off_map",
"displayName": "Player 2 (Off Map)"
},
{
"internalName": "player_3_off_map",
"displayName": "Player 3 (Off Map)"
},
{
"internalName": "player_4_off_map",
"displayName": "Player 4 (Off Map)"
},
{
"internalName": "treasure",
"displayName": "Buried Treasure"
},
{
"internalName": "",
"displayName": ""
},
{
"internalName": "",
"displayName": ""
},
{
"internalName": "",
"displayName": ""
},
{
"internalName": "player_5_off_map",
"displayName": "Player 5 (Off Map)"
},
{
"internalName": "player_6_off_map",
"displayName": "Player 6 (Off Map)"
},
{
"internalName": "player_7_off_map",
"displayName": "Player 7 (Off Map)"
},
{
"internalName": "player_8_off_map",
"displayName": "Player 8 (Off Map)"
},
{
"internalName": "",
"displayName": ""
},
{
"internalName": "",
"displayName": ""
},
{
"internalName": "",
"displayName": ""
},
{
"internalName": "",
"displayName": ""
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

@@ -0,0 +1,37 @@
{
"COMMENT_1": "JSON by MattNL",
"entries": [
{
"internalName": "moon_phase_0",
"displayName": "Full Moon"
},
{
"internalName": "moon_phase_1",
"displayName": "Waning Gibbous"
},
{
"internalName": "moon_phase_2",
"displayName": "Last Quarter"
},
{
"internalName": "moon_phase_3",
"displayName": "Waning Crescent"
},
{
"internalName": "moon_phase_4",
"displayName": "New Moon"
},
{
"internalName": "moon_phase_5",
"displayName": "Waxing Crescent"
},
{
"internalName": "moon_phase_6",
"displayName": "First Quarter"
},
{
"internalName": "moon_phase_7",
"displayName": "Waxing Gibbous"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 222 KiB

After

Width:  |  Height:  |  Size: 222 KiB