Skip to content

Commit 03df52c

Browse files
committed
flipX and flipY for alphabet XMLs
1 parent 1ca4b64 commit 03df52c

File tree

4 files changed

+57
-3
lines changed

4 files changed

+57
-3
lines changed

source/funkin/editors/alphabet/AlphabetEditor.hx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,9 @@ class AlphabetEditor extends UIState {
209209
scaleX: 1,
210210
scaleY: 1,
211211

212+
flipX: false,
213+
flipY: false,
214+
212215
hasColorMode: false,
213216
colorMode: bigLetter.colorMode
214217
};

source/funkin/editors/alphabet/AlphabetMainDataScreen.hx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,9 @@ UPPERLETTER and LOWERLETTTER can be used in any backup prefix.";
204204
cos: 1.0,
205205
sin: 0.0,
206206

207+
flipX: false,
208+
flipY: false,
209+
207210
hasColorMode: false,
208211
colorMode: 0
209212
}],

source/funkin/editors/alphabet/GlyphInfoWindow.hx

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ class GlyphInfoWindow extends UIWindow {
1111
public var angleBox:UINumericStepper;
1212
public var colorModeDrop:UIDropDown;
1313

14+
public var flipXBox:UICheckbox;
15+
public var flipYBox:UICheckbox;
16+
1417
public var outlineTitle:UIText;
1518
public var outlineSep:UISprite;
1619
public var outlineCheck:UICheckbox;
@@ -145,6 +148,9 @@ class GlyphInfoWindow extends UIWindow {
145148
cos: compon.cos,
146149
sin: compon.sin,
147150

151+
flipX: compon.flipX,
152+
flipY: compon.flipY,
153+
148154
hasColorMode: compon.hasColorMode,
149155
colorMode: compon.colorMode
150156
};
@@ -159,6 +165,22 @@ class GlyphInfoWindow extends UIWindow {
159165
}
160166
members.push(outlineCheck);
161167

168+
flipXBox = new UICheckbox(outlineCheck.x, outlineCheck.y - outlineCheck.height - 8, "Flip X?");
169+
flipXBox.onChecked = function(check:Bool) {
170+
compon.flipX = check;
171+
if (outlineCheck.checked)
172+
data.components[compon.outIndex].flipX = check;
173+
}
174+
members.push(flipXBox);
175+
176+
flipYBox = new UICheckbox(flipXBox.x + flipXBox.width + itemMargin * 5, flipXBox.y, "Flip Y?");
177+
flipYBox.onChecked = function(check:Bool) {
178+
compon.flipY = check;
179+
if (outlineCheck.checked)
180+
data.components[compon.outIndex].flipY = check;
181+
}
182+
members.push(flipYBox);
183+
162184
outlineTitle = new UIText(colorModeDrop.x, colorModeDrop.y + colorModeDrop.bHeight + itemMargin, 0, "Outline Data");
163185
members.push(outlineTitle);
164186
outlineSep = new UISprite(x + itemMargin, colorModeDrop.y + colorModeDrop.bHeight + itemMargin + 19);
@@ -239,6 +261,8 @@ class GlyphInfoWindow extends UIWindow {
239261
angleBox.value = com.angle;
240262
@:privateAccess colorModeDrop.index = com.hasColorMode ? com.colorMode : AlphabetEditor.instance.tape.colorMode;
241263
@:privateAccess colorModeDrop.label.text = colorModeDrop.options[colorModeDrop.index];
264+
flipXBox.checked = com.flipX;
265+
flipYBox.checked = com.flipY;
242266

243267
outlineCheck.checked = com.outIndex != null;
244268
outlineBox.label.text = "";

source/funkin/menus/ui/Alphabet.hx

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ final class AlphabetComponent {
3737
public var scaleX:Float;
3838
public var scaleY:Float;
3939

40+
public var flipX:Bool;
41+
public var flipY:Bool;
42+
4043
public var hasColorMode:Bool;
4144
public var colorMode:ColorMode;
4245
}
@@ -346,9 +349,9 @@ class Alphabet extends FlxSprite {
346349

347350
_matrix.translate(_frame.frame.width * -0.5, _frame.frame.height * -0.5);
348351
if (__useDrawScale)
349-
_matrix.scale(__drawScale.x, __drawScale.y);
352+
_matrix.scale(__drawScale.x * (__component.flipX ? -1 : 1), __drawScale.y * (__component.flipY ? -1 : 1));
350353
else
351-
_matrix.scale(__component.scaleX, __component.scaleY);
354+
_matrix.scale(__component.scaleX * (__component.flipX ? -1 : 1), __component.scaleY * (__component.flipY ? -1 : 1));
352355
if(__component.shouldRotate)
353356
_matrix.rotateWithTrig(__component.cos, __component.sin);
354357
_matrix.translate(_frame.frame.width * 0.5, _frame.frame.height * 0.5);
@@ -558,6 +561,9 @@ class Alphabet extends FlxSprite {
558561
cos: angleCos,
559562
sin: angleSin,
560563

564+
flipX: node.get("flipX") == "true",
565+
flipY: node.get("flipY") == "true",
566+
561567
hasColorMode: false,
562568
colorMode: 0
563569
}],
@@ -593,6 +599,9 @@ class Alphabet extends FlxSprite {
593599

594600
var colorMode = ["tint", "offsets", "none"].indexOf(component.get("colorMode"));
595601

602+
var xFlip = component.get("flipX") == "true";
603+
var yFlip = component.get("flipY") == "true";
604+
596605
if (component.get("hasOutline") == "true") {
597606
components.insert(startIndex, {
598607
refIndex: componentsPushed,
@@ -608,6 +617,9 @@ class Alphabet extends FlxSprite {
608617
cos: angleCos,
609618
sin: angleSin,
610619

620+
flipX: xFlip,
621+
flipY: yFlip,
622+
611623
hasColorMode: colorMode >= 0,
612624
colorMode: colorMode,
613625
});
@@ -628,6 +640,9 @@ class Alphabet extends FlxSprite {
628640
cos: angleCos,
629641
sin: angleSin,
630642

643+
flipX: xFlip,
644+
flipY: yFlip,
645+
631646
hasColorMode: colorMode >= 0,
632647
colorMode: colorMode,
633648
});
@@ -659,6 +674,9 @@ class Alphabet extends FlxSprite {
659674
var yScale:Float = Std.parseFloat(node.get("scaleY")).getDefaultFloat(1.0);
660675
var advance:Float = Std.parseFloat(node.get("advance"));
661676

677+
var xFlip = node.get("flipX") == "true";
678+
var yFlip = node.get("flipY") == "true";
679+
662680
var colorMode = ["tint", "offsets", "none"].indexOf(node.get("colorMode"));
663681

664682
var components:Array<AlphabetComponent> = [];
@@ -677,6 +695,9 @@ class Alphabet extends FlxSprite {
677695
cos: angleCos,
678696
sin: angleSin,
679697

698+
flipX: xFlip,
699+
flipY: yFlip,
700+
680701
hasColorMode: colorMode >= 0,
681702
colorMode: colorMode,
682703
});
@@ -696,6 +717,9 @@ class Alphabet extends FlxSprite {
696717
cos: angleCos,
697718
sin: angleSin,
698719

720+
flipX: xFlip,
721+
flipY: yFlip,
722+
699723
hasColorMode: colorMode >= 0,
700724
colorMode: colorMode,
701725
});
@@ -758,7 +782,7 @@ class Alphabet extends FlxSprite {
758782
}
759783

760784
private static var alphabetProperties:Array<String> = ["fps", "advance", "lineGap", "forceCasing", "useColorOffsets", "antialiasing"];
761-
private static var componentProperties:Array<String> = ["name", "anim", "x", "y", "scaleX", "scaleY", "angle", "offsetX", "offsetY"];
785+
private static var componentProperties:Array<String> = ["name", "anim", "x", "y", "scaleX", "scaleY", "angle", "offsetX", "offsetY", "flipX", "flipY"];
762786

763787
public function buildXML():Xml {
764788
var xml = Xml.createElement("alphabet");

0 commit comments

Comments
 (0)