pico!!!!
This commit is contained in:
@@ -4,5 +4,15 @@ package funkin.scripting;
|
||||
* Simple class for empty scripts or scripts whose language isn't imported yet.
|
||||
*/
|
||||
class DummyScript extends Script {
|
||||
public var variables:Map<String, Dynamic> = [];
|
||||
|
||||
public override function get(v:String) {return variables.get(v);}
|
||||
public override function set(v:String, v2:Dynamic) {return variables.set(v, v2);}
|
||||
public override function onCall(method:String, parameters:Array<Dynamic>):Dynamic {
|
||||
var func = variables.get(method);
|
||||
if (Reflect.isFunction(func))
|
||||
return (parameters != null && parameters.length > 0) ? Reflect.callMethod(null, func, parameters) : func();
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -21,15 +21,32 @@ class HScript extends Script {
|
||||
return;
|
||||
}
|
||||
interp.errorHandler = _errorHandler;
|
||||
interp.execute(expr);
|
||||
}
|
||||
|
||||
private function _errorHandler(error:Error) {
|
||||
this.error('$fileName:${error.line}: ${error.toString()}');
|
||||
}
|
||||
|
||||
public override function call(func:String, ?parameters:Array<Dynamic>):Dynamic {
|
||||
// TODO: call
|
||||
super.call(func, parameters);
|
||||
public override function setParent(parent:Dynamic) {
|
||||
interp.scriptObject = parent;
|
||||
}
|
||||
|
||||
private override function onCall(funcName:String, parameters:Array<Dynamic>):Dynamic {
|
||||
if (interp == null) return null;
|
||||
|
||||
var func = interp.variables.get(funcName);
|
||||
if (Reflect.isFunction(func))
|
||||
return (parameters != null && parameters.length > 0) ? Reflect.callMethod(null, func, parameters) : func();
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public override function get(val:String):Dynamic {
|
||||
return interp.variables.get(val);
|
||||
}
|
||||
|
||||
public override function set(val:String, value:Dynamic) {
|
||||
interp.variables.set(val, value);
|
||||
}
|
||||
}
|
||||
@@ -41,7 +41,7 @@ class Script {
|
||||
}
|
||||
|
||||
/**
|
||||
* [Description]
|
||||
* [Description] Creates a new instance of the script class.
|
||||
* @param path
|
||||
*/
|
||||
public function new(path:String) {
|
||||
@@ -58,13 +58,28 @@ class Script {
|
||||
* @param path Path to the script.
|
||||
*/
|
||||
public function onCreate(path:String) {}
|
||||
|
||||
/**
|
||||
* [Description] Calls the function `func` defined in the script.
|
||||
* @param func Name of the function
|
||||
* @param parameters (Optional) Parameters of the function.
|
||||
* @return Dynamic Result (if void, then null)
|
||||
*/
|
||||
public function call(func:String, ?parameters:Array<Dynamic>):Dynamic {return null;}
|
||||
public function call(func:String, ?parameters:Array<Dynamic>):Dynamic {
|
||||
var oldScript = curScript;
|
||||
curScript = this;
|
||||
|
||||
var result = onCall(func, parameters == null ? [] : parameters);
|
||||
|
||||
curScript = oldScript;
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* [Description] Sets a script's parent object so that its properties can be accessed easily. Ex: Passing `PlayState.instace` will allow `boyfriend` to be typed instead of `PlayState.instance.boyfriend`.
|
||||
* @param variable Parent variable.
|
||||
*/
|
||||
public function setParent(variable:Dynamic) {}
|
||||
|
||||
/**
|
||||
* [Description] Gets the variable `variable` from the script's variables.
|
||||
@@ -89,4 +104,11 @@ class Script {
|
||||
// TODO: Logs (like on YCE)
|
||||
trace('$text');
|
||||
}
|
||||
|
||||
/**
|
||||
* PRIVATE HANDLERS - DO NOT TOUCH
|
||||
*/
|
||||
private function onCall(func:String, parameters:Array<Dynamic>):Dynamic {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user