diff --git a/Project.xml b/Project.xml
index 41bdd1ed..99ad217d 100644
--- a/Project.xml
+++ b/Project.xml
@@ -68,6 +68,8 @@
+
+
@@ -156,14 +158,15 @@
+
+
+
-
-
diff --git a/source/funkin/assets/Paths.hx b/source/funkin/assets/Paths.hx
index 3c7ccd8f..7fcb2d31 100644
--- a/source/funkin/assets/Paths.hx
+++ b/source/funkin/assets/Paths.hx
@@ -172,8 +172,8 @@ class Paths
* @param library (Additional) library to load the frames from.
*/
public static function getFrames(key:String, assetsPath:Bool = false, ?library:String) {
- if (tempFramesCache.exists(key)) {
- if (tempFramesCache[key].parent.bitmap.readable)
+ if (tempFramesCache[key] != null) {
+ if (tempFramesCache[key].parent != null && tempFramesCache[key].parent.bitmap != null && tempFramesCache[key].parent.bitmap.readable)
return tempFramesCache[key];
else
tempFramesCache[key] = null;
diff --git a/source/funkin/system/macros/NewHaxeWarning.hx b/source/funkin/system/macros/NewHaxeWarning.hx
new file mode 100644
index 00000000..76fbd12d
--- /dev/null
+++ b/source/funkin/system/macros/NewHaxeWarning.hx
@@ -0,0 +1,16 @@
+package funkin.system.macros;
+
+#if macro
+class NewHaxeWarning {
+ public static function warn() {
+ #if (haxe >= "4.3.0")
+ Sys.println("====================");
+ Sys.println("[ WARNING ]");
+ Sys.println("Compiling with Haxe 4.3.0 or above CAN and WILL end up in compilation errors due to changes in macros.");
+ Sys.println("We recommend building the project using Haxe 4.2.5.");
+ Sys.println("You can download it here -> https://haxe.org/download/version/4.2.5/");
+ Sys.println("====================");
+ #end
+ }
+}
+#end
\ No newline at end of file
diff --git a/update/Update.hx b/update/Update.hx
index c6cba4c2..9a9bb15b 100644
--- a/update/Update.hx
+++ b/update/Update.hx
@@ -1,5 +1,6 @@
import haxe.Json;
import sys.io.File;
+import sys.io.Process;
import sys.FileSystem;
class Update {
@@ -26,11 +27,37 @@ class Update {
prettyPrint('Cannot resolve library of type "${lib.type}"');
}
}
+
+ var proc = new Process('haxe --version');
+ proc.exitCode(true);
+ var haxeVer = proc.stdout.readLine();
+ if (haxeVer != "4.2.5") {
+ // check for outdated haxe
+ var curHaxeVer = [for(v in haxeVer.split(".")) Std.parseInt(v)];
+ var requiredHaxeVer = [4, 2, 5];
+ for(i in 0...requiredHaxeVer.length) {
+ if (curHaxeVer[i] < requiredHaxeVer[i]) {
+ prettyPrint("!! WARNING !!");
+ Sys.println("Your current Haxe version is outdated.");
+ Sys.println('You\'re using ${haxeVer}, while the required version is 4.2.5.');
+ Sys.println('The engine may not compile with your current version of Haxe.');
+ Sys.println('We recommend upgrading to 4.2.5');
+ break;
+ } else if (curHaxeVer[i] > requiredHaxeVer[i]) {
+ prettyPrint("!! WARNING !!"
+ + "\nHaxeFlixel has incompability issues with the latest version of Haxe, 4.3.0 and above, due to macros."
+ + "\nProceeding will cause compilation issues related to macros (ex: cannot access flash package in macro)");
+ Sys.println('');
+ Sys.println('We recommend downgrading back to 4.2.5.');
+ break;
+ }
+ }
+ }
}
public static function prettyPrint(text:String) {
var header = "══════";
- for(i in 0...text.length)
+ for(i in 0...(text.length-(text.lastIndexOf("\n")+1)))
header += "═";
Sys.println("");
Sys.println('╔$header╗');