flipX and flipY for alphabet XMLs

This commit is contained in:
Verwex
2025-08-08 12:34:30 +02:00
parent 1ca4b64402
commit 03df52c542
4 changed files with 57 additions and 3 deletions
@@ -209,6 +209,9 @@ class AlphabetEditor extends UIState {
scaleX: 1,
scaleY: 1,
flipX: false,
flipY: false,
hasColorMode: false,
colorMode: bigLetter.colorMode
};
@@ -204,6 +204,9 @@ UPPERLETTER and LOWERLETTTER can be used in any backup prefix.";
cos: 1.0,
sin: 0.0,
flipX: false,
flipY: false,
hasColorMode: false,
colorMode: 0
}],
@@ -11,6 +11,9 @@ class GlyphInfoWindow extends UIWindow {
public var angleBox:UINumericStepper;
public var colorModeDrop:UIDropDown;
public var flipXBox:UICheckbox;
public var flipYBox:UICheckbox;
public var outlineTitle:UIText;
public var outlineSep:UISprite;
public var outlineCheck:UICheckbox;
@@ -145,6 +148,9 @@ class GlyphInfoWindow extends UIWindow {
cos: compon.cos,
sin: compon.sin,
flipX: compon.flipX,
flipY: compon.flipY,
hasColorMode: compon.hasColorMode,
colorMode: compon.colorMode
};
@@ -159,6 +165,22 @@ class GlyphInfoWindow extends UIWindow {
}
members.push(outlineCheck);
flipXBox = new UICheckbox(outlineCheck.x, outlineCheck.y - outlineCheck.height - 8, "Flip X?");
flipXBox.onChecked = function(check:Bool) {
compon.flipX = check;
if (outlineCheck.checked)
data.components[compon.outIndex].flipX = check;
}
members.push(flipXBox);
flipYBox = new UICheckbox(flipXBox.x + flipXBox.width + itemMargin * 5, flipXBox.y, "Flip Y?");
flipYBox.onChecked = function(check:Bool) {
compon.flipY = check;
if (outlineCheck.checked)
data.components[compon.outIndex].flipY = check;
}
members.push(flipYBox);
outlineTitle = new UIText(colorModeDrop.x, colorModeDrop.y + colorModeDrop.bHeight + itemMargin, 0, "Outline Data");
members.push(outlineTitle);
outlineSep = new UISprite(x + itemMargin, colorModeDrop.y + colorModeDrop.bHeight + itemMargin + 19);
@@ -239,6 +261,8 @@ class GlyphInfoWindow extends UIWindow {
angleBox.value = com.angle;
@:privateAccess colorModeDrop.index = com.hasColorMode ? com.colorMode : AlphabetEditor.instance.tape.colorMode;
@:privateAccess colorModeDrop.label.text = colorModeDrop.options[colorModeDrop.index];
flipXBox.checked = com.flipX;
flipYBox.checked = com.flipY;
outlineCheck.checked = com.outIndex != null;
outlineBox.label.text = "";
+27 -3
View File
@@ -37,6 +37,9 @@ final class AlphabetComponent {
public var scaleX:Float;
public var scaleY:Float;
public var flipX:Bool;
public var flipY:Bool;
public var hasColorMode:Bool;
public var colorMode:ColorMode;
}
@@ -346,9 +349,9 @@ class Alphabet extends FlxSprite {
_matrix.translate(_frame.frame.width * -0.5, _frame.frame.height * -0.5);
if (__useDrawScale)
_matrix.scale(__drawScale.x, __drawScale.y);
_matrix.scale(__drawScale.x * (__component.flipX ? -1 : 1), __drawScale.y * (__component.flipY ? -1 : 1));
else
_matrix.scale(__component.scaleX, __component.scaleY);
_matrix.scale(__component.scaleX * (__component.flipX ? -1 : 1), __component.scaleY * (__component.flipY ? -1 : 1));
if(__component.shouldRotate)
_matrix.rotateWithTrig(__component.cos, __component.sin);
_matrix.translate(_frame.frame.width * 0.5, _frame.frame.height * 0.5);
@@ -558,6 +561,9 @@ class Alphabet extends FlxSprite {
cos: angleCos,
sin: angleSin,
flipX: node.get("flipX") == "true",
flipY: node.get("flipY") == "true",
hasColorMode: false,
colorMode: 0
}],
@@ -593,6 +599,9 @@ class Alphabet extends FlxSprite {
var colorMode = ["tint", "offsets", "none"].indexOf(component.get("colorMode"));
var xFlip = component.get("flipX") == "true";
var yFlip = component.get("flipY") == "true";
if (component.get("hasOutline") == "true") {
components.insert(startIndex, {
refIndex: componentsPushed,
@@ -608,6 +617,9 @@ class Alphabet extends FlxSprite {
cos: angleCos,
sin: angleSin,
flipX: xFlip,
flipY: yFlip,
hasColorMode: colorMode >= 0,
colorMode: colorMode,
});
@@ -628,6 +640,9 @@ class Alphabet extends FlxSprite {
cos: angleCos,
sin: angleSin,
flipX: xFlip,
flipY: yFlip,
hasColorMode: colorMode >= 0,
colorMode: colorMode,
});
@@ -659,6 +674,9 @@ class Alphabet extends FlxSprite {
var yScale:Float = Std.parseFloat(node.get("scaleY")).getDefaultFloat(1.0);
var advance:Float = Std.parseFloat(node.get("advance"));
var xFlip = node.get("flipX") == "true";
var yFlip = node.get("flipY") == "true";
var colorMode = ["tint", "offsets", "none"].indexOf(node.get("colorMode"));
var components:Array<AlphabetComponent> = [];
@@ -677,6 +695,9 @@ class Alphabet extends FlxSprite {
cos: angleCos,
sin: angleSin,
flipX: xFlip,
flipY: yFlip,
hasColorMode: colorMode >= 0,
colorMode: colorMode,
});
@@ -696,6 +717,9 @@ class Alphabet extends FlxSprite {
cos: angleCos,
sin: angleSin,
flipX: xFlip,
flipY: yFlip,
hasColorMode: colorMode >= 0,
colorMode: colorMode,
});
@@ -758,7 +782,7 @@ class Alphabet extends FlxSprite {
}
private static var alphabetProperties:Array<String> = ["fps", "advance", "lineGap", "forceCasing", "useColorOffsets", "antialiasing"];
private static var componentProperties:Array<String> = ["name", "anim", "x", "y", "scaleX", "scaleY", "angle", "offsetX", "offsetY"];
private static var componentProperties:Array<String> = ["name", "anim", "x", "y", "scaleX", "scaleY", "angle", "offsetX", "offsetY", "flipX", "flipY"];
public function buildXML():Xml {
var xml = Xml.createElement("alphabet");