diff --git a/assets/shaders/engine/editorBlurFast.frag b/assets/shaders/engine/editorBlurFast.frag index 74317dfc..8c83ac63 100644 --- a/assets/shaders/engine/editorBlurFast.frag +++ b/assets/shaders/engine/editorBlurFast.frag @@ -11,10 +11,10 @@ float uBrightness = 0.6; vec4 getColor(vec2 pos) { vec2 ps = (pos); - if (ps.x < 0) ps.x = 0; + if (ps.x < 0.0) ps.x = 0.0; //else if (ps.x > 1.0 - (1.0 / iResolution.x)) ps.x = 1.0 - (1.0 / iResolution.x); else if (ps.x > 1.0) return vec4(0.0); - if (ps.y < 0) ps.y = 0; + if (ps.y < 0.0) ps.y = 0.0; //else if (ps.y > 1.0 - (1.0 / iResolution.y)) return ps.y = 1.0 - (1.0 / iResolution.y); else if (ps.y > 1.0) return vec4(0.0); return flixel_texture2D(bitmap, (ps)); @@ -42,7 +42,7 @@ vec2 random(vec2 p) { void main() { vec2 camPos = (openfl_TextureCoordv); //vec2 camPos = openfl_TextureCoordv; - if (camPos.x < 0 || camPos.x > 1 || camPos.y < 0 || camPos.y > 1) + if (camPos.x < 0.0 || camPos.x > 1.0 || camPos.y < 0.0 || camPos.y > 1.0) return; //vec4 color = getColor(camPos); diff --git a/project.xml b/project.xml index a9eaed1d..1a008240 100644 --- a/project.xml +++ b/project.xml @@ -111,8 +111,9 @@ - + + @@ -144,10 +145,10 @@ - + - + diff --git a/source/funkin/backend/assets/ModdableAssetsFolder.hx b/source/funkin/backend/assets/ModdableAssetsFolder.hx index 25dd4943..0da7ed5f 100644 --- a/source/funkin/backend/assets/ModdableAssetsFolder.hx +++ b/source/funkin/backend/assets/ModdableAssetsFolder.hx @@ -2,6 +2,7 @@ package funkin.backend.assets; import lime.utils.AssetLibrary; +#if sys /** * Used to prevent crashes */ @@ -36,4 +37,5 @@ class ModdableAssetsFolder extends ModsFolderLibrary { _parsedAsset = asset.substr(prefix.length); return true; } -} \ No newline at end of file +} +#end \ No newline at end of file diff --git a/source/funkin/backend/system/CommandLineHandler.hx b/source/funkin/backend/system/CommandLineHandler.hx index 5b2f05ee..d00af9a5 100644 --- a/source/funkin/backend/system/CommandLineHandler.hx +++ b/source/funkin/backend/system/CommandLineHandler.hx @@ -1,7 +1,7 @@ package funkin.backend.system; -import sys.FileSystem; #if sys +import sys.FileSystem; class CommandLineHandler { public static function parseCommandLine(cmd:Array) { var i:Int = 0; diff --git a/source/funkin/backend/system/Conductor.hx b/source/funkin/backend/system/Conductor.hx index 94ffd17f..9b82e268 100644 --- a/source/funkin/backend/system/Conductor.hx +++ b/source/funkin/backend/system/Conductor.hx @@ -67,7 +67,7 @@ class Conductor /** * Offset of the song */ - public static var songOffset:Float = 0; + public static var songOffset:Float = 0; /** * Current step diff --git a/source/funkin/backend/system/Main.hx b/source/funkin/backend/system/Main.hx index 673d28aa..b3efb4d5 100644 --- a/source/funkin/backend/system/Main.hx +++ b/source/funkin/backend/system/Main.hx @@ -71,7 +71,7 @@ class Main extends Sprite addChild(game = new FunkinGame(gameWidth, gameHeight, MainState, Options.framerate, Options.framerate, skipSplash, startFullscreen)); - #if !mobile + #if (!mobile && !web) addChild(framerateSprite = new funkin.backend.system.framerate.Framerate()); framerateSprite.scaleX = framerateSprite.scaleY = stage.window.scale; SystemInfo.init(); diff --git a/source/funkin/backend/system/macros/ScriptsMacro.hx b/source/funkin/backend/system/macros/ScriptsMacro.hx index 53ddccd7..db0f9f55 100644 --- a/source/funkin/backend/system/macros/ScriptsMacro.hx +++ b/source/funkin/backend/system/macros/ScriptsMacro.hx @@ -20,7 +20,6 @@ class ScriptsMacro { "flixel.addons.plugin", "flixel.addons.text", "flixel.addons.tile", "flixel.addons.transition", "flixel.addons.util", // OTHER LIBRARIES & STUFF - "funkin", "away3d", "flx3d", #if VIDEO_CUTSCENES "hxcodec.flixel", "hxcodec.openfl", "hxcodec.lime", #end // BASE HAXE @@ -28,7 +27,7 @@ class ScriptsMacro { ]) Compiler.include(inc); - for(inc in [#if sys "sys", #end "openfl.net", "funkin.backend.system.net"]) { + for(inc in [#if SYS "sys", "openfl.net", "funkin.backend.system.net" #end]) { #if !HL Compiler.include(inc); #else @@ -37,6 +36,8 @@ class ScriptsMacro { #end } + Compiler.include("funkin", #if !UPDATE_CHECKING ['funkin.backend.system.updating'] #end); + // FOR ABSTRACTS Compiler.addGlobalMetadata('haxe.xml', '@:build(hscript.UsingHandler.build())'); Compiler.addGlobalMetadata('haxe.CallStack', '@:build(hscript.UsingHandler.build())'); diff --git a/source/funkin/backend/system/macros/Utils.hx b/source/funkin/backend/system/macros/Utils.hx new file mode 100644 index 00000000..f55797d2 --- /dev/null +++ b/source/funkin/backend/system/macros/Utils.hx @@ -0,0 +1,39 @@ +package funkin.backend.system.macros; + +#if macro +import haxe.macro.Expr.ExprDef; +#end + +class Utils { + macro public static function generateReflectionLike(totalArguments:Int, funcName:String, argsName:String) { + #if macro + totalArguments++; + + var funcCalls = []; + for(i in 0...totalArguments) { + var args = [ + for(d in 0...i) macro $i{argsName}[$v{d}] + ]; + + funcCalls.push(macro $i{funcName}($a{args})); + } + + var expr = { + pos: Context.currentPos(), + expr: ESwitch( + macro ($i{argsName}.length), + [ + for(i in 0...totalArguments) { + values: [macro $v{i}], + expr: funcCalls[i], + guard: null, + } + ], + macro throw "Too many arguments" + ) + } + + return expr; + #end + } +} \ No newline at end of file diff --git a/source/funkin/backend/utils/NativeAPI.hx b/source/funkin/backend/utils/NativeAPI.hx index d2ff0d12..061021bc 100644 --- a/source/funkin/backend/utils/NativeAPI.hx +++ b/source/funkin/backend/utils/NativeAPI.hx @@ -62,12 +62,14 @@ class NativeAPI { var bg = cast(backgroundColor, Int); Windows.setConsoleColors((bg * 16) + fg); #else + #if sys 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 + #end } public static function consoleColorToANSI(color:ConsoleColor) { diff --git a/source/funkin/backend/utils/NdllUtil.hx b/source/funkin/backend/utils/NdllUtil.hx index 5019aef6..f50d0026 100644 --- a/source/funkin/backend/utils/NdllUtil.hx +++ b/source/funkin/backend/utils/NdllUtil.hx @@ -26,7 +26,7 @@ class NdllUtil { /** * Returns an function from a Haxe NDLL. - * Limited to 20 argument due to a limitation + * Limited to 25 argument due to a limitation * * @param ndll Name of the NDLL. * @param name Name of the function. @@ -36,54 +36,10 @@ class NdllUtil { #if NDLLS_SUPPORTED var func:Dynamic = getFunctionFromPath(Paths.ndll('$ndll-$os'), name, args); - // I hate this code below, at least it wasnt 390625 switch cases, but like reflect.callmethod doesnt work with c++ functions - return Reflect.makeVarArgs(function(_args:Array) { - var arg0:Dynamic = _args.length > 0 ? _args[0] : null; - var arg1:Dynamic = _args.length > 1 ? _args[1] : null; - var arg2:Dynamic = _args.length > 2 ? _args[2] : null; - var arg3:Dynamic = _args.length > 3 ? _args[3] : null; - var arg4:Dynamic = _args.length > 4 ? _args[4] : null; - var arg5:Dynamic = _args.length > 5 ? _args[5] : null; - var arg6:Dynamic = _args.length > 6 ? _args[6] : null; - var arg7:Dynamic = _args.length > 7 ? _args[7] : null; - var arg8:Dynamic = _args.length > 8 ? _args[8] : null; - var arg9:Dynamic = _args.length > 9 ? _args[9] : null; - var arg10:Dynamic = _args.length > 10 ? _args[10] : null; - var arg11:Dynamic = _args.length > 11 ? _args[11] : null; - var arg12:Dynamic = _args.length > 12 ? _args[12] : null; - var arg13:Dynamic = _args.length > 13 ? _args[13] : null; - var arg14:Dynamic = _args.length > 14 ? _args[14] : null; - var arg15:Dynamic = _args.length > 15 ? _args[15] : null; - var arg16:Dynamic = _args.length > 16 ? _args[16] : null; - var arg17:Dynamic = _args.length > 17 ? _args[17] : null; - var arg18:Dynamic = _args.length > 18 ? _args[18] : null; - var arg19:Dynamic = _args.length > 19 ? _args[19] : null; - - return switch(_args.length) { - case 0: func(); - case 1: func(arg0); - case 2: func(arg0, arg1); - case 3: func(arg0, arg1, arg2); - case 4: func(arg0, arg1, arg2, arg3); - case 5: func(arg0, arg1, arg2, arg3, arg4); - case 6: func(arg0, arg1, arg2, arg3, arg4, arg5); - case 7: func(arg0, arg1, arg2, arg3, arg4, arg5, arg6); - case 8: func(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7); - case 9: func(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); - case 10: func(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); - case 11: func(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); - case 12: func(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11); - case 13: func(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12); - case 14: func(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13); - case 15: func(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14); - case 16: func(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15); - case 17: func(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16); - case 18: func(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17); - case 19: func(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18); - case 20: func(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19); - default: throw "Too many arguments"; - }; - //return Reflect.callMethod(null, func, _args); + return Reflect.makeVarArgs(function(a:Array) { + // This generates horrific code + return funkin.backend.system.macros.Utils.generateReflectionLike(25, "func", "a"); + //return Reflect.callMethod(null, func, a); // wouldnt work for some reason, maybe cause like c++ functions doesnt have reflection enabled }); #else Logs.trace('NDLLs are not supported on this platform.', WARNING); diff --git a/source/funkin/editors/character/CharacterSelection.hx b/source/funkin/editors/character/CharacterSelection.hx index c7e897b2..dd213c39 100644 --- a/source/funkin/editors/character/CharacterSelection.hx +++ b/source/funkin/editors/character/CharacterSelection.hx @@ -8,7 +8,6 @@ import funkin.backend.chart.Chart; import funkin.options.type.TextOption; import funkin.options.type.IconOption; import funkin.options.OptionsScreen; -import sys.FileSystem; class CharacterSelection extends EditorTreeMenu { diff --git a/source/funkin/options/Options.hx b/source/funkin/options/Options.hx index 39d983e9..1309b144 100644 --- a/source/funkin/options/Options.hx +++ b/source/funkin/options/Options.hx @@ -34,7 +34,10 @@ class Options public static var hitWindow:Float = 250; public static var songOffset:Float = 0; public static var framerate:Int = 120; - public static var gpuOnlyBitmaps:Bool = #if mac false #else true #end; // causes issues on mac + public static var gpuOnlyBitmaps:Bool = + #if mac false + #elseif !web false + #else true #end; // causes issues on mac public static var lastLoadedMod:String = null;