Merge remote-tracking branch 'public/main'

This commit is contained in:
⍚~Nex
2024-09-18 21:06:46 +02:00
8 changed files with 49 additions and 10 deletions
+5 -4
View File
@@ -1,7 +1,8 @@
@ECHO OFF
cd ..
echo Building Game...
lime build windows --haxeflag="--macro include('scripting')" --haxeflag="-xml docs/doc.xml"
echo Generating Documentation...
haxelib run dox -i docs --include funkin --include scripting
echo Done!
lime build windows --haxeflag="--macro include('scripting')" --haxeflag="-xml docs/doc.xml" -D DOCUMENTATION --no-output
echo art
echo Generated the api xml file at docs/doc.xml
echo Please put this in FNF-CNE-Devs.github.io/api-generator/api/doc.xml
+1
View File
@@ -1,3 +1,4 @@
//
import funkin.game.HudCamera;
import funkin.backend.scripting.events.NoteHitEvent;
-1
View File
@@ -1,5 +1,4 @@
function create() {
importScript("data/scripts/pixel");
isSpooky = true;
// Make transition work between school types
+1
View File
@@ -1,5 +1,6 @@
<!DOCTYPE codename-engine-stage>
<stage zoom="1" name="school-evil" folder="stages/school/" startCamPosY="550" startCamPosX="600">
<use-extension script="pixel"/>
<sprite name="bg" x="400" y="200" sprite="animatedEvilSchool"
antialiasing="false" scale="6" scrollx="0.8" scrolly="0.9" type="loop"/>
</stage>
+1 -1
View File
@@ -1,5 +1,5 @@
//
function create() {
importScript("data/scripts/pixel");
if (PlayState.SONG.meta.name.toLowerCase() == "roses") {
bgGirls.animation.remove("danceLeft");
bgGirls.animation.remove("danceRight");
+2
View File
@@ -1,5 +1,7 @@
<!DOCTYPE codename-engine-stage>
<stage zoom="1" folder="stages/school/" startCamPosY="550" startCamPosX="600">
<use-extension script="pixel"/>
<sprite name="bgSky" x="-12" y="0" sprite="weebSky"
antialiasing="false" scale="6" scroll="0.1" updateHitbox="true"/>
+34 -3
View File
@@ -2,6 +2,7 @@ package funkin.game;
import flixel.FlxState;
import flixel.math.FlxPoint;
import funkin.backend.scripting.DummyScript;
import funkin.backend.scripting.Script;
import funkin.backend.scripting.events.StageNodeEvent;
import funkin.backend.scripting.events.StageXMLEvent;
@@ -18,6 +19,7 @@ class Stage extends FlxBasic implements IBeatReceiver {
public var stageScript:Script;
public var state:FlxState;
public var characterPoses:Map<String, StageCharPos> = [];
public var xmlImportedScripts:Map<String, Bool> = [];
private var spritesParentFolder = "";
@@ -45,6 +47,7 @@ class Stage extends FlxBasic implements IBeatReceiver {
stageScript.load();
}
var event = null;
if (stageXML != null) {
if (PlayState.instance != null) {
var parsed:Null<Float>;
@@ -68,8 +71,8 @@ class Stage extends FlxBasic implements IBeatReceiver {
}
if (PlayState.instance != null) {
var event = PlayState.instance.scripts.event("onStageXMLParsed", EventManager.get(StageXMLEvent).recycle(this, stageXML, elems));
elems = event.elems;
event = EventManager.get(StageXMLEvent).recycle(this, stageXML, elems);
elems = PlayState.instance.scripts.event("onStageXMLParsed", event).elems;
}
for(node in elems) {
@@ -134,6 +137,22 @@ class Stage extends FlxBasic implements IBeatReceiver {
);
PlayState.instance.add(PlayState.instance.comboGroup);
PlayState.instance.comboGroup;
case "use-extension" | "extension" | "ext":
if (!node.has.script || PlayState.instance == null) continue;
var folder = node.getAtt("folder").getDefault("data/scripts/");
if (!folder.endsWith("/")) folder += "/";
var path = Paths.script(folder + node.getAtt("script"));
var daScript = Script.create(path);
if (daScript is DummyScript) Logs.trace('Script at ${path} does not exist.', ERROR);
else {
xmlImportedScripts.set(path, node.getAtt("isShortLived") == "true");
PlayState.instance.scripts.add(daScript);
daScript.load();
}
null;
default: null;
}
@@ -173,8 +192,20 @@ class Stage extends FlxBasic implements IBeatReceiver {
});
if (PlayState.instance == null) return;
for(k=>e in stageSprites) {
for (k=>e in stageSprites)
stageScript.set(k, e);
// idk lemme check anyways just in case scripts did smth - Nex
if (event != null) PlayState.instance.scripts.event("onPostStageCreation", event);
// shortlived scripts destroy when the stage finishes setting up - Nex
for (p=>b in xmlImportedScripts) if (b) {
var script = PlayState.instance.scripts.getByPath(p);
if (script == null) continue;
PlayState.instance.scripts.remove(script);
script.destroy();
}
}
+4
View File
@@ -3,19 +3,23 @@ package hscript;
class Config {
// Runs support for custom classes in these
public static final ALLOWED_CUSTOM_CLASSES = [
#if !DOCUMENTATION
"flixel",
"funkin",
#end
];
// Runs support for abstract support in these
public static final ALLOWED_ABSTRACT_AND_ENUM = [
#if !DOCUMENTATION
"flixel",
"openfl",
"haxe.xml",
"haxe.CallStack",
"funkin",
#end
];
// Incase any of your files fail