Merge branch 'custom-classes' of https://github.com/YoshiCrafter29/hscript-improved into custom-classes

This commit is contained in:
Yoshman29
2023-04-07 16:40:23 +02:00
2 changed files with 14 additions and 0 deletions
+8
View File
@@ -1,6 +1,8 @@
package hscript;
class CustomClassHandler implements IHScriptCustomConstructor {
public static var staticHandler = new StaticHandler();
public var ogInterp:Interp;
public var name:String;
public var fields:Array<Expr>;
@@ -28,6 +30,8 @@ class CustomClassHandler implements IHScriptCustomConstructor {
var cl = extend == null ? TemplateClass : Type.resolveClass('${extend}_HSX');
var _class = Type.createInstance(cl, args);
interp.variables.set("super", staticHandler);
_class.__interp = interp;
interp.scriptObject = _class;
@@ -68,4 +72,8 @@ class TemplateClass implements IHScriptCustomBehaviour {
}
return this.__interp.variables.get(name);
}
}
class StaticHandler {
public function new() {}
}
+6
View File
@@ -957,10 +957,16 @@ class Interp {
}
function fcall(o:Dynamic, f:String, args:Array<Dynamic>):Dynamic {
if(o == CustomClassHandler.staticHandler && scriptObject != null) {
return Reflect.callMethod(scriptObject, Reflect.field(scriptObject, "_HX_SUPER__" + f), args);
}
return call(o, get(o, f), args);
}
function call(o:Dynamic, f:Dynamic, args:Array<Dynamic>):Dynamic {
if(f == CustomClassHandler.staticHandler) {
return null;
}
return Reflect.callMethod(o, f, args);
}