From 0e72590bcacf346a03ad6323d0c1bfb685d93236 Mon Sep 17 00:00:00 2001 From: Vortex2Oblivion <73261680+Vortex2Oblivion@users.noreply.github.com> Date: Thu, 23 Nov 2023 10:12:40 -0500 Subject: [PATCH] more hscript stuff outside of playstate --- mods/Default Icons/_polymod_meta.json | 3 +- mods/Friday Night Funkin'/_polymod_meta.json | 5 +- source/modding/SwitchModSubstate.hx | 2 +- source/modding/custom/CustomState.hx | 4 +- source/states/MainMenuState.hx | 35 +++--------- source/states/ModsMenu.hx | 8 ++- source/states/TitleState.hx | 60 ++++++++++++++++++-- 7 files changed, 77 insertions(+), 40 deletions(-) diff --git a/mods/Default Icons/_polymod_meta.json b/mods/Default Icons/_polymod_meta.json index 752f68ab47..de0f96cb2e 100644 --- a/mods/Default Icons/_polymod_meta.json +++ b/mods/Default Icons/_polymod_meta.json @@ -6,6 +6,7 @@ "mod_version": "1.0.0", "license": "GPL-3.0", "metadata": { - "auto_enable": "false" + "auto_enable": "false", + "canBeSwitchedTo": "false" } } \ No newline at end of file diff --git a/mods/Friday Night Funkin'/_polymod_meta.json b/mods/Friday Night Funkin'/_polymod_meta.json index ccc1b5520b..981678c0a3 100644 --- a/mods/Friday Night Funkin'/_polymod_meta.json +++ b/mods/Friday Night Funkin'/_polymod_meta.json @@ -4,5 +4,8 @@ "author":"Ninjamuffin99, PhantomArcade, KawaiiSprite, EvilSk8r", "api_version":"0.5.0", "mod_version":"0.2.8", - "license":"Apache 2.0" + "license":"Apache 2.0", + "metadata": { + "canBeDisabled": "false" + } } \ No newline at end of file diff --git a/source/modding/SwitchModSubstate.hx b/source/modding/SwitchModSubstate.hx index 2b276a336a..5560d3f8cf 100644 --- a/source/modding/SwitchModSubstate.hx +++ b/source/modding/SwitchModSubstate.hx @@ -108,7 +108,7 @@ class SwitchModSubstate extends MusicBeatSubstate for(modId in PolymodHandler.metadataArrays) { - if (ModList.modList.get(modId)){ + if (ModList.modList.get(modId) && ModList.modMetadatas.get(modId).metadata.get('canBeSwitchedTo') != 'false'){ var modOption = new ChangeModOption(ModList.modMetadatas.get(modId).title, modId, optionLoopNum); page.add(modOption); optionLoopNum++; diff --git a/source/modding/custom/CustomState.hx b/source/modding/custom/CustomState.hx index 3b56d05f44..b3f4c66efc 100644 --- a/source/modding/custom/CustomState.hx +++ b/source/modding/custom/CustomState.hx @@ -5,12 +5,14 @@ import states.MusicBeatState; class CustomState extends MusicBeatState { public var script:HScript; + public static var instance:CustomState = null; override function new(script:String){ + instance = this; this.script = new HScript(Paths.hx("classes/states/" + script)); + this.script.start(); super(); } override function create(){ - allScriptCall("create"); super.create(); allScriptCall("createPost"); } diff --git a/source/states/MainMenuState.hx b/source/states/MainMenuState.hx index 4d0afe483f..9e6d6bdf1b 100644 --- a/source/states/MainMenuState.hx +++ b/source/states/MainMenuState.hx @@ -44,7 +44,7 @@ class MainMenuState extends MusicBeatState var camFollow:FlxObject; var ui_Skin:Null; public var scripts:Array = []; - var classScripts:HScript; + var script:HScript; function allScriptCall(func:String, ?args:Array) { for (cool_script in scripts) { @@ -54,40 +54,19 @@ class MainMenuState extends MusicBeatState function loadScripts(){ #if sys - var modList = modding.ModList.getActiveMods(modding.PolymodHandler.metadataArrays); - - if (modList.length > 0) - { - for (mod in modList) - { - if (sys.FileSystem.exists("mods/" + mod + "/classes/states/MainMenuState")) - { - var modclassScriptss = sys.FileSystem.readDirectory("mods/" + mod + "/classes/states/MainMenuState"); - - if (modclassScriptss.length > 0) - { - for (file in modclassScriptss) - { - if(file.endsWith('.hx')) - { - classScripts = new HScript("mods/" + mod + "/classes/states/MainMenuState/" + file, true); - classScripts.start(); - - scripts.push(classScripts); - } - } - } - } - } + if (sys.FileSystem.exists("mods/" + Options.getData("curMod") + "/classes/states/MainMenuState.hx")){ + script = new HScript("mods/" + Options.getData("curMod") + "/classes/states/MainMenuState.hx", true); + script.start(); + scripts.push(script); } #end } + override function create() { - instance = this; - loadScripts(); + instance = this; if (ui_Skin == null || ui_Skin == "default") ui_Skin = Options.getData("uiSkin"); diff --git a/source/states/ModsMenu.hx b/source/states/ModsMenu.hx index 5dad07d8ad..4af771319e 100644 --- a/source/states/ModsMenu.hx +++ b/source/states/ModsMenu.hx @@ -118,9 +118,11 @@ class ModsMenu extends MusicBeatState for(modId in PolymodHandler.metadataArrays) { - var modOption = new ModOption(ModList.modMetadatas.get(modId).title, modId, optionLoopNum); - page.add(modOption); - optionLoopNum++; + if(ModList.modMetadatas.get(modId).metadata.get('canBeDisabled') != 'false'){ + var modOption = new ModOption(ModList.modMetadatas.get(modId).title, modId, optionLoopNum); + page.add(modOption); + optionLoopNum++; + } } } diff --git a/source/states/TitleState.hx b/source/states/TitleState.hx index 532099b5c1..b2350814b3 100644 --- a/source/states/TitleState.hx +++ b/source/states/TitleState.hx @@ -1,5 +1,6 @@ package states; +import modding.scripts.languages.HScript; #if discord_rpc import utilities.Discord.DiscordClient; #end @@ -49,7 +50,30 @@ class TitleState extends MusicBeatState { var swagShader:TitleEffect; + public static var instance:TitleState = null; + + public var scripts:Array = []; + var script:HScript; + + function allScriptCall(func:String, ?args:Array) { + for (cool_script in scripts) { + cool_script.call(func, args); + } + } + + function loadScripts(){ + #if sys + if (sys.FileSystem.exists("mods/" + Options.getData("curMod") + "/classes/states/TitleState.hx")){ + script = new HScript("mods/" + Options.getData("curMod") + "/classes/states/TitleState.hx", true); + script.start(); + scripts.push(script); + } + #end + } + override public function create():Void { + + instance = this; MusicBeatState.windowNameSuffix = ""; @@ -84,6 +108,8 @@ class TitleState extends MusicBeatState { curWacky = FlxG.random.getObject(getIntroTextShit()); + + super.create(); #if discord_rpc @@ -103,8 +129,12 @@ class TitleState extends MusicBeatState { firstTimeStarting = true; + } + loadScripts(); + + new FlxTimer().start(1, function(tmr:FlxTimer) startIntro()); } @@ -127,6 +157,8 @@ class TitleState extends MusicBeatState { function startIntro() { if (!initialized) { + allScriptCall("startIntro"); + var diamond:FlxGraphic = FlxGraphic.fromClass(GraphicTransTileDiamond); diamond.persist = true; diamond.destroyOnNoUse = false; @@ -162,6 +194,8 @@ class TitleState extends MusicBeatState { Main.toggleVers(Options.getData("versionDisplay")); Main.changeFont(Options.getData("infoDisplayFont")); + + allScriptCall("startIntroPost"); } version = '${MusicBeatState.windowNamePrefix}-git (v${Assets.getText("version.txt")})'; @@ -261,6 +295,7 @@ class TitleState extends MusicBeatState { skipIntro(); else initialized = true; + } function getIntroTextShit():Array> { @@ -342,6 +377,7 @@ class TitleState extends MusicBeatState { transitioning = true; + allScriptCall("checkForUpdate"); new FlxTimer().start(2, function(tmr:FlxTimer) { var http = new haxe.Http("https://raw.githubusercontent.com/Vortex2Oblivion/LeatherEngine-Extended-Support/main/version.txt"); @@ -370,27 +406,34 @@ class TitleState extends MusicBeatState { skipIntro(); super.update(elapsed); + allScriptCall("update", [elapsed]); } function createCoolText(textArray:Array) { + allScriptCall("createCoolText"); for (i in 0...textArray.length) { addMoreText(textArray[i]); } + allScriptCall("createCoolTextPost"); } function addMoreText(text:String) { + allScriptCall("addMoreText"); var coolText:Alphabet = new Alphabet(0, 0, text.toUpperCase(), true, false); coolText.screenCenter(X); coolText.y += (textGroup.length * 60) + 200; credGroup.add(coolText); textGroup.add(coolText); + allScriptCall("addMoreTextPost"); } function deleteCoolText() { + allScriptCall("deleteCoolText"); while (textGroup.members.length > 0) { credGroup.remove(textGroup.members[0], true); textGroup.remove(textGroup.members[0], true); } + allScriptCall("deleteCoolTextPost"); } function textDataText(line:Int) { @@ -411,13 +454,17 @@ class TitleState extends MusicBeatState { super.beatHit(); if (!Options.getData("oldTitle")) { - logoBl.animation.play('bump'); + if(logoBl != null){ + logoBl.animation.play('bump'); + } danceLeft = !danceLeft; - if (danceLeft) - gfDance.animation.play('danceRight'); - else - gfDance.animation.play('danceLeft'); + if(gfDance != null){ + if (danceLeft) + gfDance.animation.play('danceRight'); + else + gfDance.animation.play('danceLeft'); + } switch (curBeat) { case 1: @@ -454,11 +501,13 @@ class TitleState extends MusicBeatState { skippedIntro = true; MusicBeatState.windowNameSuffix = ""; } + allScriptCall("beatHit"); } var skippedIntro:Bool = false; function skipIntro():Void { + allScriptCall("skipIntro"); if (!skippedIntro) { MusicBeatState.windowNameSuffix = ""; @@ -469,5 +518,6 @@ class TitleState extends MusicBeatState { remove(credGroup); skippedIntro = true; } + allScriptCall("skipIntroPost"); } }