diff --git a/.gitignore b/.gitignore index 8f54cb6b..ea7c0547 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ export/ +dump/ latest/windows/obj/ latest/windows/haxe/ .vscode/ \ No newline at end of file diff --git a/Project.xml b/Project.xml index 2e250dce..aa36df06 100644 --- a/Project.xml +++ b/Project.xml @@ -146,23 +146,7 @@
- - - - - - - - - - - - - - - - - +
diff --git a/buildnumber.txt b/buildnumber.txt index 466fe402..3e19de01 100644 --- a/buildnumber.txt +++ b/buildnumber.txt @@ -1 +1 @@ -1548 \ No newline at end of file +1556 \ No newline at end of file diff --git a/source/funkin/macros/FlxSpriteProxyMacro.hx b/source/funkin/macros/FlxSpriteProxyMacro.hx new file mode 100644 index 00000000..c9ca76ec --- /dev/null +++ b/source/funkin/macros/FlxSpriteProxyMacro.hx @@ -0,0 +1,111 @@ +package funkin.macros; +#if macro +import haxe.macro.Expr; +import haxe.macro.Context; +import haxe.macro.Printer; +import haxe.macro.Type.ClassField; +import haxe.macro.TypeTools; + +class FlxSpriteProxyMacro { + public static function build() { + return Context.getBuildFields(); + + /* + //TODO: FIX ALL OF THIS + var parentFields:Array = []; + var parentFieldsNames:Array = []; + var superClass = Context.getLocalClass().get().superClass.t.get(); + while(superClass != null) { + for(e in superClass.fields.get()) { + if (!parentFieldsNames.contains(e.name) && !e.kind.match(FMethod(MethInline))) { + parentFields.push(e); + parentFieldsNames.push(e.name); + } + } + if (superClass.superClass != null) + superClass = superClass.superClass.t.get(); + else + superClass = null; + } + parentFieldsNames = []; + trace(Context.getLocalType()); + var fields:Array = Context.getBuildFields(); + + // loop through all parent functions + for(f in parentFields) { + for(field in fields) + if (field.name == f.name) + continue; + switch(f.type) { + case TLazy(lazyFunc): + switch(lazyFunc()) { + case TFun(args, ret): + + // its a function / getter / setter! overriding + var overFunc:Function = { + args: [for(a in args) { + value: null, + type: TypeTools.toComplexType(a.t), + opt: a.opt, + name: a.name + }] + }; + var funcName = f.name; + + var argNames:Array = []; + for(a in args) + argNames.push({ + pos: Context.makePosition({ + min: 1, + max: 2, + file: "DeezNuts.hx" + }), + expr: EConst(CIdent(a.name)) + }); + if (ret == null) { + overFunc.expr = macro { + function test(p1) { + trace(p1); + } + if (this.proxy != null) { + this.proxy.$funcName($a{argNames}); + return; + } + super.$funcName($a{argNames}); + }; + } else { + overFunc.expr = macro { + if (this.proxy != null) { + return this.proxy.$funcName($a{argNames}); + } + return super.$funcName($a{argNames}); + }; + } + var field:Field = { + pos: Context.makePosition({ + min: 0, + max: 0, + file: "DeezNuts.hx" + }), + name: f.name, + kind: FFun(overFunc), + access: [AOverride, APublic] + }; + var p = new Printer(); + trace(p.printField(field)); + fields.push(field); + default: + // nothing + } + default: + // nothing + } + } + + + + return fields; + */ + } +} +#end \ No newline at end of file diff --git a/source/funkin/macros/ScriptsMacro.hx b/source/funkin/macros/ScriptsMacro.hx new file mode 100644 index 00000000..d7316840 --- /dev/null +++ b/source/funkin/macros/ScriptsMacro.hx @@ -0,0 +1,47 @@ +package funkin.macros; + +#if macro +import haxe.macro.Context; +import haxe.macro.Compiler; +import haxe.macro.Expr; + +class ScriptsMacro { + public static function addAdditionalClasses() { + Compiler.include("flixel"); + Compiler.include("away3d"); + Compiler.include("flx3d"); + #if sys + Compiler.include("sys"); + #end + + Compiler.include("DateTools"); + Compiler.include("EReg"); + Compiler.include("Lambda"); + Compiler.include("StringBuf"); + Compiler.include("haxe.crypto"); + Compiler.include("haxe.display"); + Compiler.include("haxe.exceptions"); + Compiler.include("haxe.extern"); + + Compiler.include("scripting"); + } + + public static function build():Array { + var fields:Array = Context.getBuildFields(); + + for(f in fields) { + switch(f.kind) { + case FFun(func): + if (f.access == null) f.access = []; + if (f.access.contains(AInline)) + f.access.remove(AInline); + f.access.push(ADynamic); + default: + // do nothing u piece of shit + } + } + + return fields; + } +} +#end \ No newline at end of file diff --git a/update.bat b/update.bat index a74344ed..7dc42631 100644 --- a/update.bat +++ b/update.bat @@ -3,4 +3,5 @@ haxelib git flixel-yc29 https://www.github.com/YoshiCrafter29/flixel haxelib git hscript-improved https://www.github.com/YoshiCrafter29/hscript-improved haxelib install away3d haxelib install hxCodec -haxelib install markdown \ No newline at end of file +haxelib install markdown +haxelib git flxanimate https://github.com/Dot-Stuff/flxanimate/ \ No newline at end of file