Skip to content

Commit

Permalink
Remove executeFunction and override call and show function name in ru…
Browse files Browse the repository at this point in the history
…nHaxeCode and runHaxeFunction errors
  • Loading branch information
LarryFrosty committed Jan 31, 2025
1 parent 95453c7 commit 461a64c
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 25 deletions.
51 changes: 29 additions & 22 deletions source/psychlua/HScript.hx
Original file line number Diff line number Diff line change
Expand Up @@ -346,33 +346,13 @@ class HScript extends Iris
set('Function_StopAll', LuaUtils.Function_StopAll);
}

public function executeFunction(?funcToRun:String = null, ?funcArgs:Array<Dynamic> = null):IrisCall {
if (funcToRun == null) return null;

if(!exists(funcToRun)) {
Iris.error('No function named: $funcToRun', this.interp.posInfos());
return null;
}

try {
final callValue:IrisCall = call(funcToRun, funcArgs);
return callValue;
}
catch(e:IrisError) {
var pos:HScriptInfos = cast this.interp.posInfos();
pos.funcName = funcToRun;
Iris.error(Printer.errorToString(e, false), pos);
}
return null;
}

#if LUA_ALLOWED
public static function implement(funk:FunkinLua) {
funk.addLocalCallback("runHaxeCode", function(codeToRun:String, ?varsToBring:Any = null, ?funcToRun:String = null, ?funcArgs:Array<Dynamic> = null):Dynamic {
initHaxeModuleCode(funk, codeToRun, varsToBring);
if (funk.hscript != null)
{
final retVal:IrisCall = funk.hscript.executeFunction(funcToRun, funcArgs);
final retVal:IrisCall = funk.hscript.call(funcToRun, funcArgs);
if (retVal != null)
{
return (retVal.returnValue == null || LuaUtils.isOfTypes(retVal.returnValue, [Bool, Int, Float, String, Array])) ? retVal.returnValue : null;
Expand All @@ -388,7 +368,7 @@ class HScript extends Iris
funk.addLocalCallback("runHaxeFunction", function(funcToRun:String, ?funcArgs:Array<Dynamic> = null) {
if (funk.hscript != null)
{
final retVal:IrisCall = funk.hscript.executeFunction(funcToRun, funcArgs);
final retVal:IrisCall = funk.hscript.call(funcToRun, funcArgs);
if (retVal != null)
{
return (retVal.returnValue == null || LuaUtils.isOfTypes(retVal.returnValue, [Bool, Int, Float, String, Array])) ? retVal.returnValue : null;
Expand All @@ -397,6 +377,7 @@ class HScript extends Iris
else
{
var pos:HScriptInfos = cast {fileName: funk.scriptName, showLine: false};
if (funk.lastCalledFunction != '') pos.funcName = funk.lastCalledFunction;
Iris.error("runHaxeFunction: HScript has not been initialized yet! Use \"runHaxeCode\" to initialize it", pos);
}
return null;
Expand Down Expand Up @@ -435,6 +416,32 @@ class HScript extends Iris
}
#end

override function call(funcToRun:String, ?args:Array<Dynamic>):IrisCall {
if (funcToRun == null || interp == null) return null;

if (!exists(funcToRun)) {
Iris.error('No function named: $funcToRun', this.interp.posInfos());
return null;
}

try {
var func:Dynamic = interp.variables.get(funcToRun); // function signature
final ret = Reflect.callMethod(null, func, args ?? []);
return {funName: funcToRun, signature: func, returnValue: ret};
}
catch(e:IrisError) {
var pos:HScriptInfos = cast this.interp.posInfos();
pos.funcName = funcToRun;
if (parentLua != null)
{
pos.isLua = true;
if (parentLua.lastCalledFunction != '') pos.funcName = parentLua.lastCalledFunction;
}
Iris.error(Printer.errorToString(e, false), pos);
}
return null;
}

override public function destroy()
{
origin = null;
Expand Down
6 changes: 3 additions & 3 deletions source/states/PlayState.hx
Original file line number Diff line number Diff line change
Expand Up @@ -3155,7 +3155,7 @@ class PlayState extends MusicBeatState
for (script in hscriptArray)
if(script != null)
{
if(script.exists('onDestroy')) script.executeFunction('onDestroy');
if(script.exists('onDestroy')) script.call('onDestroy');
script.destroy();
}

Expand Down Expand Up @@ -3324,7 +3324,7 @@ class PlayState extends MusicBeatState
try
{
newScript = new HScript(null, file);
if (newScript.exists('onCreate')) newScript.executeFunction('onCreate');
if (newScript.exists('onCreate')) newScript.call('onCreate');
trace('initialized hscript interp successfully: $file');
hscriptArray.push(newScript);
}
Expand Down Expand Up @@ -3407,7 +3407,7 @@ class PlayState extends MusicBeatState
if(script == null || !script.exists(funcToCall) || exclusions.contains(script.origin))
continue;

var callValue = script.executeFunction(funcToCall, args);
var callValue = script.call(funcToCall, args);
if(callValue != null)
{
var myValue:Dynamic = callValue.returnValue;
Expand Down

0 comments on commit 461a64c

Please sign in to comment.