diff --git a/assets/data/characters/bf-pixel-dead.xml b/assets/data/characters/bf-pixel-dead.xml
new file mode 100644
index 00000000..807b834e
--- /dev/null
+++ b/assets/data/characters/bf-pixel-dead.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/assets/data/characters/bf-pixel.xml b/assets/data/characters/bf-pixel.xml
index fe0231cb..8dce0b58 100644
--- a/assets/data/characters/bf-pixel.xml
+++ b/assets/data/characters/bf-pixel.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/assets/images/characters/bf-pixel-dead.png b/assets/images/characters/bf-pixel-dead.png
new file mode 100644
index 00000000..71c4321e
Binary files /dev/null and b/assets/images/characters/bf-pixel-dead.png differ
diff --git a/assets/images/characters/bf-pixel-dead.xml b/assets/images/characters/bf-pixel-dead.xml
new file mode 100644
index 00000000..36fc96ec
--- /dev/null
+++ b/assets/images/characters/bf-pixel-dead.xml
@@ -0,0 +1,131 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/source/funkin/backend/shaders/FunkinShader.hx b/source/funkin/backend/shaders/FunkinShader.hx
index 299c69ca..5a63d804 100644
--- a/source/funkin/backend/shaders/FunkinShader.hx
+++ b/source/funkin/backend/shaders/FunkinShader.hx
@@ -368,7 +368,7 @@ class FunkinShader extends FlxShader implements IHScriptCustomBehaviour {
}
if (!Reflect.hasField(data, name)) return null;
var field = Reflect.field(data, name);
- var cl = Std.string(Type.getClass(field));
+ var cl = Type.getClassName(Type.getClass(field));
// cant do "field is ShaderInput" for some reason
if (cl.startsWith("openfl.display.ShaderParameter")) {
@@ -393,8 +393,7 @@ class FunkinShader extends FlxShader implements IHScriptCustomBehaviour {
return val;
} else {
var field = Reflect.field(data, name);
- var cl = Std.string(Type.getClass(field));
-
+ var cl = Type.getClassName(Type.getClass(field));
// cant do "field is ShaderInput" for some reason
if (cl.startsWith("openfl.display.ShaderParameter")) {
@:privateAccess
diff --git a/source/funkin/backend/utils/NativeAPI.hx b/source/funkin/backend/utils/NativeAPI.hx
index cb812fb9..95b4eb53 100644
--- a/source/funkin/backend/utils/NativeAPI.hx
+++ b/source/funkin/backend/utils/NativeAPI.hx
@@ -49,58 +49,92 @@ class NativeAPI {
/**
* Sets the console colors
*/
- public static function setConsoleColors(foregroundColor:ConsoleColor = LIGHTGRAY, ?backgroundColor:ConsoleColor = BLACK) {
+ public static function setConsoleColors(foregroundColor:ConsoleColor = NONE, ?backgroundColor:ConsoleColor = NONE) {
#if windows
+ if(foregroundColor == NONE)
+ foregroundColor = LIGHTGRAY;
+ if(backgroundColor == NONE)
+ backgroundColor = BLACK;
+
var fg = cast(foregroundColor, Int);
var bg = cast(backgroundColor, Int);
Windows.setConsoleColors((bg * 16) + fg);
+ #else
+ Sys.print("\x1b[0m");
+ if(foregroundColor != NONE)
+ Sys.print("\x1b[" + Std.int(consoleColorToANSI(foregroundColor)) + "m");
+ if(backgroundColor != NONE)
+ Sys.print("\x1b[" + Std.int(consoleColorToANSI(backgroundColor) + 10) + "m");
#end
}
+ public static function consoleColorToANSI(color:ConsoleColor) {
+ return switch(color) {
+ case BLACK: 30;
+ case DARKBLUE: 34;
+ case DARKGREEN: 32;
+ case DARKCYAN: 36;
+ case DARKRED: 31;
+ case DARKMAGENTA: 35;
+ case DARKYELLOW: 33;
+ case LIGHTGRAY: 37;
+ case GRAY: 90;
+ case BLUE: 94;
+ case GREEN: 92;
+ case CYAN: 96;
+ case RED: 91;
+ case MAGENTA: 95;
+ case YELLOW: 93;
+ case WHITE | _: 97;
+ }
+ }
+
public static function consoleColorToOpenFL(color:ConsoleColor) {
return switch(color) {
- case BLACK: 0xFF000000;
- case DARKBLUE: 0xFF000088;
- case DARKGREEN: 0xFF008800;
- case DARKCYAN: 0xFF008888;
- case DARKRED: 0xFF880000;
- case DARKMAGENTA: 0xFF880000;
+ case BLACK: 0xFF000000;
+ case DARKBLUE: 0xFF000088;
+ case DARKGREEN: 0xFF008800;
+ case DARKCYAN: 0xFF008888;
+ case DARKRED: 0xFF880000;
+ case DARKMAGENTA: 0xFF880000;
case DARKYELLOW: 0xFF888800;
- case LIGHTGRAY: 0xFFBBBBBB;
- case GRAY: 0xFF888888;
- case BLUE: 0xFF0000FF;
- case GREEN: 0xFF00FF00;
- case CYAN: 0xFF00FFFF;
- case RED: 0xFFFF0000;
- case MAGENTA: 0xFFFF00FF;
+ case LIGHTGRAY: 0xFFBBBBBB;
+ case GRAY: 0xFF888888;
+ case BLUE: 0xFF0000FF;
+ case GREEN: 0xFF00FF00;
+ case CYAN: 0xFF00FFFF;
+ case RED: 0xFFFF0000;
+ case MAGENTA: 0xFFFF00FF;
case YELLOW: 0xFFFFFF00;
- case WHITE | _: 0xFFFFFFFF;
+ case WHITE | _: 0xFFFFFFFF;
}
}
}
-@:enum abstract ConsoleColor(Int) {
- var BLACK:ConsoleColor = 0;
- var DARKBLUE:ConsoleColor = 1;
- var DARKGREEN:ConsoleColor = 2;
- var DARKCYAN:ConsoleColor = 3;
- var DARKRED:ConsoleColor = 4;
- var DARKMAGENTA:ConsoleColor = 5;
- var DARKYELLOW:ConsoleColor = 6;
- var LIGHTGRAY:ConsoleColor = 7;
- var GRAY:ConsoleColor = 8;
- var BLUE:ConsoleColor = 9;
- var GREEN:ConsoleColor = 10;
- var CYAN:ConsoleColor = 11;
- var RED:ConsoleColor = 12;
- var MAGENTA:ConsoleColor = 13;
- var YELLOW:ConsoleColor = 14;
- var WHITE:ConsoleColor = 15;
+enum abstract ConsoleColor(Int) {
+ var BLACK = 0;
+ var DARKBLUE = 1;
+ var DARKGREEN = 2;
+ var DARKCYAN = 3;
+ var DARKRED = 4;
+ var DARKMAGENTA = 5;
+ var DARKYELLOW = 6;
+ var LIGHTGRAY = 7;
+ var GRAY = 8;
+ var BLUE = 9;
+ var GREEN = 10;
+ var CYAN = 11;
+ var RED = 12;
+ var MAGENTA = 13;
+ var YELLOW = 14;
+ var WHITE = 15;
+
+ var NONE = -1;
}
-@:enum abstract MessageBoxIcon(Int) {
- var MSG_ERROR:MessageBoxIcon = 0x00000010;
- var MSG_QUESTION:MessageBoxIcon = 0x00000020;
- var MSG_WARNING:MessageBoxIcon = 0x00000030;
- var MSG_INFORMATION:MessageBoxIcon = 0x00000040;
+enum abstract MessageBoxIcon(Int) {
+ var MSG_ERROR = 0x00000010;
+ var MSG_QUESTION = 0x00000020;
+ var MSG_WARNING = 0x00000030;
+ var MSG_INFORMATION = 0x00000040;
}
\ No newline at end of file
diff --git a/source/funkin/editors/character/CharacterGhostsHandler.hx b/source/funkin/editors/character/CharacterGhostsHandler.hx
index 6e126df8..b9d3a2cb 100644
--- a/source/funkin/editors/character/CharacterGhostsHandler.hx
+++ b/source/funkin/editors/character/CharacterGhostsHandler.hx
@@ -30,9 +30,11 @@ class CharacterGhostsHandler extends FlxTypedGroup {
public function removeGhost(anim:String) {
var ghost:Character = animGhosts.get(anim);
- @:privateAccess ghost.animation._curAnim = null;
- animGhosts.remove(anim);
- ghost.destroy();
+ @:privateAccess if (ghost != null) {
+ ghost.animation._curAnim = null;
+ animGhosts.remove(anim);
+ ghost.destroy();
+ }
}
public function updateInfos(xml:Xml) {