This commit is contained in:
Yoshman29
2022-10-07 13:49:22 +02:00
parent 0d94f5bc05
commit 1e156c83ee
16 changed files with 99 additions and 21 deletions
+13 -13
View File
@@ -849,19 +849,19 @@ class PlayState extends MusicBeatState
{
camFollow.setPosition(boyfriend.getMidpoint().x - 100, boyfriend.getMidpoint().y - 100);
switch (curStage)
{
case 'limo':
camFollow.x = boyfriend.getMidpoint().x - 300;
case 'mall':
camFollow.y = boyfriend.getMidpoint().y - 200;
case 'school':
camFollow.x = boyfriend.getMidpoint().x - 200;
camFollow.y = boyfriend.getMidpoint().y - 200;
case 'schoolEvil':
camFollow.x = boyfriend.getMidpoint().x - 200;
camFollow.y = boyfriend.getMidpoint().y - 200;
}
// switch (curStage)
// {
// case 'limo':
// camFollow.x = boyfriend.getMidpoint().x - 300;
// case 'mall':
// camFollow.y = boyfriend.getMidpoint().y - 200;
// case 'school':
// camFollow.x = boyfriend.getMidpoint().x - 200;
// camFollow.y = boyfriend.getMidpoint().y - 200;
// case 'schoolEvil':
// camFollow.x = boyfriend.getMidpoint().x - 200;
// camFollow.y = boyfriend.getMidpoint().y - 200;
// }
camFollow.x += boyfriend.globalOffset.x;
camFollow.y += boyfriend.globalOffset.y;
+11
View File
@@ -9,7 +9,12 @@ import funkin.interfaces.IBeatReceiver;
class Stage extends FlxBasic implements IBeatReceiver {
public var stageXML:Access;
public var stageSprites:Map<String, FlxSprite> = [];
public var stageScript:Script;
public function getSprite(name:String) {
return stageSprites[name];
}
public function new(stage:String) {
super();
if (PlayState.instance == null) return;
@@ -51,6 +56,12 @@ class Stage extends FlxBasic implements IBeatReceiver {
var scroll:Null<Float> = Std.parseFloat(node.att.scroll);
if (scroll != null) spr.scrollFactor.set(scroll, scroll);
}
if (node.has.scale) {
var scale:Null<Float> = Std.parseFloat(node.att.scale);
if (scale != null) spr.scale.set(scale, scale);
}
if (node.has.updateHitbox && node.att.updateHitbox == "true") spr.updateHitbox();
for(anim in node.nodes.anim) CoolUtil.addXMLAnimation(spr, anim);
stageSprites.set(node.att.name, spr);
+10
View File
@@ -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;
}
}
+20 -3
View File
@@ -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);
}
}
+24 -2
View File
@@ -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;
}
}