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╗');