dialogues rewrites & more week 6 porting WIP

This commit is contained in:
⍚~Nex
2024-02-17 04:03:11 +01:00
parent ae721ed4e4
commit 778de6bbc6
15 changed files with 173 additions and 72 deletions
+40 -14
View File
@@ -61,16 +61,14 @@ class XMLUtil {
}
/**
* Creates a new sprite based on a XML node.
* Overrides a sprite based on a XML node.
*/
public static function createSpriteFromXML(node:Access, parentFolder:String = "", defaultAnimType:XMLAnimType = BEAT, ?cl:Class<FunkinSprite>):FunkinSprite {
public static function loadSpriteFromXML(spr:FunkinSprite, node:Access, parentFolder:String = "", defaultAnimType:XMLAnimType = BEAT):FunkinSprite {
if (parentFolder == null) parentFolder = "";
var spr:FunkinSprite = cl != null ? Type.createInstance(cl, []) : new FunkinSprite();
spr.name = node.getAtt("name");
spr.antialiasing = true;
spr.loadSprite(Paths.image('$parentFolder${node.getAtt("sprite")}', null, true));
spr.loadSprite(Paths.image('$parentFolder${node.getAtt("sprite").getDefault(spr.name)}', null, true));
spr.spriteAnimType = defaultAnimType;
if (node.has.type) {
@@ -88,15 +86,14 @@ class XMLUtil {
if (node.has.scroll) {
var scroll:Null<Float> = Std.parseFloat(node.att.scroll);
if (scroll.isNotNull()) spr.scrollFactor.set(scroll, scroll);
} else {
if (node.has.scrollx) {
var scroll:Null<Float> = Std.parseFloat(node.att.scrollx);
if (scroll.isNotNull()) spr.scrollFactor.x = scroll;
}
if (node.has.scrolly) {
var scroll:Null<Float> = Std.parseFloat(node.att.scrolly);
if (scroll.isNotNull()) spr.scrollFactor.y = scroll;
}
}
if (node.has.scrollx) {
var scroll:Null<Float> = Std.parseFloat(node.att.scrollx);
if (scroll.isNotNull()) spr.scrollFactor.x = scroll;
}
if (node.has.scrolly) {
var scroll:Null<Float> = Std.parseFloat(node.att.scrolly);
if (scroll.isNotNull()) spr.scrollFactor.y = scroll;
}
if (node.has.skewx) {
var skew:Null<Float> = Std.parseFloat(node.att.skewx);
@@ -107,6 +104,14 @@ class XMLUtil {
if (skew.isNotNull()) spr.skew.y = skew;
}
if (node.has.antialiasing) spr.antialiasing = node.att.antialiasing == "true";
if (node.has.width) {
var width:Null<Float> = Std.parseFloat(node.att.width);
if (width.isNotNull()) spr.width = width;
}
if (node.has.height) {
var height:Null<Float> = Std.parseFloat(node.att.height);
if (height.isNotNull()) spr.height = height;
}
if (node.has.scale) {
var scale:Null<Float> = Std.parseFloat(node.att.scale);
if (scale.isNotNull()) spr.scale.set(scale, scale);
@@ -119,6 +124,18 @@ class XMLUtil {
var scale:Null<Float> = Std.parseFloat(node.att.scaley);
if (scale.isNotNull()) spr.scale.y = scale;
}
if (node.has.graphicSize) {
var graphicSize:Null<Int> = Std.parseInt(node.att.graphicSize);
if (graphicSize.isNotNull()) spr.setGraphicSize(graphicSize, graphicSize);
}
if (node.has.graphicSizex) {
var graphicSizex:Null<Int> = Std.parseInt(node.att.graphicSizex);
if (graphicSizex.isNotNull()) spr.setGraphicSize(graphicSizex);
}
if (node.has.graphicSizey) {
var graphicSizey:Null<Int> = Std.parseInt(node.att.graphicSizey);
if (graphicSizey.isNotNull()) spr.setGraphicSize(0, graphicSizey);
}
if (node.has.updateHitbox && node.att.updateHitbox == "true") spr.updateHitbox();
if(node.has.zoomfactor)
@@ -156,6 +173,15 @@ class XMLUtil {
return spr;
}
/**
* Creates a new sprite based on a XML node.
*/
public static inline function createSpriteFromXML(node:Access, parentFolder:String = "", defaultAnimType:XMLAnimType = BEAT, ?cl:Class<FunkinSprite>, ?args:Array<Dynamic>):FunkinSprite {
if(cl == null) cl = FunkinSprite;
if(args == null) args = [];
return loadSpriteFromXML(Type.createInstance(cl, args), node, parentFolder, defaultAnimType);
}
public static function extractAnimFromXML(anim:Access, animType:XMLAnimType = NONE, loop:Bool = false):AnimData {
var animData:AnimData = {
name: null,