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.Tasks;
|
||||
using System.Xml;
|
||||
using System.Xml.Linq;
|
||||
using System.Drawing;
|
||||
using UndertaleModLib.Models;
|
||||
using UndertaleModLib.Util;
|
||||
|
@ -14,6 +15,7 @@ string projFolder = GetFolder(FilePath) + "Export_Project" + Path.DirectorySepar
|
|||
var context = new DecompileContext(Data, true);
|
||||
TextureWorker worker = new TextureWorker();
|
||||
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))
|
||||
{
|
||||
|
@ -81,104 +83,56 @@ async Task ExportSprites()
|
|||
void ExportSprite(UndertaleSprite sprite)
|
||||
{
|
||||
// Save the sprite GMX
|
||||
var xmlWriter = XmlWriter.Create(projFolder + "/sprites/" + sprite.Name.Content + ".sprite.gmx");
|
||||
xmlWriter.WriteStartDocument();
|
||||
var gmx = new XDocument(
|
||||
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++)
|
||||
{
|
||||
if (sprite.Textures[i]?.Texture != null)
|
||||
{
|
||||
xmlWriter.WriteStartElement("frame");
|
||||
xmlWriter.WriteAttributeString("index", i.ToString());
|
||||
xmlWriter.WriteString("images\\" + sprite.Name.Content + "_" + i + ".png");
|
||||
xmlWriter.WriteEndElement();
|
||||
gmx.Element("sprite").Element("frames").Add(
|
||||
new XElement(
|
||||
"frame",
|
||||
new XAttribute("index", i.ToString()),
|
||||
"images\\" + sprite.Name.Content + "_" + i + ".png"
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
xmlWriter.WriteEndElement();
|
||||
|
||||
xmlWriter.WriteEndElement();
|
||||
xmlWriter.WriteEndDocument();
|
||||
xmlWriter.Close();
|
||||
File.WriteAllText(projFolder + "/sprites/" + sprite.Name.Content + ".sprite.gmx", gmx.ToString());
|
||||
|
||||
// Save sprite images
|
||||
for (int i = 0; i < sprite.Textures.Count; i++)
|
||||
{
|
||||
if (sprite.Textures[i]?.Texture != null)
|
||||
{
|
||||
// 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"));
|
||||
//worker.ExportAsPNG(sprite.Textures[i].Texture, projFolder + "/sprites/images/" + sprite.Name.Content + "_" + i + ".png");
|
||||
var g = Graphics.FromImage(bitmapNew);
|
||||
|
@ -187,6 +141,7 @@ void ExportSprite(UndertaleSprite sprite)
|
|||
bitmapNew.Dispose();
|
||||
bitmapOrigin.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// --------------- Export Background ---------------
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue