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;