Update ExportToProject.csx
This commit is contained in:
parent
d1e82e05b1
commit
f85b76410d
1 changed files with 39 additions and 84 deletions
|
@ -4,6 +4,7 @@ using System.Text;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
|
using System.Xml.Linq;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using UndertaleModLib.Models;
|
using UndertaleModLib.Models;
|
||||||
using UndertaleModLib.Util;
|
using UndertaleModLib.Util;
|
||||||
|
@ -14,6 +15,7 @@ string projFolder = GetFolder(FilePath) + "Export_Project" + Path.DirectorySepar
|
||||||
var context = new DecompileContext(Data, true);
|
var context = new DecompileContext(Data, true);
|
||||||
TextureWorker worker = new TextureWorker();
|
TextureWorker worker = new TextureWorker();
|
||||||
ThreadLocal<DecompileContext> DECOMPILE_CONTEXT = new ThreadLocal<DecompileContext>(() => new DecompileContext(Data, false));
|
ThreadLocal<DecompileContext> DECOMPILE_CONTEXT = new ThreadLocal<DecompileContext>(() => new DecompileContext(Data, false));
|
||||||
|
string gmxDeclaration = "This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!";
|
||||||
|
|
||||||
if (Directory.Exists(projFolder))
|
if (Directory.Exists(projFolder))
|
||||||
{
|
{
|
||||||
|
@ -81,104 +83,56 @@ async Task ExportSprites()
|
||||||
void ExportSprite(UndertaleSprite sprite)
|
void ExportSprite(UndertaleSprite sprite)
|
||||||
{
|
{
|
||||||
// Save the sprite GMX
|
// Save the sprite GMX
|
||||||
var xmlWriter = XmlWriter.Create(projFolder + "/sprites/" + sprite.Name.Content + ".sprite.gmx");
|
var gmx = new XDocument(
|
||||||
xmlWriter.WriteStartDocument();
|
new XComment(gmxDeclaration),
|
||||||
|
new XElement("sprite",
|
||||||
|
new XElement("type", "0"),
|
||||||
|
new XElement("xorig", sprite.OriginX.ToString()),
|
||||||
|
new XElement("yorigin", sprite.OriginY.ToString()),
|
||||||
|
new XElement("colkind", sprite.BBoxMode.ToString()),
|
||||||
|
new XElement("coltolerance", "0"),
|
||||||
|
new XElement("sepmasks", sprite.SepMasks.ToString("D")),
|
||||||
|
new XElement("bboxmode", sprite.BBoxMode.ToString()),
|
||||||
|
new XElement("bbox_left", sprite.MarginLeft.ToString()),
|
||||||
|
new XElement("bbox_right", sprite.MarginRight.ToString()),
|
||||||
|
new XElement("bbox_top", sprite.MarginTop.ToString()),
|
||||||
|
new XElement("bbox_bottom", sprite.MarginBottom.ToString()),
|
||||||
|
new XElement("HTile", "0"),
|
||||||
|
new XElement("VTile", "0"),
|
||||||
|
new XElement("TextureGroups",
|
||||||
|
new XElement("TextureGroup0", "0")
|
||||||
|
),
|
||||||
|
new XElement("For3D", "0"),
|
||||||
|
new XElement("width", sprite.Width.ToString()),
|
||||||
|
new XElement("height", sprite.Height.ToString()),
|
||||||
|
new XElement("frames"),
|
||||||
|
new XElement("bbox_right", sprite.MarginRight.ToString())
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
xmlWriter.WriteStartElement("sprite");
|
|
||||||
|
|
||||||
xmlWriter.WriteStartElement("type");
|
|
||||||
xmlWriter.WriteString("0");
|
|
||||||
xmlWriter.WriteEndElement();
|
|
||||||
|
|
||||||
xmlWriter.WriteStartElement("xorig");
|
|
||||||
xmlWriter.WriteString(sprite.OriginX.ToString());
|
|
||||||
xmlWriter.WriteEndElement();
|
|
||||||
|
|
||||||
xmlWriter.WriteStartElement("yorigin");
|
|
||||||
xmlWriter.WriteString(sprite.OriginY.ToString());
|
|
||||||
xmlWriter.WriteEndElement();
|
|
||||||
|
|
||||||
xmlWriter.WriteStartElement("colkind");
|
|
||||||
xmlWriter.WriteString(sprite.BBoxMode.ToString());
|
|
||||||
xmlWriter.WriteEndElement();
|
|
||||||
|
|
||||||
xmlWriter.WriteStartElement("coltolerance");
|
|
||||||
xmlWriter.WriteString("0");
|
|
||||||
xmlWriter.WriteEndElement();
|
|
||||||
|
|
||||||
xmlWriter.WriteStartElement("sepmasks");
|
|
||||||
xmlWriter.WriteString(sprite.SepMasks.ToString("D"));
|
|
||||||
xmlWriter.WriteEndElement();
|
|
||||||
|
|
||||||
xmlWriter.WriteStartElement("bboxmode");
|
|
||||||
xmlWriter.WriteString(sprite.BBoxMode.ToString());
|
|
||||||
xmlWriter.WriteEndElement();
|
|
||||||
|
|
||||||
xmlWriter.WriteStartElement("bbox_left");
|
|
||||||
xmlWriter.WriteString(sprite.MarginLeft.ToString());
|
|
||||||
xmlWriter.WriteEndElement();
|
|
||||||
|
|
||||||
xmlWriter.WriteStartElement("bbox_right");
|
|
||||||
xmlWriter.WriteString(sprite.MarginRight.ToString());
|
|
||||||
xmlWriter.WriteEndElement();
|
|
||||||
|
|
||||||
xmlWriter.WriteStartElement("bbox_top");
|
|
||||||
xmlWriter.WriteString(sprite.MarginTop.ToString());
|
|
||||||
xmlWriter.WriteEndElement();
|
|
||||||
|
|
||||||
xmlWriter.WriteStartElement("bbox_bottom");
|
|
||||||
xmlWriter.WriteString(sprite.MarginBottom.ToString());
|
|
||||||
xmlWriter.WriteEndElement();
|
|
||||||
|
|
||||||
xmlWriter.WriteStartElement("HTile");
|
|
||||||
xmlWriter.WriteString("0");
|
|
||||||
xmlWriter.WriteEndElement();
|
|
||||||
|
|
||||||
xmlWriter.WriteStartElement("VTile");
|
|
||||||
xmlWriter.WriteString("0");
|
|
||||||
xmlWriter.WriteEndElement();
|
|
||||||
|
|
||||||
xmlWriter.WriteStartElement("TextureGroups");
|
|
||||||
xmlWriter.WriteStartElement("TextureGroup0");
|
|
||||||
xmlWriter.WriteString("0");
|
|
||||||
xmlWriter.WriteEndElement();
|
|
||||||
xmlWriter.WriteEndElement();
|
|
||||||
|
|
||||||
xmlWriter.WriteStartElement("For3D");
|
|
||||||
xmlWriter.WriteString("0");
|
|
||||||
xmlWriter.WriteEndElement();
|
|
||||||
|
|
||||||
xmlWriter.WriteStartElement("width");
|
|
||||||
xmlWriter.WriteString(sprite.Width.ToString());
|
|
||||||
xmlWriter.WriteEndElement();
|
|
||||||
|
|
||||||
xmlWriter.WriteStartElement("height");
|
|
||||||
xmlWriter.WriteString(sprite.Height.ToString());
|
|
||||||
xmlWriter.WriteEndElement();
|
|
||||||
|
|
||||||
xmlWriter.WriteStartElement("frames");
|
|
||||||
for (int i = 0; i < sprite.Textures.Count; i++)
|
for (int i = 0; i < sprite.Textures.Count; i++)
|
||||||
{
|
{
|
||||||
if (sprite.Textures[i]?.Texture != null)
|
if (sprite.Textures[i]?.Texture != null)
|
||||||
{
|
{
|
||||||
xmlWriter.WriteStartElement("frame");
|
gmx.Element("sprite").Element("frames").Add(
|
||||||
xmlWriter.WriteAttributeString("index", i.ToString());
|
new XElement(
|
||||||
xmlWriter.WriteString("images\\" + sprite.Name.Content + "_" + i + ".png");
|
"frame",
|
||||||
xmlWriter.WriteEndElement();
|
new XAttribute("index", i.ToString()),
|
||||||
|
"images\\" + sprite.Name.Content + "_" + i + ".png"
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
xmlWriter.WriteEndElement();
|
|
||||||
|
|
||||||
xmlWriter.WriteEndElement();
|
File.WriteAllText(projFolder + "/sprites/" + sprite.Name.Content + ".sprite.gmx", gmx.ToString());
|
||||||
xmlWriter.WriteEndDocument();
|
|
||||||
xmlWriter.Close();
|
|
||||||
|
|
||||||
// Save sprite images
|
// Save sprite images
|
||||||
for (int i = 0; i < sprite.Textures.Count; i++)
|
for (int i = 0; i < sprite.Textures.Count; i++)
|
||||||
|
{
|
||||||
if (sprite.Textures[i]?.Texture != null)
|
if (sprite.Textures[i]?.Texture != null)
|
||||||
{
|
{
|
||||||
// Fix sprite size
|
// Fix sprite size
|
||||||
var bitmapNew = new Bitmap((int)sprite.Width,(int)sprite.Height);
|
var bitmapNew = new Bitmap((int)sprite.Width, (int)sprite.Height);
|
||||||
var bitmapOrigin = worker.GetTextureFor(sprite.Textures[i].Texture, Path.GetFileNameWithoutExtension(projFolder + "/sprites/images/" + sprite.Name.Content + "_" + i + ".png"));
|
var bitmapOrigin = worker.GetTextureFor(sprite.Textures[i].Texture, Path.GetFileNameWithoutExtension(projFolder + "/sprites/images/" + sprite.Name.Content + "_" + i + ".png"));
|
||||||
//worker.ExportAsPNG(sprite.Textures[i].Texture, projFolder + "/sprites/images/" + sprite.Name.Content + "_" + i + ".png");
|
//worker.ExportAsPNG(sprite.Textures[i].Texture, projFolder + "/sprites/images/" + sprite.Name.Content + "_" + i + ".png");
|
||||||
var g = Graphics.FromImage(bitmapNew);
|
var g = Graphics.FromImage(bitmapNew);
|
||||||
|
@ -187,6 +141,7 @@ void ExportSprite(UndertaleSprite sprite)
|
||||||
bitmapNew.Dispose();
|
bitmapNew.Dispose();
|
||||||
bitmapOrigin.Dispose();
|
bitmapOrigin.Dispose();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// --------------- Export Background ---------------
|
// --------------- Export Background ---------------
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue