From 434bdabbf7f41020d1341ec0b67752db80a11c97 Mon Sep 17 00:00:00 2001 From: Char <73309364+CharGoldenYT@users.noreply.github.com> Date: Sat, 6 Sep 2025 15:32:57 -0400 Subject: [PATCH 01/13] polymod preperations --- .DS_Store | Bin 0 -> 8196 bytes Project.xml | 15 +- source/.DS_Store | Bin 0 -> 14340 bytes source/Main.hx | 47 +- source/MainMenuState.hx | 4 +- source/MusicBeatState.hx | 29 +- source/MusicBeatSubstate.hx | 6 - source/Paths.hx | 35 +- .../sys/logger/AnsiColors.hx} | 78 +-- source/charengine/sys/logger/Level.hx | 10 + source/charengine/sys/logger/LogTools.hx | 22 + source/charengine/sys/logger/Logs.hx | 52 ++ .../backend/Script.hx | 0 .../backend/assets/AssetsLibraryList.hx | 0 .../backend/assets/IModsAssetLibrary.hx | 0 .../backend/assets/ModsFolderLibrary.hx | 0 .../backend/assets/ScriptedAssetLibrary.hx | 0 .../backend/import.hx | 0 .../backend/options/ArrayTools.hx | 0 .../backend/options/OptionsScreen.hx | 0 .../backend/options/OptionsTree.hx | 0 .../backend/options/TreeMenu.hx | 0 .../backend/options/import.hx | 0 .../backend/options/type/OptionType.hx | 0 .../backend/options/type/PortraitOption.hx | 0 .../backend/options/type/TextOption.hx | 0 .../backend/shaders/CustomShader.hx | 0 .../backend/shaders/FunkinShader.hx | 0 .../backend/system/import.hx | 0 .../backend/utils/CoolUtil.hx | 0 .../backend/utils/FileAttributeWrapper.hx | 0 .../backend/utils/LogUtils.hx | 0 .../backend/utils/NativeAPI.hx | 0 .../backend/utils/ScriptUtils.hx | 0 .../backend/utils/native/Windows.hx | 0 source/{codename => codename_ref}/import.hx | 1 - .../modding/ModsFolder.hx | 0 .../scripting/DummyScript.hx | 0 .../scripting/GlobalScript.hx | 0 .../scripting/HScript.hx | 0 .../scripting/ModState.hx | 0 .../scripting/ModSubState.hx | 0 .../scripting/ScriptPack.hx | 0 .../scripting/import.hx | 0 .../states/MainState.hx | 0 .../substates/ModSwitchMenu.hx | 0 source/credits/.DS_Store | Bin 0 -> 6148 bytes source/credits/BaseCreditsState.hx | 6 + source/credits/PECreditsState.hx | 609 ++++++++++++++++++ source/credits/{ => old}/CreditsState.hx | 0 source/credits/{ => old}/FNFCredits.hx | 0 source/credits/{ => old}/PECredits.hx | 0 source/credits/{ => old}/UECredits.hx | 0 source/credits/{ => old}/import.hx | 0 source/import.hx | 6 +- 55 files changed, 748 insertions(+), 172 deletions(-) create mode 100644 .DS_Store create mode 100644 source/.DS_Store rename source/{codename/backend/system/Logs.hx => charengine/sys/logger/AnsiColors.hx} (62%) create mode 100644 source/charengine/sys/logger/Level.hx create mode 100644 source/charengine/sys/logger/LogTools.hx create mode 100644 source/charengine/sys/logger/Logs.hx rename source/{codename => codename_ref}/backend/Script.hx (100%) rename source/{codename => codename_ref}/backend/assets/AssetsLibraryList.hx (100%) rename source/{codename => codename_ref}/backend/assets/IModsAssetLibrary.hx (100%) rename source/{codename => codename_ref}/backend/assets/ModsFolderLibrary.hx (100%) rename source/{codename => codename_ref}/backend/assets/ScriptedAssetLibrary.hx (100%) rename source/{codename => codename_ref}/backend/import.hx (100%) rename source/{codename => codename_ref}/backend/options/ArrayTools.hx (100%) rename source/{codename => codename_ref}/backend/options/OptionsScreen.hx (100%) rename source/{codename => codename_ref}/backend/options/OptionsTree.hx (100%) rename source/{codename => codename_ref}/backend/options/TreeMenu.hx (100%) rename source/{codename => codename_ref}/backend/options/import.hx (100%) rename source/{codename => codename_ref}/backend/options/type/OptionType.hx (100%) rename source/{codename => codename_ref}/backend/options/type/PortraitOption.hx (100%) rename source/{codename => codename_ref}/backend/options/type/TextOption.hx (100%) rename source/{codename => codename_ref}/backend/shaders/CustomShader.hx (100%) rename source/{codename => codename_ref}/backend/shaders/FunkinShader.hx (100%) rename source/{codename => codename_ref}/backend/system/import.hx (100%) rename source/{codename => codename_ref}/backend/utils/CoolUtil.hx (100%) rename source/{codename => codename_ref}/backend/utils/FileAttributeWrapper.hx (100%) rename source/{codename => codename_ref}/backend/utils/LogUtils.hx (100%) rename source/{codename => codename_ref}/backend/utils/NativeAPI.hx (100%) rename source/{codename => codename_ref}/backend/utils/ScriptUtils.hx (100%) rename source/{codename => codename_ref}/backend/utils/native/Windows.hx (100%) rename source/{codename => codename_ref}/import.hx (71%) rename source/{codename => codename_ref}/modding/ModsFolder.hx (100%) rename source/{codename => codename_ref}/scripting/DummyScript.hx (100%) rename source/{codename => codename_ref}/scripting/GlobalScript.hx (100%) rename source/{codename => codename_ref}/scripting/HScript.hx (100%) rename source/{codename => codename_ref}/scripting/ModState.hx (100%) rename source/{codename => codename_ref}/scripting/ModSubState.hx (100%) rename source/{codename => codename_ref}/scripting/ScriptPack.hx (100%) rename source/{codename => codename_ref}/scripting/import.hx (100%) rename source/{codename => codename_ref}/states/MainState.hx (100%) rename source/{codename => codename_ref}/substates/ModSwitchMenu.hx (100%) create mode 100644 source/credits/.DS_Store create mode 100644 source/credits/BaseCreditsState.hx create mode 100644 source/credits/PECreditsState.hx rename source/credits/{ => old}/CreditsState.hx (100%) rename source/credits/{ => old}/FNFCredits.hx (100%) rename source/credits/{ => old}/PECredits.hx (100%) rename source/credits/{ => old}/UECredits.hx (100%) rename source/credits/{ => old}/import.hx (100%) diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..261e13f46274ff76d320202193726941951c14e1 GIT binary patch literal 8196 zcmeHM&u<$=6n^8Fc%7e{HYuTiWRVL}D-+tNQiV_*Cs7+HB*alj)E2XAPwZ{iJJ#+x zNr{4d28lm_14pi0`wwvB2nR0w0~|OZae{AV*Xi!Wsd_1@)E#U0&Ca}U=FRusoAua4 z#HzjK`$Y3ZWZ;t09LH@)k^S;IQ*v?3n~)56T6aamc7=^+^Ne=ZkTH-kkTH-kkTH-k z@G>xfceX6XIq&_bH@jyHWDLBL49NYVgiFdwEc=mETL*6H2mqN!vnr^oul|rF*#KFI zWj~T=L17UTGJ>-Bh{58M1B>A3uf+QONJemCYG#ZR&&=Wz3X2aOtfbV5RU(<)GX^pS z&N3j+?s+OxiyR8I^ZPRT%KxgOfKvlKvM9vI2garzYMcTM`;&$(oMPKR*lBI{wx&IH zs_nosj|Ar88s=LKGXkr8eGTj%O=}cd0X`g7Yc}Uvnr>08&LNkYu*a6GPTP?CRYOeB z3f-Y)`jl?d8r`K0$TD@PnZ`kb=!XQe1!`c89qNKnS6?YfE}x-o9|qm{SC=Pt*L8w$ zaq%~n8_B;mS}+R6xbdLY7KgRa3VT7-^6$x~Z6REHP`B(Ihac9>*%jf1mg8|>0h}g> z%KgtBuPF|zqUSXOg{?&$M$stN&H3Zw>o=FKmX>Z@JGojqzIkmC_3JlIPKw6d!h0WV z)gQSXPke(Fps;xJrpf5}^e%m=ad1%cJy&?rClZy14+L1!e5N8N$;|{jdjwBOF2N+# zQ4_%GI5}eyHx*?7?EvE=J{+Jt_%6g~n%7lKC9#v#hSok1K4z1-QKp9&10$sUt|Ban zEFebK5i@Ium>R8V+A_M5+GF&IT1ykwd9e4K$YN88$TFeH=@2|T7cVl_Quqnll(`2k z1y6?zMcUxv{?=@NhR#->aL`LBkiWyD0)EbcDBeKS1KIhrF}y?F-C!fTZ8( z%C2CC`vK$`%I#N@PhJ|eUT#lsXu63=3PEmn>p-ZgwG8&9{Hk46c*qi6%^XGGff97i0Vi*==?b3+WEi#zlf=`F*61- z23`^dSbnv(T7@x#T~fD8p0!K3zQiSq)ayr5L2y&YaY%I>hdlkm5cLvNC8iR~ek9R? X^1uHOAn<)5d;e$ee-(VM?)(2ge(l0U literal 0 HcmV?d00001 diff --git a/Project.xml b/Project.xml index f242a31..fabeef1 100644 --- a/Project.xml +++ b/Project.xml @@ -2,7 +2,12 @@ - +
+ +
+
+ +
@@ -144,8 +149,12 @@ - + + + @@ -157,7 +166,7 @@ - + diff --git a/source/.DS_Store b/source/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c455e43a2aa9a950ff36d0cba4c0efd66fbaf0f9 GIT binary patch literal 14340 zcmeHOTW=dh6h51q?b=D4UZ4VjEb&^E(3T2>ghDQbpaK{|A^NmLc( z4GAQE0zUy>`4v3!*q^{VFTnSm-F0TxV<$oaRb@BY9cO*MbIyKq=FFVQMnt^TLGulf zWf95aWLqxb@~udPt#R;so+HOJ?szyK;Kb*$NLxaw;;iF5`5@}9`lSAXe&-*{Zby=_Rgr6rGW9^mw0zb_x@r@_!8OJfAit{DRv z0~rGu0~rJVI|exS;>Z`HHoImFWDH~s3>jd4sNiI~61OK&tEmGQF5&q-m+*SvGneVS zSBcw|xIKwle1pS_plBng7nc}b1jqeKEVmN3Cs7;0#Z$}B6I=G;3dK|FxL;9m@m8WX zyJiez42&}HCT^AGj&xA7_qB@lW!GIX4{PwBQ#JUU>;T_J{oay}U9Wquq-0-GTSszV zHf3FU5=a+qAcv^glX`tk2Jj`s-2>MifcJe$C;jiib_=@r9LJOW_x?!XFUk8rao^w* z-9hL9Kahs{z?}?h-ymUOYB#0j<)N0ui#70B$8+sMLl4@{p;h-cel_+t7NM29Ds|;5 zkbC$R&-Y-9DDvyVu`f(q0jLA? z0}-JULH13=68!Rk7(o7x;tt?(h##`%u&K$;rofk}6?SsUEqA?{8Votf-Tvc%7(DZ ztkX|PBZ4jIGCXAtXu?18(wv;d8NnlX?*I0Na{yzisdrpVk>ei>j`NyZnJ4>WnKk9h zMlOyr``JvI_<7*DYu&-mF|vFIEFHQmGm0%wmw=4sIX-O_PsnT;gfr@`tK`4s+fzT!wrW|DL8rIBoEDnQFNtTV^QPn(J;#;S?9 zpxiKvMG@$T0_E1k zjd5;Cmmtkm0@oVrI)dsh9LKYTTT&cn>*HYtpBNKl%+e59?qTd646~Hu`51#KTn&Eu zvJV{d$tuQx14kY$+`QD#pCLv-D}Lq)S#xF>u0HLCX7UzBfphFB!zOwT`Gi@a4zJtx zSW#9@+0n`%yOS}HG4Q-IP{9K(A{%lwIQkcKS60M4CD)Ct`Vas9o~+TCWi5Th^WsYT?cSSHsRVq4I9(DC!J+*3*-B z6Gh9MiRpDzo3&7hv*H*(Pq7b79VO@pFf;Ec?~yJCcgnnpdjU9B4BRR5b)CuH@1h6K zRga~7Sku+OIqF_-!C?M^#tmy%`n{|3ZE9bDOk0?RVT~PPJxwgv$IiVD#<_*Ps918l zkCjV+IIHQ%jcmJXSnzG>pndMw(PMf*-*?7mgg8xMGY8Ay2!`F`(>@q9}hKwpg1vY;gr_ z*~-B)a>#uiymw?Xp$wWfQqqmXem8!<>6b>g)9#1M%fES3(=)SkxqL2P%zs(k3l6Jc zJsk8`>%GtUTP+AWjpTE^@u1y0+$vvQ3;eL&_FFv#w3{u6eDSdDH-p2~VBk0VimgUp z-U#r}_b^FP+%Hy|h;Pb7Ux1T&I{U`v6a6)29BEwrZp78Jdhp2ZD;=q()B-Ybv}+PzY!9HFnd-8e6883#ujAgLPJ#8et|T2S1}&w@}$5^+u^%*6`Wt=Ob*DZI4;&pfcS;4;=Pr~v4zY^+@3_OLUCWAX#b;^08{@> Xl-2)P{crtu8F!IRYh#h;xc>heYbRNB literal 0 HcmV?d00001 diff --git a/source/Main.hx b/source/Main.hx index 8287bc0..5fd2d00 100644 --- a/source/Main.hx +++ b/source/Main.hx @@ -10,8 +10,7 @@ import openfl.display.FPS; import openfl.display.Sprite; import openfl.events.Event; import openfl.display.StageScaleMode; -import codename.modding.ModsFolder; -import codename.backend.system.Logs; +import charengine.sys.logger.Logs; //crash handler stuff #if CRASH_HANDLER @@ -25,20 +24,19 @@ import sys.io.File; import sys.io.Process; #end -import codename.backend.assets.AssetsLibraryList; - using StringTools; class Main extends Sprite { - var gameWidth:Int = 1280; // Width of the game in pixels (might be less / more in actual pixels depending on your zoom). - var gameHeight:Int = 720; // Height of the game in pixels (might be less / more in actual pixels depending on your zoom). - var initialState:Class = TitleState; // The FlxState the game starts with. - var zoom:Float = -1; // If -1, zoom is automatically calculated to fit the window dimensions. - var framerate:Int = 60; // How many frames per second the game should run at. - var skipSplash:Bool = true; // Whether to skip the flixel splash screen that appears in release mode. - var startFullscreen:Bool = false; // Whether to start the game in fullscreen on desktop targets - var modToLoad:String = null; + var game = { + width: 1280, + height: 720, + initialState: TitleState, + zoom: -1.0, + fps: 60, + skipSplash: true, + startFullscreen: false, + }; public static var fpsVar:FPS; public static var noTerminalColor:Bool = false; @@ -82,20 +80,18 @@ class Main extends Sprite var stageWidth:Int = Lib.current.stage.stageWidth; var stageHeight:Int = Lib.current.stage.stageHeight; - if (zoom == -1) + if (game.zoom == -1) { - var ratioX:Float = stageWidth / gameWidth; - var ratioY:Float = stageHeight / gameHeight; - zoom = Math.min(ratioX, ratioY); - gameWidth = Math.ceil(stageWidth / zoom); - gameHeight = Math.ceil(stageHeight / zoom); + var ratioX:Float = stageWidth / game.width; + var ratioY:Float = stageHeight / game.height; + game.zoom = Math.min(ratioX, ratioY); + game.width = Math.ceil(stageWidth / game.zoom); + game.height = Math.ceil(stageHeight / game.zoom); } - - Paths.assetsTree = new AssetsLibraryList(); Logs.init(); ClientPrefs.loadDefaultStuff(); - addChild(new FlxGame(gameWidth, gameHeight, initialState, framerate, framerate, skipSplash, startFullscreen)); + addChild(new FlxGame(game.width, game.height, game.initialState, game.fps, game.fps, game.skipSplash, game.startFullscreen)); #if !mobile fpsVar = new FPS(10, 3, 0xFFFFFF); @@ -115,15 +111,6 @@ class Main extends Sprite #if CRASH_HANDLER Lib.current.loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, onCrash); #end - - #if GLOBAL_SCRIPT - codename.scripting.GlobalScript.init(); - #end - - ModsFolder.init(); - #if MOD_SUPPORT - ModsFolder.switchMod(modToLoad = ClientPrefs.data.lastLoadedMod); - #end } // Code was entirely made by sqirra-rng for their fnf engine named "Izzy Engine", big props to them!!! diff --git a/source/MainMenuState.hx b/source/MainMenuState.hx index d5a9f10..3860580 100644 --- a/source/MainMenuState.hx +++ b/source/MainMenuState.hx @@ -349,12 +349,12 @@ class MainMenuState extends MusicBeatState MusicBeatState.switchState(new FreeplayState()); #if MODS_ALLOWED case 'mods': - openSubState(new codename.substates.ModSwitchMenu()); + MusicBeatState.switchState(new ModsMenuState()); #end case 'awards': MusicBeatState.switchState(new AchievementsMenuState()); case 'credits': - MusicBeatState.switchState(new credits.CreditsState()); + MusicBeatState.switchState(new credits.PECreditsState()); case 'options': LoadingState.loadAndSwitchState(new options.SelectThing()); } diff --git a/source/MusicBeatState.hx b/source/MusicBeatState.hx index ca35c17..173db82 100644 --- a/source/MusicBeatState.hx +++ b/source/MusicBeatState.hx @@ -15,9 +15,6 @@ import flixel.FlxState; import flixel.FlxCamera; import flixel.FlxBasic; import flixel.sound.FlxSound; -// scripting -import codename.scripting.ScriptPack; -import codename.scripting.DummyScript; #if sys import sys.FileSystem; import sys.io.File; @@ -42,9 +39,6 @@ class MusicBeatState extends modchart.modcharting.ModchartMusicBeatState inline function get_controls():Controls return PlayerSettings.player1.controls; - // scripting - public var stateScripts:ScriptPack; - public var scriptsAllowed:Bool = true; public static var lastScriptName:String = null; @@ -55,19 +49,11 @@ class MusicBeatState extends modchart.modcharting.ModchartMusicBeatState public function new(scriptsAllowed:Bool = true, ?scriptName:String) { super(); - this.scriptsAllowed = #if SOFTCODED_STATES scriptsAllowed #else false #end; - - if (lastStateName != (lastStateName = Type.getClassName(Type.getClass(this)))) - { - lastScriptName = null; - } - this.scriptName = scriptName != null ? scriptName : lastScriptName; - lastScriptName = this.scriptName; } - function loadScript() + function loadScript() // Stubbed untill later, this will be re-used for loading polymod scripts. { - var className = Type.getClassName(Type.getClass(this)); +/* var className = Type.getClassName(Type.getClass(this)); if (stateScripts == null) (stateScripts = new ScriptPack(className)).setParent(this); if (scriptsAllowed) @@ -88,7 +74,7 @@ class MusicBeatState extends modchart.modcharting.ModchartMusicBeatState } else stateScripts.reload(); - } + } */ } override function create() @@ -108,10 +94,12 @@ class MusicBeatState extends modchart.modcharting.ModchartMusicBeatState FlxTransitionableState.skipNextTransOut = false; } - public function call(name:String, ?args:Array, ?defaultVal:Dynamic):Dynamic { - // calls the function on the assigned script + public function call(name:String, ?args:Array, ?defaultVal:Dynamic):Dynamic { // Stubbed untill polymod loader finished. + /* // calls the function on the assigned script if(stateScripts != null) return stateScripts.call(name, args); + return defaultVal; */ + return defaultVal; } @@ -140,9 +128,6 @@ class MusicBeatState extends modchart.modcharting.ModchartMusicBeatState if (FlxG.save.data != null) FlxG.save.data.fullscreen = FlxG.fullscreen; - if (FlxG.keys.justPressed.F5) - loadScript(); - call("update", [elapsed]); super.update(elapsed); diff --git a/source/MusicBeatSubstate.hx b/source/MusicBeatSubstate.hx index 777af68..bd31d6b 100644 --- a/source/MusicBeatSubstate.hx +++ b/source/MusicBeatSubstate.hx @@ -1,6 +1,5 @@ package; -import codename.scripting.ScriptPack; import Conductor.BPMChangeEvent; import flixel.FlxG; import flixel.FlxSubState; @@ -10,11 +9,6 @@ import flixel.FlxSprite; class MusicBeatSubstate extends FlxSubState { - /** - * Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx") - */ - public var stateScripts:ScriptPack; - public var scriptsAllowed:Bool = true; public var scriptName:String = null; diff --git a/source/Paths.hx b/source/Paths.hx index c73ec3b..32cd891 100644 --- a/source/Paths.hx +++ b/source/Paths.hx @@ -23,10 +23,6 @@ import haxe.Json; import flash.media.Sound; import flixel.graphics.frames.FlxFramesCollection; import flixel.animation.FlxAnimationController; -import codename.backend.assets.AssetsLibraryList; - -import codename.scripting.HScript; -import codename.backend.Script; using StringTools; @@ -40,8 +36,6 @@ class Paths public static var noteSkinFramesMap:Map = new Map(); public static var noteSkinAnimsMap:Map = new Map(); - public static var assetsTree:AssetsLibraryList; - #if MODS_ALLOWED public static var ignoreModFolders:Array = [ 'characters', @@ -63,9 +57,9 @@ class Paths ]; #end - static public function getFolderDirectories(key:String, addPath:Bool = false, source:codename.backend.assets.AssetsLibraryList.AssetSource = BOTH):Array + static public function getFolderDirectories(key:String, addPath:Bool = false):Array // Stubbed for later polymod use { - if (!key.endsWith("/")) + /* if (!key.endsWith("/")) key += "/"; var content = assetsTree.getFolders('assets/$key', source); if (addPath) @@ -73,12 +67,13 @@ class Paths for (k => e in content) content[k] = '$key$e'; } - return content; + return content; */ + return []; } - static public function getFolderContent(key:String, addPath:Bool = false, source:codename.backend.assets.AssetsLibraryList.AssetSource = BOTH):Array + static public function getFolderContent(key:String, addPath:Bool = false):Array // Stubbed for later polymod use { - // designed to work both on windows and web + /* // designed to work both on windows and web if (!key.endsWith("/")) key += "/"; var content = assetsTree.getFiles('assets/$key', source); @@ -87,7 +82,8 @@ class Paths for (k => e in content) content[k] = '$key$e'; } - return content; + return content; */ + return []; } public static var defaultSkin = 'NOTE_assets' + Note.getNoteSkinPostfix(); @@ -494,21 +490,6 @@ class Paths return ""; } - inline static public function hscript(key:String, ?library:String, isAssetsPath:Bool = false) { - var scriptPath = isAssetsPath ? key : cne_getPath(key, library); - if (!OpenFlAssets.exists(scriptPath)) { - var p:String; - for(ex in Script.scriptExtensions) { - p = '$scriptPath.$ex'; - if (OpenFlAssets.exists(p)) { - scriptPath = p; - break; - } - } - } - return scriptPath; - } - public static function returnSound(path:String, key:String, ?library:String) { #if MODS_ALLOWED diff --git a/source/codename/backend/system/Logs.hx b/source/charengine/sys/logger/AnsiColors.hx similarity index 62% rename from source/codename/backend/system/Logs.hx rename to source/charengine/sys/logger/AnsiColors.hx index 9e13a3a..7c37dce 100644 --- a/source/codename/backend/system/Logs.hx +++ b/source/charengine/sys/logger/AnsiColors.hx @@ -1,80 +1,4 @@ -package codename.backend.system; - -import haxe.Log; -import haxe.PosInfos; -import lime.app.Application; -using codename.backend.system.Logs.LogTools; - -class LogTools -{ - public static inline function levelToString(level:Level):String - { - switch (level) - { - case INFO: - return AnsiColors.LightPurple + '[ INFO ]'; - case WARNING: - return AnsiColors.LightYellow + '[ WARNING ]'; - case ERROR: - return AnsiColors.Error + '[ ERROR ]'; - default: - return '[ MISC ]'; - } - } -} - -class Logs -{ - public static var nativeTrace = Log.trace; - - public static function init() - { - Log.trace = traceOverride; - } - - static function levelToInt(l:Level):Int - { - switch(l) - { - case INFO: - return 0; - case MISC: - return 1; - case NONE: - return 2; - case WARNING: - return 3; - case ERROR: - return 4; - } - } - - static function traceOverride(v:Dynamic, ?infos:PosInfos):Void traceNew(v, NONE, infos); - - public static function traceNew(v:Dynamic, level:Level = NONE, ?infos:PosInfos):Void - { - var str = '${level.levelToString()} : ' + Log.formatOutput(v, infos).replace('\n\n', '\n').replace('\n', '\n${level.levelToString()} : ${infos.fileName}:${infos.lineNumber}: ') + AnsiColors.Reset; - #if js - if (js.Syntax.typeof(untyped console) != "undefined" && (untyped console).log != null) - (untyped console).log(str); - #elseif lua - untyped __define_feature__("use._hx_print", _hx_print(str)); - #elseif sys - Sys.println(str); - #else - throw new haxe.exceptions.NotImplementedException() - #end - } -} - -enum abstract Level(Int) -{ - var INFO = 0; - var MISC = 1; - var NONE = 2; - var WARNING = 3; - var ERROR = 4; -} +package charengine.sys.logger; // Thank you @notbilly in the Haxe Discord for the color codes! enum abstract AnsiColors(String) to String { diff --git a/source/charengine/sys/logger/Level.hx b/source/charengine/sys/logger/Level.hx new file mode 100644 index 0000000..9aeb3d1 --- /dev/null +++ b/source/charengine/sys/logger/Level.hx @@ -0,0 +1,10 @@ +package charengine.sys.logger; + +enum abstract Level(Int) +{ + var INFO = 0; + var MISC = 1; + var NONE = 2; + var WARNING = 3; + var ERROR = 4; +} \ No newline at end of file diff --git a/source/charengine/sys/logger/LogTools.hx b/source/charengine/sys/logger/LogTools.hx new file mode 100644 index 0000000..8bd0324 --- /dev/null +++ b/source/charengine/sys/logger/LogTools.hx @@ -0,0 +1,22 @@ +package charengine.sys.logger; + +import charengine.sys.logger.AnsiColors; +import charengine.sys.logger.Level; + +class LogTools +{ + public static inline function levelToString(level:Level):String + { + switch (level) + { + case INFO: + return AnsiColors.LightPurple + '[ INFO ]'; + case WARNING: + return AnsiColors.LightYellow + '[ WARNING ]'; + case ERROR: + return AnsiColors.Error + '[ ERROR ]'; + default: + return '[ MISC ]'; + } + } +} \ No newline at end of file diff --git a/source/charengine/sys/logger/Logs.hx b/source/charengine/sys/logger/Logs.hx new file mode 100644 index 0000000..c036940 --- /dev/null +++ b/source/charengine/sys/logger/Logs.hx @@ -0,0 +1,52 @@ +package charengine.sys.logger; // This is MY log script, so it's under charengine :3c - CharGoldenYT + +import haxe.Log; +import haxe.PosInfos; +import lime.app.Application; +import charengine.sys.logger.AnsiColors; +using charengine.sys.logger.LogTools; +import charengine.sys.logger.Level; + +class Logs +{ + public static var nativeTrace = Log.trace; + + public static function init() + { + Log.trace = traceOverride; + } + + static function levelToInt(l:Level):Int + { + switch(l) + { + case INFO: + return 0; + case MISC: + return 1; + case NONE: + return 2; + case WARNING: + return 3; + case ERROR: + return 4; + } + } + + static function traceOverride(v:Dynamic, ?infos:PosInfos):Void traceNew(v, NONE, infos); + + public static function traceNew(v:Dynamic, level:Level = NONE, ?infos:PosInfos):Void + { + var str = '${level.levelToString()} : ' + Log.formatOutput(v, infos).replace('\n\n', '\n').replace('\n', '\n${level.levelToString()} : ${infos.fileName}:${infos.lineNumber}: ') + AnsiColors.Reset; + #if js + if (js.Syntax.typeof(untyped console) != "undefined" && (untyped console).log != null) + (untyped console).log(str); + #elseif lua + untyped __define_feature__("use._hx_print", _hx_print(str)); + #elseif sys + Sys.println(str); + #else + throw new haxe.exceptions.NotImplementedException() + #end + } +} \ No newline at end of file diff --git a/source/codename/backend/Script.hx b/source/codename_ref/backend/Script.hx similarity index 100% rename from source/codename/backend/Script.hx rename to source/codename_ref/backend/Script.hx diff --git a/source/codename/backend/assets/AssetsLibraryList.hx b/source/codename_ref/backend/assets/AssetsLibraryList.hx similarity index 100% rename from source/codename/backend/assets/AssetsLibraryList.hx rename to source/codename_ref/backend/assets/AssetsLibraryList.hx diff --git a/source/codename/backend/assets/IModsAssetLibrary.hx b/source/codename_ref/backend/assets/IModsAssetLibrary.hx similarity index 100% rename from source/codename/backend/assets/IModsAssetLibrary.hx rename to source/codename_ref/backend/assets/IModsAssetLibrary.hx diff --git a/source/codename/backend/assets/ModsFolderLibrary.hx b/source/codename_ref/backend/assets/ModsFolderLibrary.hx similarity index 100% rename from source/codename/backend/assets/ModsFolderLibrary.hx rename to source/codename_ref/backend/assets/ModsFolderLibrary.hx diff --git a/source/codename/backend/assets/ScriptedAssetLibrary.hx b/source/codename_ref/backend/assets/ScriptedAssetLibrary.hx similarity index 100% rename from source/codename/backend/assets/ScriptedAssetLibrary.hx rename to source/codename_ref/backend/assets/ScriptedAssetLibrary.hx diff --git a/source/codename/backend/import.hx b/source/codename_ref/backend/import.hx similarity index 100% rename from source/codename/backend/import.hx rename to source/codename_ref/backend/import.hx diff --git a/source/codename/backend/options/ArrayTools.hx b/source/codename_ref/backend/options/ArrayTools.hx similarity index 100% rename from source/codename/backend/options/ArrayTools.hx rename to source/codename_ref/backend/options/ArrayTools.hx diff --git a/source/codename/backend/options/OptionsScreen.hx b/source/codename_ref/backend/options/OptionsScreen.hx similarity index 100% rename from source/codename/backend/options/OptionsScreen.hx rename to source/codename_ref/backend/options/OptionsScreen.hx diff --git a/source/codename/backend/options/OptionsTree.hx b/source/codename_ref/backend/options/OptionsTree.hx similarity index 100% rename from source/codename/backend/options/OptionsTree.hx rename to source/codename_ref/backend/options/OptionsTree.hx diff --git a/source/codename/backend/options/TreeMenu.hx b/source/codename_ref/backend/options/TreeMenu.hx similarity index 100% rename from source/codename/backend/options/TreeMenu.hx rename to source/codename_ref/backend/options/TreeMenu.hx diff --git a/source/codename/backend/options/import.hx b/source/codename_ref/backend/options/import.hx similarity index 100% rename from source/codename/backend/options/import.hx rename to source/codename_ref/backend/options/import.hx diff --git a/source/codename/backend/options/type/OptionType.hx b/source/codename_ref/backend/options/type/OptionType.hx similarity index 100% rename from source/codename/backend/options/type/OptionType.hx rename to source/codename_ref/backend/options/type/OptionType.hx diff --git a/source/codename/backend/options/type/PortraitOption.hx b/source/codename_ref/backend/options/type/PortraitOption.hx similarity index 100% rename from source/codename/backend/options/type/PortraitOption.hx rename to source/codename_ref/backend/options/type/PortraitOption.hx diff --git a/source/codename/backend/options/type/TextOption.hx b/source/codename_ref/backend/options/type/TextOption.hx similarity index 100% rename from source/codename/backend/options/type/TextOption.hx rename to source/codename_ref/backend/options/type/TextOption.hx diff --git a/source/codename/backend/shaders/CustomShader.hx b/source/codename_ref/backend/shaders/CustomShader.hx similarity index 100% rename from source/codename/backend/shaders/CustomShader.hx rename to source/codename_ref/backend/shaders/CustomShader.hx diff --git a/source/codename/backend/shaders/FunkinShader.hx b/source/codename_ref/backend/shaders/FunkinShader.hx similarity index 100% rename from source/codename/backend/shaders/FunkinShader.hx rename to source/codename_ref/backend/shaders/FunkinShader.hx diff --git a/source/codename/backend/system/import.hx b/source/codename_ref/backend/system/import.hx similarity index 100% rename from source/codename/backend/system/import.hx rename to source/codename_ref/backend/system/import.hx diff --git a/source/codename/backend/utils/CoolUtil.hx b/source/codename_ref/backend/utils/CoolUtil.hx similarity index 100% rename from source/codename/backend/utils/CoolUtil.hx rename to source/codename_ref/backend/utils/CoolUtil.hx diff --git a/source/codename/backend/utils/FileAttributeWrapper.hx b/source/codename_ref/backend/utils/FileAttributeWrapper.hx similarity index 100% rename from source/codename/backend/utils/FileAttributeWrapper.hx rename to source/codename_ref/backend/utils/FileAttributeWrapper.hx diff --git a/source/codename/backend/utils/LogUtils.hx b/source/codename_ref/backend/utils/LogUtils.hx similarity index 100% rename from source/codename/backend/utils/LogUtils.hx rename to source/codename_ref/backend/utils/LogUtils.hx diff --git a/source/codename/backend/utils/NativeAPI.hx b/source/codename_ref/backend/utils/NativeAPI.hx similarity index 100% rename from source/codename/backend/utils/NativeAPI.hx rename to source/codename_ref/backend/utils/NativeAPI.hx diff --git a/source/codename/backend/utils/ScriptUtils.hx b/source/codename_ref/backend/utils/ScriptUtils.hx similarity index 100% rename from source/codename/backend/utils/ScriptUtils.hx rename to source/codename_ref/backend/utils/ScriptUtils.hx diff --git a/source/codename/backend/utils/native/Windows.hx b/source/codename_ref/backend/utils/native/Windows.hx similarity index 100% rename from source/codename/backend/utils/native/Windows.hx rename to source/codename_ref/backend/utils/native/Windows.hx diff --git a/source/codename/import.hx b/source/codename_ref/import.hx similarity index 71% rename from source/codename/import.hx rename to source/codename_ref/import.hx index 4c2c109..39f6435 100644 --- a/source/codename/import.hx +++ b/source/codename_ref/import.hx @@ -3,5 +3,4 @@ package ue; #if !macro import codename.backend.*; import codename.backend.assets.*; -import codename.modding.ModsFolder; #end \ No newline at end of file diff --git a/source/codename/modding/ModsFolder.hx b/source/codename_ref/modding/ModsFolder.hx similarity index 100% rename from source/codename/modding/ModsFolder.hx rename to source/codename_ref/modding/ModsFolder.hx diff --git a/source/codename/scripting/DummyScript.hx b/source/codename_ref/scripting/DummyScript.hx similarity index 100% rename from source/codename/scripting/DummyScript.hx rename to source/codename_ref/scripting/DummyScript.hx diff --git a/source/codename/scripting/GlobalScript.hx b/source/codename_ref/scripting/GlobalScript.hx similarity index 100% rename from source/codename/scripting/GlobalScript.hx rename to source/codename_ref/scripting/GlobalScript.hx diff --git a/source/codename/scripting/HScript.hx b/source/codename_ref/scripting/HScript.hx similarity index 100% rename from source/codename/scripting/HScript.hx rename to source/codename_ref/scripting/HScript.hx diff --git a/source/codename/scripting/ModState.hx b/source/codename_ref/scripting/ModState.hx similarity index 100% rename from source/codename/scripting/ModState.hx rename to source/codename_ref/scripting/ModState.hx diff --git a/source/codename/scripting/ModSubState.hx b/source/codename_ref/scripting/ModSubState.hx similarity index 100% rename from source/codename/scripting/ModSubState.hx rename to source/codename_ref/scripting/ModSubState.hx diff --git a/source/codename/scripting/ScriptPack.hx b/source/codename_ref/scripting/ScriptPack.hx similarity index 100% rename from source/codename/scripting/ScriptPack.hx rename to source/codename_ref/scripting/ScriptPack.hx diff --git a/source/codename/scripting/import.hx b/source/codename_ref/scripting/import.hx similarity index 100% rename from source/codename/scripting/import.hx rename to source/codename_ref/scripting/import.hx diff --git a/source/codename/states/MainState.hx b/source/codename_ref/states/MainState.hx similarity index 100% rename from source/codename/states/MainState.hx rename to source/codename_ref/states/MainState.hx diff --git a/source/codename/substates/ModSwitchMenu.hx b/source/codename_ref/substates/ModSwitchMenu.hx similarity index 100% rename from source/codename/substates/ModSwitchMenu.hx rename to source/codename_ref/substates/ModSwitchMenu.hx diff --git a/source/credits/.DS_Store b/source/credits/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..dda4cb83353435f9e5a3d5001f98cd910ebafb51 GIT binary patch literal 6148 zcmeHKyK2Nh43uIQhBPj(3G5dH?hls3DN^4Lggci8SJ%7BcjeEL(Ss0UrwODvMj*|u zR%7EStd)r9={6okdJ*a1hVpJpKg0Z=BNM_paN8Y3Q&PRDPX-9);$I?QUNMJ1-=!q|3iTr*2E>ye;o)u0svd2 z-LUq{Kd@K=SQD2(WMCRpU{Ezj49(d=gO2l>^-EyTMg7fqPQF=lLeU&Ow0OB_4P>MO zRA8+@6WiYU{|o$=`F~B~jtWqLyHY^g;XIu1N!eRBA7{O`z~A6j^8q)*+9?R$j)C5e hv9Wf1@S>; + private var iconArray:Array = []; + private var creditsStuff:Array> = []; + + var bg:FlxSprite; + var descText:FlxText; + var intendedColor:Int; + var colorTween:FlxTween; + var descBox:AttachedSprite; + + var offsetThing:Float = -75; + + var pisspoop:Array>; + + override function create() + { + #if desktop + // Updating Discord Rich Presence + DiscordClient.changePresence("In the Credits Menu", null); + #end + + persistentUpdate = true; + if (ClientPrefs.data.darkmode) + { + bg = new FlxSprite(0, 0).loadGraphic(Paths.image("aboutMenu", "preload")); + add(bg); + bg.screenCenter(); + } + else + { + bg = new FlxSprite().loadGraphic(Paths.image('menuDesat')); + add(bg); + bg.screenCenter(); + } + + var grid:FlxBackdrop = new FlxBackdrop(FlxGridOverlay.createGrid(80, 80, 160, 160, true, 0x33FFFFFF, 0x0)); + grid.velocity.set(20, 20); + grid.alpha = 0; + FlxTween.tween(grid, {alpha: 1}, 0.5, {ease: FlxEase.quadOut}); + add(grid); + + grpOptions = new FlxTypedGroup(); + add(grpOptions); + + #if MODS_ALLOWED + var path:String = 'modsList.txt'; + if (FileSystem.exists(path)) + { + var leMods:Array = CoolUtil.coolTextFile(path); + for (i in 0...leMods.length) + { + if (leMods.length > 1 && leMods[0].length > 0) + { + var modSplit:Array = leMods[i].split('|'); + if (!Paths.ignoreModFolders.contains(modSplit[0].toLowerCase()) && !modsAdded.contains(modSplit[0])) + { + if (modSplit[1] == '1') + pushModCreditsToList(modSplit[0]); + else + modsAdded.push(modSplit[0]); + } + } + } + } + + var arrayOfFolders:Array = Paths.getModDirectories(); + arrayOfFolders.push(''); + for (folder in arrayOfFolders) + { + pushModCreditsToList(folder); + } + #end + + if (!ClientPrefs.data.hideOriCredits) + { + pisspoop = [ + // Name - Icon name - Description - Link - BG Color + ['Universe Engine DEVs'], + [ + 'Video Bot', + 'videobot', + 'First DEV, In charge of the HX files', + 'https://linktr.ee/videobot', + '14FFFF' + ], + [ + 'BaranMuzu', + 'baranmuzu', + 'Second DEV, In charge of the LUA files and other', + 'https://linktr.ee/baranmuzu', + 'BE9877' + ], + [''], + ['Former UE DEV'], + [ + 'uwenalil', + 'uwenalil', + 'Former DEV, (No Longer) In charge of the LUA, HX files and other', + 'https://uwenalil.netlify.app/uwenalil/links', + '008BFF' + ], + [''], + ['UE Borrowed Code'], + ['Edwhak', 'Edwhak', 'Modchart Tool', 'https://www.youtube.com/@EDWHAK', '00FF00'], + [ + 'Rozebud', + 'rozebud', + "Chart Editor's Lil' Buddies", + 'https://x.com/helpme_thebigt', + '6D2F83' + ], + [ + ' SilverSpringing', + 'invis', + 'Combo Counter', + 'https://gamebanana.com/members/1823951', + '00FFFF' + ], + [ + ' Unholywanderer', + 'invis', + 'Smooth HP', + 'https://gamebanana.com/members/1908754', + '00FFFF' + ], + [ + ' Kiruwu', + 'invis', + 'Weekend 1 Port', + 'https://gamebanana.com/mods/512609', + 'B3715F' + ], + [ + ' Spelo', + 'invis', + 'Play Both Sides', + 'https://www.youtube.com/watch?v=xmUQUi8rd9M', + 'FFFFFF' + ], + [''], + ['UE Special Thanks'], + [ + 'Blitz', + 'Blitz', + 'Universe Logo And Playtester', + 'https://www.youtube.com/@fireballfurby', + '00FFFF' + ], + [ + 'An Ammar', + 'Ammar', + 'Hype Mode, Detached Health Bar, Playtester', + 'https://gamebanana.com/mods/381804', + '00FF00' + ], + [ + 'Dinus Game', + 'Dinus Game', + 'freakyMenu Universe Engine music. Also made the design of the Fancy Main Menu', + 'https://gamebanana.com/members/2053946', + '27FF27' + ], + [ + 'idiotxd', + 'idiotxd', + 'His own freakyMenu music and Universe Banner', + 'https://x.com/IdiottLool', + '5656FF' + ], + [ + 'JordanSantiago', + 'jor', + 'Most of the code of UE comes from JS', + 'https://gamebanana.com/tools/13575', + '32CD32' + ], + [''], + ["UE PR's"], + [ + 'CharGoldenYT', + 'char', + "Fixing Erect chaning difficulty and QOL", + 'https://bsky.app/profile/chargoldenyt.bsky.social', + 'FFA600' + ], + [ + 'MoxieCoder', + 'moxie', + "Lua Jit Fork superpowers04 PR", + 'https://x.com/moxie_specalist', + '00FFFF' + ], + [ + ' soushimiya', + 'invis', + "Crediting Rozebud", + 'https://github.com/soushimiya', + 'FFFFFF' + ], + [''], + ['Psych Engine Team'], + [ + 'Shadow Mario', + 'shadowmario', + 'Main Programmer of Psych Engine', + 'https://twitter.com/Shadow_Mario_', + '444444' + ], + [ + 'RiverOaken', + 'river', + 'Main Artist/Animator of Psych Engine', + 'https://twitter.com/RiverOaken', + 'B42F71' + ], + [ + 'shubs', + 'shubs', + 'Additional Programmer of Psych Engine', + 'https://twitter.com/yoshubs', + '5E99DF' + ], + [''], + ['Former Engine Members'], + [ + 'bb-panzu', + 'bb', + 'Ex-Programmer of Psych Engine', + 'https://twitter.com/bbsub3', + '3E813A' + ], + [""], + ['Engine Contributors'], + [ + 'iFlicky', + 'flicky', + 'Composer of Psync and Tea Time\nMade the Dialogue Sounds', + 'https://twitter.com/flicky_i', + '9E29CF' + ], + [ + 'SqirraRNG', + 'sqirra', + 'Crash Handler and Base code for\nChart Editor\'s Waveform', + 'https://twitter.com/gedehari', + 'E1843A' + ], + [ + 'EliteMasterEric', + 'mastereric', + 'Runtime Shaders support', + 'https://twitter.com/EliteMasterEric', + 'FFBD40' + ], + [ + 'PolybiusProxy', + 'proxy', + '.MP4 Video Loader Library (hxCodec)', + 'https://twitter.com/polybiusproxy', + 'DCD294' + ], + [ + 'KadeDev', + 'kade', + 'Fixed some cool stuff on Chart Editor\nand other PRs', + 'https://twitter.com/kade0912', + '64A250' + ], + [ + 'Keoiki', + 'keoiki', + 'Note Splash Animations', + 'https://twitter.com/Keoiki_', + 'D2D2D2' + ], + [ + "superpowers04", + "superpowers04", + "LUA JIT Fork", + "https://x.com/superpowers04", + "B957ED" + ], + [ + 'Smokey', + 'smokey', + 'Sprite Atlas Support', + 'https://twitter.com/Smokey_5_', + '483D92' + ], + [""], + ["Funkin' Crew"], + [ + "ninjamuffin99", + "ninjamuffin99", + "Programmer of Friday Night Funkin'", + "https://x.com/ninja_muffin99", + "CF2D2D" + ], + [ + "PhantomArcade", + "phantomarcade", + "Animator of Friday Night Funkin'", + "https://x.com/PhantomArcade3K", + "FADC45" + ], + [ + "evilsk8r", + "evilsk8r", + "Artist of Friday Night Funkin'", + "https://x.com/evilsk8r", + "5ABD4B" + ], + [ + "kawaisprite", + "kawaisprite", + "Composer of Friday Night Funkin'", + "https://x.com/kawaisprite", + "378FC7" + ], + ]; + } + else + { // prevents crash lol + pisspoop = [ + [ + '', + 'invis', + 'this is just here to prevent crash when theres no credits lol', + '', + '000000' + ] + ]; + } + + for (i in pisspoop) + { + creditsStuff.push(i); + } + + for (i in 0...creditsStuff.length) + { + var isSelectable:Bool = !unselectableCheck(i); + var optionText:Alphabet = new Alphabet(FlxG.width / 2, 300, creditsStuff[i][0], !isSelectable); + optionText.isMenuItem = true; + optionText.targetY = i; + optionText.changeX = false; + optionText.snapToPosition(); + grpOptions.add(optionText); + + if (isSelectable) + { + if (creditsStuff[i][5] != null) + { + Paths.currentModDirectory = creditsStuff[i][5]; + } + + var icon:AttachedSprite = new AttachedSprite('credits/' + creditsStuff[i][1]); + icon.xAdd = optionText.width + 10; + icon.sprTracker = optionText; + + // using a FlxGroup is too much fuss! + iconArray.push(icon); + add(icon); + Paths.currentModDirectory = ''; + + if (curSelected == -1) + curSelected = i; + } + else + optionText.alignment = CENTERED; + } + + descBox = new AttachedSprite(); + descBox.makeGraphic(1, 1, FlxColor.BLACK); + descBox.xAdd = -10; + descBox.yAdd = -10; + descBox.alphaMult = 0.6; + descBox.alpha = 0.6; + add(descBox); + + descText = new FlxText(50, FlxG.height + offsetThing - 25, 1180, "", 32); + descText.setFormat(Paths.font("funkin.ttf"), 32, FlxColor.WHITE, CENTER /*, FlxTextBorderStyle.OUTLINE, FlxColor.BLACK*/); + descText.scrollFactor.set(); + // descText.borderSize = 2.4; + descBox.sprTracker = descText; + add(descText); + + bg.color = getCurrentBGColor(); + intendedColor = bg.color; + changeSelection(); + super.create(); + } + + var quitting:Bool = false; + var holdTime:Float = 0; + + override function update(elapsed:Float) + { + if (FlxG.sound.music.volume < 0.7) + { + FlxG.sound.music.volume += 0.5 * FlxG.elapsed; + } + + if (!quitting) + { + if (creditsStuff.length > 1) + { + var shiftMult:Int = 1; + if (FlxG.keys.pressed.SHIFT) + shiftMult = 3; + + var upP = controls.UI_UP_P; + var downP = controls.UI_DOWN_P; + + if (upP) + { + changeSelection(-shiftMult); + holdTime = 0; + } + if (downP) + { + changeSelection(shiftMult); + holdTime = 0; + } + + if (controls.UI_DOWN || controls.UI_UP) + { + var checkLastHold:Int = Math.floor((holdTime - 0.5) * 10); + holdTime += elapsed; + var checkNewHold:Int = Math.floor((holdTime - 0.5) * 10); + + if (holdTime > 0.5 && checkNewHold - checkLastHold > 0) + { + changeSelection((checkNewHold - checkLastHold) * (controls.UI_UP ? -shiftMult : shiftMult)); + } + } + } + + if (controls.ACCEPT && (creditsStuff[curSelected][3] == null || creditsStuff[curSelected][3].length > 4)) + { + CoolUtil.browserLoad(creditsStuff[curSelected][3]); + } + if (controls.BACK) + { + if (colorTween != null) + { + colorTween.cancel(); + } + FlxG.sound.play(Paths.sound('cancelMenu')); + MusicBeatState.switchState(new MainMenuState()); + quitting = true; + } + } + + for (item in grpOptions.members) + { + if (!item.bold) + { + var lerpVal:Float = CoolUtil.boundTo(elapsed * 12, 0, 1); + if (item.targetY == 0) + { + var lastX:Float = item.x; + item.screenCenter(X); + item.x = FlxMath.lerp(lastX, item.x - 70, lerpVal); + } + else + { + item.x = FlxMath.lerp(item.x, 200 + -40 * Math.abs(item.targetY), lerpVal); + } + } + } + super.update(elapsed); + } + + var moveTween:FlxTween = null; + + function changeSelection(change:Int = 0) + { + FlxG.sound.play(Paths.sound('scrollMenu'), 0.4); + do + { + curSelected += change; + if (curSelected < 0) + curSelected = creditsStuff.length - 1; + if (curSelected >= creditsStuff.length) + curSelected = 0; + } + while (unselectableCheck(curSelected)); + + var newColor:Int = getCurrentBGColor(); + if (newColor != intendedColor) + { + if (colorTween != null) + { + colorTween.cancel(); + } + intendedColor = newColor; + colorTween = FlxTween.color(bg, 1, bg.color, intendedColor, { + onComplete: function(twn:FlxTween) + { + colorTween = null; + } + }); + } + + var bullShit:Int = 0; + + for (item in grpOptions.members) + { + item.targetY = bullShit - curSelected; + bullShit++; + + if (!unselectableCheck(bullShit - 1)) + { + item.alpha = 0.6; + if (item.targetY == 0) + { + item.alpha = 1; + } + } + } + + descText.text = creditsStuff[curSelected][2]; + descText.y = FlxG.height - descText.height + offsetThing - 60; + + if (moveTween != null) + moveTween.cancel(); + moveTween = FlxTween.tween(descText, {y: descText.y + 75}, 0.25, {ease: FlxEase.sineOut}); + + descBox.setGraphicSize(Std.int(descText.width + 20), Std.int(descText.height + 25)); + descBox.updateHitbox(); + } + + #if MODS_ALLOWED + private var modsAdded:Array = []; + + function pushModCreditsToList(folder:String) + { + if (modsAdded.contains(folder)) + return; + + var creditsFile:String = null; + if (folder != null && folder.trim().length > 0) + creditsFile = Paths.mods(folder + '/data/credits.txt'); + else + creditsFile = Paths.mods('data/credits.txt'); + + if (FileSystem.exists(creditsFile)) + { + var firstarray:Array = File.getContent(creditsFile).split('\n'); + for (i in firstarray) + { + var arr:Array = i.replace('\\n', '\n').split("::"); + if (arr.length >= 5) + arr.push(folder); + creditsStuff.push(arr); + } + creditsStuff.push(['']); + } + modsAdded.push(folder); + } + #end + + function getCurrentBGColor() + { + var bgColor:String = creditsStuff[curSelected][4]; + if (!bgColor.startsWith('0x')) + { + bgColor = '0xFF' + bgColor; + } + return Std.parseInt(bgColor); + } + + private function unselectableCheck(num:Int):Bool + { + return creditsStuff[num].length <= 1; + } +} \ No newline at end of file diff --git a/source/credits/CreditsState.hx b/source/credits/old/CreditsState.hx similarity index 100% rename from source/credits/CreditsState.hx rename to source/credits/old/CreditsState.hx diff --git a/source/credits/FNFCredits.hx b/source/credits/old/FNFCredits.hx similarity index 100% rename from source/credits/FNFCredits.hx rename to source/credits/old/FNFCredits.hx diff --git a/source/credits/PECredits.hx b/source/credits/old/PECredits.hx similarity index 100% rename from source/credits/PECredits.hx rename to source/credits/old/PECredits.hx diff --git a/source/credits/UECredits.hx b/source/credits/old/UECredits.hx similarity index 100% rename from source/credits/UECredits.hx rename to source/credits/old/UECredits.hx diff --git a/source/credits/import.hx b/source/credits/old/import.hx similarity index 100% rename from source/credits/import.hx rename to source/credits/old/import.hx diff --git a/source/import.hx b/source/import.hx index eb1af41..b22be67 100644 --- a/source/import.hx +++ b/source/import.hx @@ -1,7 +1,5 @@ #if !macro // Fix for haxe 4.3+ import Paths; - -import codename.backend.assets.AssetsLibraryList; -import codename.backend.Script; -import codename.backend.system.Logs; +import charengine.sys.logger.Logs; +using StringTools; #end \ No newline at end of file From 3baefd339c772723ee8f93b86cd347560d335f4b Mon Sep 17 00:00:00 2001 From: Char <73309364+CharGoldenYT@users.noreply.github.com> Date: Sun, 7 Sep 2025 07:55:47 -0400 Subject: [PATCH 02/13] haha the credits state is so out of date --- .DS_Store | Bin 8196 -> 10244 bytes assets/.DS_Store | Bin 0 -> 6148 bytes assets/preload/.DS_Store | Bin 0 -> 8196 bytes assets/preload/images/.DS_Store | Bin 0 -> 14340 bytes source/credits/PECreditsState.hx | 18 +++++++++--------- 5 files changed, 9 insertions(+), 9 deletions(-) create mode 100644 assets/.DS_Store create mode 100644 assets/preload/.DS_Store create mode 100644 assets/preload/images/.DS_Store diff --git a/.DS_Store b/.DS_Store index 261e13f46274ff76d320202193726941951c14e1..9ea45923225a90e6251fae868b7c3734b301543f 100644 GIT binary patch delta 168 zcmZp1XbF&DU|?W$DortDU{C-uIe-{M3-C-V6q~50$SAilU^hRb+-4pDX~xOF1$ZZ) z6Fe@-#*oNR41}o+B@D%7!9{sF`FZI;U5uMm1m81qvjHV47z!Bj8Hy&02`FzC75>Ds zvEd1uATv-65GZg130IIM8wA#p?N=%2QG{f8p_+tu-Y;o()>>$skL89jV8cdToo44EFL~XC$*mqpVJ#gRn zXEOKaRj%Tm<>A93iaM>OQFXAX4wQf9?>3kfg(M&nSVFb$SmvI`(d?*)bm?>Xh z54cUYIcgm)m)+yuk=N^YR!83QxYI_v+h47k?#$YFhrLhPRfCuC z35}8l7yc|wWO|Ab_HrnLJ`<(VmY#zBHq0K)H?Bf|6 z7+h<_2ux^Kpmr7JiXpT+`aQ!N7+h=A?j+3RLztC?xuFQPI_CEjoy0(+t*ru9fuaI? z`mx35|C8U}|BFuc$tqwK*eL}>{lq^RA|!LRZUx6@t%vd!g^hV@jmia;IgV9>kK#iV bWf=3g0UQ`yYeWys{s<@;Y-JVrrwaT8d!Fp1 literal 0 HcmV?d00001 diff --git a/assets/preload/.DS_Store b/assets/preload/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..3b47b2d98576916608204a8d7ba1cda2ff18a6e1 GIT binary patch literal 8196 zcmeHM&rcIU6n+mWY(;cYKs1^(_F|$@1Y$yru~v6K=+&$LfJd($y!a1z@MPji-^^^G-Kqx;M&nE~^S#b|Z+7Nu-)`R&0I*p1&H#)7 zfJIfJJwVM*iX4}F!`>bC~0`=u4pD8)`(kBUxsSH4>iBB-=%r*hk8 zjj}y_N$}Y5ISZA8?=hm>yW?|DG>W3my-4|%^njJMvSoX0V`Fl9>SS)}?8N5D+{X08 zIN6hDH#f7^NdEM>`SNP8#>F#QKNU=FUNETNZ?$rN9sBp)^<+=@zO|=Mw%yuQcK5)Z z!M*$Jq5TJjhKEK*Mh}jS96EgXNZCG6aop8vC|7$)1R^X3b++icf|vZKY%yk!V`-G_ z{VCo&^B!z>Ej+0aXL!3q&2=?ojNh$>zBjwP9I<$@&0Z?o`yw|KK`U7Hg6zXQPeGg-p(* zu3f4*uFtFa3tzO9`NCYwIIayF^4b8%7j9|O8g6wZhzneBmd)l1HBP$?lQ!wX-wCmSI>;hn5QLS8aja zr7QV3+n88z8*$>+}B|%xqkY0!D#TUsRL; literal 0 HcmV?d00001 diff --git a/assets/preload/images/.DS_Store b/assets/preload/images/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..33116eff3b31ffbf26585b16e15b3c74bb02a23a GIT binary patch literal 14340 zcmeHOU2hvj6uq0+%{p!zmoFh9kOi+LxJeosA)(YHLVc)^NT3gVn035OjGbL$@7AfJ zpu8c0#82QSz$?FkM}7wHya4CkU7MNpOo*t2A~9?2&Srhi+?g{Ud+)7FL|!ZH-XUrd zk&lzh`b}KEA!=}`9Q-|>bH^f{csL*8#C@IUm;&ljN+;BrL(e~0z$50DaNZQI%3q@) zMRfFF5Fd61G1mtJbf0M9^FQSfRzQbf_9&z$I8Sg!l+d`q`U%*z8H=q2c;XJHfK$LJ z;1qBQ{2vwIcP|dVnw9SA6mSYS1!fBH{?Ne5v5w~rfs?nBmG0^k za0<*Ta2tl3{l#LB2h zAIKQU*xUwDM8(%;_?F~PhOiS^xU9`pxTna64D@!2UMklICJlu#dj6`R`U!^iu_QvvkPk;bT`{?S&6CXA+whJZo*j-!bDwUlZQ4OR%b?*A!K!?b$Hb&ng=6 zn`S)ER3rYb1&`Tj#BW*f(8q{>+l*&@jQD$Iyy)}2L7#04p7l}jRm={~*^V%;0^1u$ zR8mGW8q=wu@wly!hsV%I)LV~{W zThzFxigJG_%9Vw|_D=Lx$(+)Wyn+)b7V1dRNk!Ix%8|4Oy|O*WuG3YxmiI|X=^pBpj?CxkF?RgD5%y^lREm~#Mp%*ym4ZTgptcymLo;Wm%s>Nkw-d_ksDwf zI=JJ#=vZ1|ds|_KYIT*Rt`KwW?!4L>a^A0UPn-fy0jGddz$tK@6=J@#tm>=k(?uLQob#^WC9Jd4-Qe&7|D2Ak}~ zXw20)n;)PJm-sRCgW|{7*#_I}Cu-~!sLEb7$L71@`B;1&QCPKG0dokyHH%j{UMqT< ztgXs;1=s+LA+DSoi4ZB~elPAmq6fGJ@Nn4|#4j_mnf^PZ)~stYT`wJ&S*R9f7F!sZo& z(YZ3;&}tqBji0qTvwx`vud$ZUUiQGVUKaBW@Y%hu6*u!{XWQ#d+;421pI7`B-+1et z58M60NfdvJHGsqOvJyL}e()M8^yq2O?-I=7apee+*T!`3ZOfc6j;qWjRWo0- zYfbqk~M7<+D}Mu;5gGzwp%FVTki3^r@7TCHDFgW(r( zvSP2wH>`LW8I@0D%N-clY~98G`r>zgIR%^oP64NYQ{Y-FP|jM{tfJh5OKSQ3|F!Oe zYn)TSDe!Cxc%|L_-4^PYhO@=$__uZqoL}Ia9>5A57wt!Y_=A6ncW;X05}2L5yvRzS X;<->!{zpFobn(B7|6Tkq|D*0Ne#heX literal 0 HcmV?d00001 diff --git a/source/credits/PECreditsState.hx b/source/credits/PECreditsState.hx index 474c5fa..05135eb 100644 --- a/source/credits/PECreditsState.hx +++ b/source/credits/PECreditsState.hx @@ -121,11 +121,18 @@ class PECreditsState extends MusicBeatState 'https://linktr.ee/baranmuzu', 'BE9877' ], + [ + 'CharGoldenYT', + 'char', + "I guess I'll join the team - Me\nThird DEV In charge of HX Files, and the POLYMOD MOD LOADER!", + 'https://bsky.app/profile/chargoldenyt.bsky.social', + 'FFA600' + ], [''], ['Former UE DEV'], [ - 'uwenalil', - 'uwenalil', + 'Daveberry', + 'dave', 'Former DEV, (No Longer) In charge of the LUA, HX files and other', 'https://uwenalil.netlify.app/uwenalil/links', '008BFF' @@ -207,13 +214,6 @@ class PECreditsState extends MusicBeatState ], [''], ["UE PR's"], - [ - 'CharGoldenYT', - 'char', - "Fixing Erect chaning difficulty and QOL", - 'https://bsky.app/profile/chargoldenyt.bsky.social', - 'FFA600' - ], [ 'MoxieCoder', 'moxie', From 1ec77086c979350f61bac376a8a0d3497b2268e1 Mon Sep 17 00:00:00 2001 From: VideoBot Date: Sun, 7 Sep 2025 14:08:19 +0200 Subject: [PATCH 03/13] updated credits... --- source/credits/PECreditsState.hx | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/source/credits/PECreditsState.hx b/source/credits/PECreditsState.hx index 05135eb..9718105 100644 --- a/source/credits/PECreditsState.hx +++ b/source/credits/PECreditsState.hx @@ -114,13 +114,6 @@ class PECreditsState extends MusicBeatState 'https://linktr.ee/videobot', '14FFFF' ], - [ - 'BaranMuzu', - 'baranmuzu', - 'Second DEV, In charge of the LUA files and other', - 'https://linktr.ee/baranmuzu', - 'BE9877' - ], [ 'CharGoldenYT', 'char', @@ -129,14 +122,21 @@ class PECreditsState extends MusicBeatState 'FFA600' ], [''], - ['Former UE DEV'], + ['Former UE DEVs'], [ 'Daveberry', 'dave', 'Former DEV, (No Longer) In charge of the LUA, HX files and other', - 'https://uwenalil.netlify.app/uwenalil/links', + 'https://daveberry.netlify.app/', '008BFF' ], + [ + 'BaranMuzu', + 'baranmuzu', + 'Former DEV, (No Longer) In charge of the LUA files and other', + 'https://linktr.ee/baranmuzu', + 'BE9877' + ], [''], ['UE Borrowed Code'], ['Edwhak', 'Edwhak', 'Modchart Tool', 'https://www.youtube.com/@EDWHAK', '00FF00'], From a70643a75aca47ebb3bd622dbf11a205fea0166e Mon Sep 17 00:00:00 2001 From: Char <73309364+CharGoldenYT@users.noreply.github.com> Date: Sun, 7 Sep 2025 08:22:54 -0400 Subject: [PATCH 04/13] that's a currently invalid handle! good job me! --- source/credits/PECreditsState.hx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/credits/PECreditsState.hx b/source/credits/PECreditsState.hx index 9718105..1b0c276 100644 --- a/source/credits/PECreditsState.hx +++ b/source/credits/PECreditsState.hx @@ -118,7 +118,7 @@ class PECreditsState extends MusicBeatState 'CharGoldenYT', 'char', "I guess I'll join the team - Me\nThird DEV In charge of HX Files, and the POLYMOD MOD LOADER!", - 'https://bsky.app/profile/chargoldenyt.bsky.social', + 'https://bsky.app/profile/vschar-official.com', 'FFA600' ], [''], From 146ad9175492ae5bd9626aeaa806d39e3183b3ae Mon Sep 17 00:00:00 2001 From: Char <73309364+CharGoldenYT@users.noreply.github.com> Date: Mon, 8 Sep 2025 18:32:37 -0400 Subject: [PATCH 05/13] Did you know, a lot of defines are now useless and some other stuff was done too --- Project.xml | 7 +------ compile/Test_Build_Mac.sh | 2 ++ source/HealthIcon.hx | 12 +++++++++--- source/PlayState.hx | 4 ++++ 4 files changed, 16 insertions(+), 9 deletions(-) create mode 100644 compile/Test_Build_Mac.sh diff --git a/Project.xml b/Project.xml index fabeef1..c7d8c76 100644 --- a/Project.xml +++ b/Project.xml @@ -50,15 +50,12 @@ - - - @@ -66,8 +63,6 @@ - -
@@ -153,7 +148,7 @@ --> - + diff --git a/compile/Test_Build_Mac.sh b/compile/Test_Build_Mac.sh new file mode 100644 index 0000000..fca271d --- /dev/null +++ b/compile/Test_Build_Mac.sh @@ -0,0 +1,2 @@ +lime test mac -DTEST_BUILD +read -n1 -r -p "Press any key to continue..." key diff --git a/source/HealthIcon.hx b/source/HealthIcon.hx index 1112357..b6d9fbc 100644 --- a/source/HealthIcon.hx +++ b/source/HealthIcon.hx @@ -44,13 +44,19 @@ class HealthIcon extends FlxSprite imageFile = name; var file:Dynamic = Paths.image(name); + var imageRatio:Int = Math.round(width / height); // The ratio for the image, used to divide the image. loadGraphic(file); //Load stupidly first for getting the file size + var framesArray:Array = [0, 1]; // The amount of animation frames + var w2 = width; loadGraphic(file, true, Math.floor(width / 2), Math.floor(height)); //Then load it fr - iconOffsets[0] = (width - 150) / 2; - iconOffsets[1] = (width - 150) / 2; + for (i in 0...imageRatio) + { + iconOffsets[i] = (width - 150) / imageRatio; + framesArray[i] = i; + } updateHitbox(); - animation.add(char, [0, 1], 0, false, isPlayer); + animation.add(char, framesArray, 0, false, isPlayer); animation.play(char); this.char = char; diff --git a/source/PlayState.hx b/source/PlayState.hx index 7b550e5..05e3323 100644 --- a/source/PlayState.hx +++ b/source/PlayState.hx @@ -3525,6 +3525,8 @@ class PlayState extends MusicBeatState { if (healthBar.percent < 20) iconP1.animation.curAnim.curFrame = 1; + if (iconP2.animation.curAnim.numFrames == 3) + iconP2.animation.curAnim.curFrame = 2; else iconP1.animation.curAnim.curFrame = 0; } @@ -3552,6 +3554,8 @@ class PlayState extends MusicBeatState { if (healthBar.percent > 80) iconP2.animation.curAnim.curFrame = 1; + if (iconP1.animation.curAnim.numFrames == 3) + iconP1.animation.curAnim.curFrame = 2; else iconP2.animation.curAnim.curFrame = 0; } From 77e280478ec45d34345934fbf7e43332a0d377c3 Mon Sep 17 00:00:00 2001 From: Char <73309364+CharGoldenYT@users.noreply.github.com> Date: Tue, 9 Sep 2025 13:19:21 -0400 Subject: [PATCH 06/13] Move logging classes to source/sys/ --- source/Main.hx | 2 +- source/{charengine => }/sys/logger/AnsiColors.hx | 2 +- source/{charengine => }/sys/logger/Level.hx | 2 +- source/{charengine => }/sys/logger/LogTools.hx | 6 +++--- source/{charengine => }/sys/logger/Logs.hx | 8 ++++---- 5 files changed, 10 insertions(+), 10 deletions(-) rename source/{charengine => }/sys/logger/AnsiColors.hx (99%) rename source/{charengine => }/sys/logger/Level.hx (79%) rename source/{charengine => }/sys/logger/LogTools.hx (81%) rename source/{charengine => }/sys/logger/Logs.hx (86%) diff --git a/source/Main.hx b/source/Main.hx index 5fd2d00..6e2a2a3 100644 --- a/source/Main.hx +++ b/source/Main.hx @@ -10,7 +10,7 @@ import openfl.display.FPS; import openfl.display.Sprite; import openfl.events.Event; import openfl.display.StageScaleMode; -import charengine.sys.logger.Logs; +import sys.logger.Logs; //crash handler stuff #if CRASH_HANDLER diff --git a/source/charengine/sys/logger/AnsiColors.hx b/source/sys/logger/AnsiColors.hx similarity index 99% rename from source/charengine/sys/logger/AnsiColors.hx rename to source/sys/logger/AnsiColors.hx index 7c37dce..2079c87 100644 --- a/source/charengine/sys/logger/AnsiColors.hx +++ b/source/sys/logger/AnsiColors.hx @@ -1,4 +1,4 @@ -package charengine.sys.logger; +package sys.logger; // Thank you @notbilly in the Haxe Discord for the color codes! enum abstract AnsiColors(String) to String { diff --git a/source/charengine/sys/logger/Level.hx b/source/sys/logger/Level.hx similarity index 79% rename from source/charengine/sys/logger/Level.hx rename to source/sys/logger/Level.hx index 9aeb3d1..fcebf8c 100644 --- a/source/charengine/sys/logger/Level.hx +++ b/source/sys/logger/Level.hx @@ -1,4 +1,4 @@ -package charengine.sys.logger; +package sys.logger; enum abstract Level(Int) { diff --git a/source/charengine/sys/logger/LogTools.hx b/source/sys/logger/LogTools.hx similarity index 81% rename from source/charengine/sys/logger/LogTools.hx rename to source/sys/logger/LogTools.hx index 8bd0324..3bc776e 100644 --- a/source/charengine/sys/logger/LogTools.hx +++ b/source/sys/logger/LogTools.hx @@ -1,7 +1,7 @@ -package charengine.sys.logger; +package sys.logger; -import charengine.sys.logger.AnsiColors; -import charengine.sys.logger.Level; +import sys.logger.AnsiColors; +import sys.logger.Level; class LogTools { diff --git a/source/charengine/sys/logger/Logs.hx b/source/sys/logger/Logs.hx similarity index 86% rename from source/charengine/sys/logger/Logs.hx rename to source/sys/logger/Logs.hx index c036940..7ccbd06 100644 --- a/source/charengine/sys/logger/Logs.hx +++ b/source/sys/logger/Logs.hx @@ -1,11 +1,11 @@ -package charengine.sys.logger; // This is MY log script, so it's under charengine :3c - CharGoldenYT +package sys.logger; // This is MY log script, so it's under charengine :3c - CharGoldenYT import haxe.Log; import haxe.PosInfos; import lime.app.Application; -import charengine.sys.logger.AnsiColors; -using charengine.sys.logger.LogTools; -import charengine.sys.logger.Level; +import sys.logger.AnsiColors; +using sys.logger.LogTools; +import sys.logger.Level; class Logs { From 12ccc1e882eeaaeda52941d6216820314f23003f Mon Sep 17 00:00:00 2001 From: Char <73309364+CharGoldenYT@users.noreply.github.com> Date: Wed, 10 Sep 2025 02:33:07 -0400 Subject: [PATCH 07/13] uh shit uh import wasnt updated --- source/import.hx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/import.hx b/source/import.hx index b22be67..ee7d9de 100644 --- a/source/import.hx +++ b/source/import.hx @@ -1,5 +1,5 @@ #if !macro // Fix for haxe 4.3+ import Paths; -import charengine.sys.logger.Logs; +import sys.logger.Logs; using StringTools; #end \ No newline at end of file From e9afbe30de557bf3fc5be7bcc6f115c9c857e97e Mon Sep 17 00:00:00 2001 From: Char <73309364+CharGoldenYT@users.noreply.github.com> Date: Wed, 10 Sep 2025 02:34:02 -0400 Subject: [PATCH 08/13] idk if this works lmao, but i don't wanna lose progress so --- source/ClientPrefs.hx | 1 + source/Main.hx | 3 + source/modding/ModFolder.hx | 13 +++ source/modding/PolymodHandler.hx | 158 +++++++++++++++++++++++++++++++ source/modding/ScriptContext.hx | 27 ++++++ source/sys/LuaIterator.hx | 51 ++++++++++ 6 files changed, 253 insertions(+) create mode 100644 source/modding/ModFolder.hx create mode 100644 source/modding/PolymodHandler.hx create mode 100644 source/modding/ScriptContext.hx create mode 100644 source/sys/LuaIterator.hx diff --git a/source/ClientPrefs.hx b/source/ClientPrefs.hx index 44c923f..5f913eb 100644 --- a/source/ClientPrefs.hx +++ b/source/ClientPrefs.hx @@ -41,6 +41,7 @@ class SaveVariables public var splashAlpha:Float = 0.6; // UE + public var enabledMods:Array> = []; // Format: [modID, modName] public var universeEngineCPREF:Bool = true; // this is to check if you running universe engine! public var keystrokes:Bool = true; public var keyA:Float = 0.3; diff --git a/source/Main.hx b/source/Main.hx index 6e2a2a3..e172fca 100644 --- a/source/Main.hx +++ b/source/Main.hx @@ -37,6 +37,7 @@ class Main extends Sprite skipSplash: true, startFullscreen: false, }; + var gameArgs:Array = []; // Used for allowing mods to define custom commandline arguments. public static var fpsVar:FPS; public static var noTerminalColor:Bool = false; @@ -77,6 +78,8 @@ class Main extends Sprite private function setupGame():Void { + gameArgs = Sys.args(); + trace(gameArgs); var stageWidth:Int = Lib.current.stage.stageWidth; var stageHeight:Int = Lib.current.stage.stageHeight; diff --git a/source/modding/ModFolder.hx b/source/modding/ModFolder.hx new file mode 100644 index 0000000..ae3ca3f --- /dev/null +++ b/source/modding/ModFolder.hx @@ -0,0 +1,13 @@ +package modding; + +class ModFolder +{ + public var id:String; // The assosciated mod id polymod uses for this mod folder + public var name:String; // To make sure there are no folder conflicts.. somehow. + public var enabled:Bool = true; // Whether this mod is enabled + + public function new(id:String, name:String, enabled:Bool) + { + this.id = id; this.name = name; this.enabled = enabled; + } +} \ No newline at end of file diff --git a/source/modding/PolymodHandler.hx b/source/modding/PolymodHandler.hx new file mode 100644 index 0000000..bc6c35d --- /dev/null +++ b/source/modding/PolymodHandler.hx @@ -0,0 +1,158 @@ +package modding; + +#if MODS_ALLOWED +import polymod.Polymod; +import polymod.util.DefineUtil.getDefineString; +import polymod.util.DefineUtil.getDefineBool; + +import modding.ModFolder; +import modding.ScriptContext; +import modding.ScriptContext.ModScriptContexts; + +import sys.FileSystem as Fs; +import sys.io.File; // Just in case, may get removed later if unused. + +class PolymodHandler { + var modRoot:String = #if TEST_BUILD "../../../new_example_mods" #else "mods/" #end; + var apiVersion:String = "1.0.0"; // This should match the current engine version. + + var curMods_folder:Array = []; + var raw_curMods:Array = []; + var scriptContexts:Array = []; + + public static function initMods() + { + raw_curMods = Polymod.init({ + modRoot: modRoot, + apiVersionRule: '>=$apiVersion' + }); + + trace("Let's have a mod load.. /ref"); + + for (mod in raw_curMods) + { + for (modMeta in ClientPrefs.data.enabledMods) + { + if (mod.id != modMeta[0]) + { + if (mod.title != modMeta[1]) + { + fireModDisable(mod.id); + } + fireModDisable(mod.id); + } + else + { + Logs.traceNew("Loaded mod: `" + mod.title + '`[${mod.id}]', INFO); + curMods_folder.push(new ModFolder(mod.id, mod.modPath, mod.title)); + + scriptContexts.push(initScriptContexts(mod.modPath, mod.id)); + } + } + } + } + + static function initScriptContexts(path:String, id:String):ModScriptContexts + { + var scriptContexts:Array = []; + var p = path + '/game'; + if (Fs.exists(p)) + { + var f = Fs.readDirectory(p); + var sbd:Array = []; + for (file in f) + { + if (Fs.isDirectory(p + '/$file')) + { + sbd.push(file); + } + else + { + scriptContexts.push(new ScriptContext(p, file)); + } + } + } + + return new ModScriptContexts(id, scriptContexts); + } + + static function getScriptContexts(mod_id:String):ModScriptContexts + { + for (contexts in scriptContexts) + { + if (contexts.mod_id == mod_id) + return contexts; + } + + trace("Couldn't find that mod id!"); + return null; + } + + /* + * This is here so that mod scripts can find the folder they're currently in + */ + public static function getScriptContext(sFileName:String, id:String):ScriptContext + { + var contexts = getScriptContexts(id); + + for (script in contexts.contexts) + { + if (script.script == sFileName) + return script; + } + + trace("Not a validly loaded script!"); + return null; + } + + public static function get_modByID(id:String):ModMetadata + { + for (mod in raw_curMods) + { + if (mod.id == id) + { + return mod; + } + } + + trace("Couldn't find a mod with that ID!"); + return null; + } + + public static function get_enabledModByID(id:String):ModFolder + { + for (mod in curMods_folder) + { + if (mod.id == id) + return mod; + } + + trace("Couldn't find a mod with that ID!"); + return null; + } + + /* + * ONLY USE THIS FUNCTION AFTER INIT HAS FINISHED. + */ + public static function disableMod(id:String):Bool return fireModDisable(id, false); + + static function fireModDisable(id:String, isInitPhase:Bool = true):Bool + { + if (!isInitPhase) trace('Disabling mod `${get_modByID(id).title}[$id]'); + + Polymod.unloadMod(id); + scriptContexts.remove(getScriptContexts(id)); + return curMods_folder.remove(get_enabledModByID(id)); + } + + public static function enableMod(id:String):Bool + { + var tempMods:Array = Polymod.loadMod(id); + var mod:ModMetadata = get_modByID(id); + curMods_folder.push(new ModFolder(id, mod.modFolder, mod.title)); + scriptContexts.push(initScriptContexts(mod.modPath, mod.id)); + + trace("Enabled mod: `" + mod.title + '`[$id]'); + } +} +#end \ No newline at end of file diff --git a/source/modding/ScriptContext.hx b/source/modding/ScriptContext.hx new file mode 100644 index 0000000..d830342 --- /dev/null +++ b/source/modding/ScriptContext.hx @@ -0,0 +1,27 @@ +package modding; + +class ScriptContext +{ + public var folder:String; + public var script:String; + + /* + * f - Folder + * s - Script + */ + public function new(f:String, s:String) + { + folder = f; script = s; + } +} + +class ModScriptContexts +{ + public var mod_id:String; + public var contexts:Array; + + public function new(id:String, cs:Array) + { + mod_id = id; contexts = cs; + } +} \ No newline at end of file diff --git a/source/sys/LuaIterator.hx b/source/sys/LuaIterator.hx new file mode 100644 index 0000000..c227c29 --- /dev/null +++ b/source/sys/LuaIterator.hx @@ -0,0 +1,51 @@ +package sys; + +/* +* This class recreates the functionality of a lua iterator +*/ +class LuaIterator +{ + var min:Float; + var max:Float; + var step:Float; + + /** + Iterates from `min` (inclusive) to `max` (exclusive) by `step`. + + If `max <= min`, the iterator will not act as a countdown. + If `step` is a whole number, but `min` and/or `max` aren't, `min` and/or `max` will be `Math.floor()`'d + **/ + public inline function new(min:Float, max:Float, step:Float = 1) + { + this.min = min; + this.max = max; + this.step = step; + + if (Std.int(step) == step) + { + min = Math.floor(min); + max = Math.floor(max); + } + } + + /** + Returns true if the iterator has other items, false otherwise. + **/ + public inline function hasNext():Bool + { + var nextCalc:Float = min + step; + + return nextCalc < max; + } + + /** + Moves to the next item of the iterator. + + If this is called while hasNext() is false, the result is unspecified. + **/ + public inline function next():Float + { + var nextCalc:Float = min + step; + return (min = nextCalc); + } +} \ No newline at end of file From f226288a293769b36567cedbe91a8ead5881f65a Mon Sep 17 00:00:00 2001 From: Char <73309364+CharGoldenYT@users.noreply.github.com> Date: Wed, 10 Sep 2025 04:36:25 -0400 Subject: [PATCH 09/13] Alright it's 4 am bruh, and this works enough so far --- Project.xml | 6 - new_example_mods/.DS_Store | Bin 0 -> 6148 bytes new_example_mods/test_folder/.DS_Store | Bin 0 -> 6148 bytes .../test_folder/_polymod_icon.png | Bin 0 -> 4376 bytes .../test_folder/_polymod_meta.json | 6 + .../assets/images/AnnaBelleAnnoyed.png | Bin 0 -> 171139 bytes new_example_mods/test_folder/yuh.json | 3 - source/Main.hx | 7 ++ source/modding/PolymodHandler.hx | 111 +++++++++++++++--- 9 files changed, 105 insertions(+), 28 deletions(-) create mode 100644 new_example_mods/.DS_Store create mode 100644 new_example_mods/test_folder/.DS_Store create mode 100644 new_example_mods/test_folder/_polymod_icon.png create mode 100644 new_example_mods/test_folder/_polymod_meta.json create mode 100644 new_example_mods/test_folder/assets/images/AnnaBelleAnnoyed.png delete mode 100644 new_example_mods/test_folder/yuh.json diff --git a/Project.xml b/Project.xml index c7d8c76..1a17883 100644 --- a/Project.xml +++ b/Project.xml @@ -61,7 +61,6 @@ - @@ -143,11 +142,6 @@ - - diff --git a/new_example_mods/.DS_Store b/new_example_mods/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..0f14f0abc949311c7a60a1b516b68e6b4a06b208 GIT binary patch literal 6148 zcmeHK%}T>S5Z-O8O(;SRiXIod7Hlb1#7l_v1&ruHr8XpLFlI}V+CwSisxRc5_&m<+ zZp2c1@FG%XVCLJMoyjuahW%lTac>fK8FLt87ARuP2J?g9IO>wrj0cgcZw%QzlPqB& ziZSCwIoSYAzlIK*uYDPKyd`h+qR`3Rm6~(>yS(?c7 z0V1mGDvOX9AO?tmwP(O=d{%4iE2RR70b<~{4B-ACKoMPorAD=NfWhk{jyDidpp9<{ zL}Ac1SZah35Ux`Jbt*Sc46f6`FHD?ku+*s28CNsIcg)P(yimBB9sELtGwy06OAHVL ziwx9t*TM7uZ1wwpF^PJ_05Pyu4DiOlA9zrbIa`;C!?RX^-hrZET&eLZ1sduohFCm` c_du0^Utj~!HCSo{4+vcZ6b)pEfj?#76RcEDX#fBK literal 0 HcmV?d00001 diff --git a/new_example_mods/test_folder/.DS_Store b/new_example_mods/test_folder/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a1a6c85f91bb5b1a377329b69afcdf6b47348283 GIT binary patch literal 6148 zcmeHK&5qMB5FYQA-IUcz1%cp#6p3rKY_%#s;u1ps+23d z2SS`UaNrSm16~Kdv0Z7?F3SnTB2P5_CicwO{vz8k5sBV3>JYVv$bm98E}}R^xSe%P zHcU+uC{&JPN=Z^g1B%zYZG~mPGVrf4z-#vs)@zP+o6yPiJ48)JduYjM{5X-rFp(j= zd8>E;-TR>g7SZKXGNd%3k^*FSLj~tr$?_pFnPgmPo+%4r5%LN;?Zo-y7EwFWe{hhi3*6L z5nNtAkF!Y5dUBdYg^KlcgVS`HgVweA{NPU8?R2_}wmZLfyW4iV2i?V@>0G^e>;99$ z+a%58JLU*`BsNJUy9Sr=9!72Y$++VWWtuM?R@+nA@0%$*A3pAW`f~Rhf09~`R7St` z$q&!&=g6OAiOj~xy&U_AAzAZ$GhjZcvvaa zuz_kNu=xjpV_but!Ac`qAVP-%b*L~`457nO?;1bPV5L!qlQ5SLVR{zkh9Xq&$nPq5 z5}rm|S_Uiwbp|%|Ym3kSN58)R*MsbvWxz7HaR|PUFd5l3;R_X lRR{`m94mv5;_FZ)Xmi;BdIl?vsDaoY0Y!r?ECYX)fuCn1mmvTE literal 0 HcmV?d00001 diff --git a/new_example_mods/test_folder/_polymod_icon.png b/new_example_mods/test_folder/_polymod_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..825cc0e86c72902a6f83dfa8e4aa8921c286bace GIT binary patch literal 4376 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

cI zcq3GiL46<6W9UC6zXAmop6SY7p$mTsEG&;Dg7qhEU+&x;dh!$x=A;fJt3KCAzrh{l z>fpZFB3AYT7+{w^I<*IL4bTnbr?UXa> zA{|N*Minb@0MiQ(VuX0E=Wmu{XVlz{Sp~FbbFUhO;>j|J~;*A`6kjpiz05 z%2H$k`iD?JrKoxgt_m2>_2>JK;rstS{Dzu(mreBPB(}%dG}2u{DftQRYb=Dg(Wgg0 z^+>pXor@6qj8_434m#iY-ak5Dc5M#KTjIU$DiU809hz8Dk`WPCx< ztasTTKL~4iFQhj@Bv*GC_j%O-2bxjr+{+uM@>pizk4}uWZeRb?`ga37?)%^O3uZ`R z99cJ1x?3qxmSHo4XfwBkn%h@M=We4Wz1;`J_}ylzO*su1JO&eBN9Oy8-;cPjIWf3z zq4^a`uqF)=NWiPP`<`J3V|_ME$iJwI+ z&)_5O`)^BSpu)rU0(tPtrv|Ifg;W$}xH$`Z(fMhsU*fgsP?5Z~*qy|n!HamPLE(B4 zjOYAZW(n$1SST-WJ8x0)H!!iTEKqtORI2v%UPdYU zEU2P6#az`Yovbk!mKjMHM01UzCgMb{5?}+3O2H)p6pJgOx0dAk4xJ}eS)|GJv-1g5 z{CNmE44H`hK6$k)h_#*GtY&wHRbVR*FhXk`g19b4RSfvyc%PLye2@eod+h^>4&30| zL=h?xIm`6zHw3@XdJpoVj>O`{(tlAC=>JStqVbWFI}J;L`U384Fl12B9QZ%CDa(84 z@*|i7(&p{-b8G-sEN7Q}LlrX>&|SeF#e!!ib{t~!(SrNY9*Wl}`u^8cGQwlL%Im~{ zS?|GI*mC+upF#zkrr@MBSfua1@u~8*D*7wt?@EglmC9>iKm3m$SX#BraZ*&jpv z=T#k;8Vpnv=B%(#v25Q1rSkpIr^Gt!FE@IYd$DxhiG7k`7j6vS_y9fOX1+jH(LTQm-{Q3C_8JrEdS2Q#Tg+^{jVr)m#?uR7Fe`}&hJ>&1+nu8WH zkON0a;?Ic0gGKmrWDCjv_zHBO81vGaAwYif=ZBGKX7l{z*3LfUyTC6SVz2bIS{lKp zxs$y-QN&6AnD-Zgn!Tjba8LM&Mv4~ER7L=B^+~`arP4ADLjB;+RpHICy&8(k z55Xtl)Kny=9cZ;0gNt^+0ulK{3{3)%OCVRFf~U%)F+#F4z+a?h7I@eP>l&j3=4&V( zP2>J||EsX(HP0D8`+E=2Sde1=X)KU>Xf)<;J@nsDZD5H@ZND}7JDmUEA`F0x6NIy~ zcpW=`Z;vz&5 = []; - var raw_curMods:Array = []; - var scriptContexts:Array = []; + static var modRoot:String = #if TEST_BUILD "../../../new_example_mods" #else "mods" #end; + static var apiVersion:String = "1.0.0"; // This should match the current engine version. + + static var curMods_folder:Array = []; + static var raw_curMods:Array = []; + static var scriptContexts:Array = []; + + static var customAssetLibrary:Map = [ + #if VIDEOS_ALLOWED "videos" => "./videos", #end + "songs" => "./songs", + "shared" => "shared", + "week2" => "./week1", + "week3" => "./week2", + "week4" => "./week3", + "week5" => "./week4", + "week6" => "./week5", + "week7" => "./week7", + "shaders" => "./shaders" + ]; public static function initMods() { - raw_curMods = Polymod.init({ + curMods_folder = []; + raw_curMods = []; + scriptContexts = []; + + trace("Let's have a mod load.. /ref"); + + raw_curMods = Polymod.scan({ modRoot: modRoot, - apiVersionRule: '>=$apiVersion' + apiVersionRule: '>=$apiVersion', + errorCallback: function(e:PolymodError) errorCallback(e) }); - trace("Let's have a mod load.. /ref"); - + var modDirs:Array = []; for (mod in raw_curMods) { - for (modMeta in ClientPrefs.data.enabledMods) + modDirs.push(mod.id); + } + + Polymod.init({ + modRoot: modRoot, + apiVersionRule: '>=$apiVersion', + errorCallback: function(e:PolymodError) errorCallback(e), + frameworkParams: { + assetLibraryPaths: customAssetLibrary + }, + dirs: modDirs + }); + + try + { + for (mod in raw_curMods) { - if (mod.id != modMeta[0]) + if (ClientPrefs.data.enabledMods.length > 0) { - if (mod.title != modMeta[1]) + for (modMeta in ClientPrefs.data.enabledMods) { - fireModDisable(mod.id); + if (mod.id != modMeta[0]) + { + if (mod.title != modMeta[1]) + { + fireModDisable(mod.id); + } + fireModDisable(mod.id); + } + else + { + Logs.traceNew("Loaded mod: `" + mod.title + '`[${mod.id}]', INFO); + curMods_folder.push(new ModFolder(mod.id, mod.title, true)); + + //scriptContexts.push(initScriptContexts(mod.modPath, mod.id)); + } } - fireModDisable(mod.id); } else { Logs.traceNew("Loaded mod: `" + mod.title + '`[${mod.id}]', INFO); - curMods_folder.push(new ModFolder(mod.id, mod.modPath, mod.title)); + curMods_folder.push(new ModFolder(mod.id, mod.title, true)); - scriptContexts.push(initScriptContexts(mod.modPath, mod.id)); + //scriptContexts.push(initScriptContexts(mod.modPath, mod.id)); } } } + catch(e:Dynamic) + { + Logs.traceNew("Mod loading didn't work! `" + Std.string(e) + "`", ERROR); + } + + trace("Loading finished! Final loaded mods: " + Std.string(curMods_folder.length) + ' / ${raw_curMods.length}'); + } + + static function errorCallback(e:PolymodError, ?infos:Null):Void + { + if (e.severity == NOTICE) + { + Logs.traceNew(e.message, INFO, infos); + } + + if (e.severity == WARNING) + { + Logs.traceNew(e.message, WARNING, infos); + } + + if (e.severity == ERROR) + { + Logs.traceNew(e.message, ERROR, infos); + } } static function initScriptContexts(path:String, id:String):ModScriptContexts @@ -145,12 +218,12 @@ class PolymodHandler { return curMods_folder.remove(get_enabledModByID(id)); } - public static function enableMod(id:String):Bool + public static function enableMod(id:String) { var tempMods:Array = Polymod.loadMod(id); var mod:ModMetadata = get_modByID(id); - curMods_folder.push(new ModFolder(id, mod.modFolder, mod.title)); scriptContexts.push(initScriptContexts(mod.modPath, mod.id)); + curMods_folder.push(new ModFolder(mod.id, mod.title, true)); trace("Enabled mod: `" + mod.title + '`[$id]'); } From 3009fcb84712e3a666731b84d55a854211808fe9 Mon Sep 17 00:00:00 2001 From: Char <73309364+CharGoldenYT@users.noreply.github.com> Date: Wed, 10 Sep 2025 12:55:56 -0400 Subject: [PATCH 10/13] Think the workflow might work now. --- .DS_Store | Bin 10244 -> 10244 bytes .github/workflows/main.yml | 41 +++++++++++++++--------------- assets/.DS_Store | Bin 6148 -> 8196 bytes assets/preload/.DS_Store | Bin 8196 -> 8196 bytes assets/preload/images/.DS_Store | Bin 14340 -> 14340 bytes assets/preload/uescript/.DS_Store | Bin 0 -> 6148 bytes assets/shared/.DS_Store | Bin 0 -> 6148 bytes assets/shared/images/.DS_Store | Bin 0 -> 10244 bytes compile/.DS_Store | Bin 0 -> 6148 bytes example_mods/.DS_Store | Bin 0 -> 6148 bytes source/.DS_Store | Bin 14340 -> 14340 bytes 11 files changed, 21 insertions(+), 20 deletions(-) create mode 100644 assets/preload/uescript/.DS_Store create mode 100644 assets/shared/.DS_Store create mode 100644 assets/shared/images/.DS_Store create mode 100644 compile/.DS_Store create mode 100644 example_mods/.DS_Store diff --git a/.DS_Store b/.DS_Store index 9ea45923225a90e6251fae868b7c3734b301543f..7150b433006be4a4e5062580c24d14f195fc4763 100644 GIT binary patch delta 617 zcmZn(XbG6$mJU^hRb`eYt~snYBWdJO3dnG7Wi84RTiNlE3!1xY#iNem1O+b25+ z7OII?R~wt_C>R==*6Ju!Tbh~bD3}_X*4A=zh$`z_2gPUS1FW&{!gl1e> za8X`PeqK6IhH>&dfrX5u8p_zU`G+7k)8x~_l9Trd9cSd3EFdbugKX?15q(KEhE#?M zh609sh9ZU%3cMf-@&bxs$Tn@(5s_w`%r2_PLxB~HU6WZvRZx7e*+rC#5yMO_P{>>8 zC>R+UPu?Ra%?J)-U~t%pr7|+x|6tg>OuUbIGrPhs7Tz47_v0CIf!PKo6RIy-OMbzo5c1K zkkX@A=H|hp$6glHg9i_K6z^XA2LwI!COW&ZR`ldmd@%DqzW3&P%*?lA>==(v;_lw; zQlbn1J^&d&1G}g*wV|^Hk71f;bAAa$)z34Ta}#Rlb zJ?`;kCnE0$LKfIyLJzw9>HI@n;-?obr6l;t_A4gU8Ep$Wbe^Y(gwsxVt|JXKwQsny z1^=#L=$d6`vma#{$9#TiJP-^Wn+QjaN9EY$R4g7#B$BBUiRqb{*}6Q{P}KWvll5rx zBGZ{!(0in+sf<>%ZBn(#1KS04dGfcub<(_hL=88#4AB%nVmz_SCL#28+tiw+R?8xG z^%q>L%TY@;nXZ?arP&&zwN0zT21T26i?qeW$i7AfCBrRQw}@$p{KuJUO)*V{4%?)# zbw^hkL@&_-vu)OOTU|MEm9j}(DQ|eiP*jb!)2m;^8;VHh-9Ple*%6Q-JpyiVJMZCO z{E+&Qaf32SLZNj2n#*j86@*1tgR4-14h-NCJb`EM65hfG_yh;&$0VM?MaM{_I^5CXjfFQ(B)N}&=?+EWfoxpb1(*v9*M0W!Xzsjc%GZ1) R_lkd=AN=>tzwMhB-vMmzKf?e3 delta 151 zcmZoEXepQ=&DcIs##q#sfq{XUfkA+QA%h{2A%&roA(tU(;zi}j1|}@5j6g}2$u|To zCwnT`Y`nz8zL}kag@aLNvw+Zg_RXuM5?D7r_`t-du$f08gLQJe`lg8!G&l1KoMW7P yQA%pFy7Uv4jSt>1O=dR`VQpt%P~h2k@jdfoeiL0rhRKd5dnW%>sYYnp$_M~lLN0g! diff --git a/assets/preload/uescript/.DS_Store b/assets/preload/uescript/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..7fa410385507ca84d0719f95c0b9f14f38ffbf23 GIT binary patch literal 6148 zcmeH~OH0E*5XWcRYEwn%LBWd<@G4rZ2;wDHt9VgqiXK#IV~Yl3R{F4qQpj09j8{L2 zUq@$VS4dO6`DO=Z|NEFpvOl`JT>ucJZetlB4*(WAX=Vb8cZ|l#M=Yg#a;SozQQiyW zg%?O~B-V5o0*1ivBS33+40hlEDzF9d^-EjACi>zF8-IE%((AQv^-6#8ZUevFDHNVX zDxDb{&ste)(mHdmWY6u?JKc7v-a4UHRm#A7tJl3FzuBwhr?+I-srzBG#R-0+i6N)Q ze%O$`lI(_!Hs`u(z{**!kH?d7=eUk^Q#AbBow!%P$m)J`gDcFU>*nUPl9?|1GIOgX`6hDIm&n3Yii@%FQ zsKOrVKDfg)#9V?#BKn_jNz5ui2od~Q)9b>T{IfGKA8rU30$)Xd_6HlC)X^F#<*fq? zz5<|Tu$v9*bWl=`t<}*QDa8>qp;A#*s?b*qq0+J6)^U#3NU2H(p)Vgozgg%Tir}~7 z^KA|X;V3nwAz%m$6G*FOp3eXB$M^r?B-1hk41s?|KxDSv?GjE&pRFU4qqEjVKSw8{ oxJW6dV4;s=uFz3Di_V5)HdRm^t&vjfK{I~@7=tMcfo~=73h7(na{vGU literal 0 HcmV?d00001 diff --git a/assets/shared/.DS_Store b/assets/shared/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..ae7613d484792510b9ca2b47e2764799c43c6906 GIT binary patch literal 6148 zcmeHKPfrs;6n_H+wji=Vix4$w?8OA42!wsyyf=S-ot^0b0Lj?;79Bfc24V*OH3r1D+YK&M!G;P%zh7}E+(*6j zQ;M8=B-UvJHT|uhI5p1=!pX_cq@y#@)!k$C7=6aJwZ|J)XovM6Z~L2~w#K>Vv~1g1 zcWI+&rWQC0ZI@ABCb(saAzM#fR_2X7ud{L>b1l_iB#mUz96dUko|~S?%*;+5Ph^hf zrY6yzo;^NJ8tLrqyQ{^0ugdsqIcp$zK1u1<*n&4`MAqb%4)mJH$JUy@nr3TN$=<$8 z{g(&K!J*;7)L=TD9=Vbp9UHq^G>09#v|sVXY!|r4{k&JF1-HbR<-VeYkiHCsQ8b6n z#I4fu^HbN_VGUzarw-ZIL!VN%S@GTS^6qXx!@_U&M$sGyNu%h|?OfJ85a zw7SH0IgWUMBrn%QQ?O3`0I@BnuwnbY%_=m1xb4{v^_E$lhas=qbo6I*Tux(Cp-Km$ zA0I@IO!Nzd$kDO?j0^{oQy7;q12F?p20B&M6!-swzrX*ZNpUS^AZFmdVt^zTt;IYp zN#Ct)ixYQk26YEjh=^+{lqp!~>sT7%Djr3Zf^8XLAm%hS6`}_v{v#l1h>Mtkb7kNc DRYdI^ literal 0 HcmV?d00001 diff --git a/assets/shared/images/.DS_Store b/assets/shared/images/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..70df296216be3853aef98fd1712ed04970e303be GIT binary patch literal 10244 zcmeHM&2H345Ux%F<4HC@{EEv;miEFSWJ7|G5E7aUAT0-WC5FI(-JKoBW-^LnM;;Fo z6a~#0-ho%(%2VudA7k&F;H$F7+n%%&vIm5e?xSz(tM#kTZBJ1#O%I1motik;_pg1qz$l=|SaCl^-!w z2FLF%t3x(&Im%=PCzZiTfTl-)mERRW;ey=fo z9wV>dio~*#beM-xDrVyQyjakf^ z7_nqKp_xsNNeQ!f>R7zdVo{AYjG1#?>F9a!m$| zFc(d(T*B`O2yfWm^FmqcK6-m$ub-~2{-dU*XU?6kIW=d_`J=TR4_j#`9rT->#dmUNCGgUA`YjX{Q$ji2!vEj)O6Tr4ydln#V>_1~{_q-j8FLNt+$jQq9CpcoPL_V8Q-1?J$ln>7=Bj2L4Bpzn9 z+IO+ET)MKd>aBWf-n;Nv=3&;!M#G>pc%w!KQYO)~--%wu{k&bd@mQu=CrzlPn)gNy^s8#)~`oqbj?A^S5|IvQ? zBsopxXMO`k2!pt0aSDo)1s*4EVqs8U9c*+7KrGR$g?;t(s~F#6!(w5OGZbM$i6&Io5<{49+I{QSuvi#0;Sjd? z5H_>06^hW=xxTO6AsPl<>lknh%rdZSh86YxvtIvQ{XZMzMvei;z<%zyWx7Me=rz%l?g+U#{#y-coqn_e*sus@qszYp8EDX{@aeo9f4X$wvTqpxS0kRa9 AA^-pY literal 0 HcmV?d00001 diff --git a/example_mods/.DS_Store b/example_mods/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..32342f8ec580b023626e63622ce647ab442fb76c GIT binary patch literal 6148 zcmeHKO>fgc5S>j^;!rC2K&4)gR^nQf^h1>@E+#Dpt{Bk+pkT)atUBH(b{dH&lF#sC zxbjQ*FPz}b?pA7?mJ>oK+L318e$2Bq&-SdBh(v#y91!_L72KIqz$x&*E5P6GHVtV?B~^6u`zQJFJjA%?bMciM$gLu^7`FHVXpFUGY;|Bk0gWo}3Lz-~pYChuU zpQGbhIkwqjdR=wU2(b{Nl-s^ZBZ_9fZep0irimGYZk0x(;^h&8bzV1iy>nxoO z{D)_%sG_V$Cz_BYDMH>}WJRK8eKjqTQgcJI;B~$3z~7zEk4}&GktArAv5$CnV`$ zS<@Cr-hAp9I$Hw;>^tLatwAm>1*d>h;O{EH^+CcJ1BI89j{`G1+@Mos~zz*;FF+UMbUA1T?rbtO68YbE?WoQ>mZgPMZIZpXUATk$Sj a8`dOufPux@AZB3hM?lNq8mGWNRp2)hKA=tj literal 0 HcmV?d00001 diff --git a/source/.DS_Store b/source/.DS_Store index c455e43a2aa9a950ff36d0cba4c0efd66fbaf0f9..c7689db1361e3f9bc91d35812320e8fd5185d4c8 100644 GIT binary patch delta 195 zcmZoEXepTBFB;Ckz`)GFAi%(o$WY9X!H~(2$B;f*kWqQEfe8yMBT$xQGLL}c#*0?` zjAomC1aeuF*%@*f@)=Tq5UkiUCqFqUCqD_O6le;ABLf4Q-{y59*IA{RfhJZm6r(9v v4^~hmRm-}WTfu>ObG>p8%fyN1n-wHdnFwg9WZlee@QG!!uIfFei4%1JpkyxR delta 169 zcmZoEXepTBFB-f&;TE7eg{b2GE=$hE#?; zhIF9Gc?_wZIr+&+Ir&LIV}O=1tlw;-Jey_mLIK&y38E~Ur6eMmV5SIcW;gi6GFebv KWb;jx?@R#XC@O^j From 6bc6ad7afc50973bb3d88a02f16a94591d609af6 Mon Sep 17 00:00:00 2001 From: VideoBot Date: Wed, 10 Sep 2025 18:58:52 +0200 Subject: [PATCH 11/13] better version lmao --- .github/workflows/main.yml | 40 ++++++++++++++++++------------------ compile/workflow/unix.sh | 8 ++++---- compile/workflow/windows.bat | 6 +++--- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 430dd74..88a0b1d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -81,25 +81,25 @@ jobs: path: export/release/macos/bin # MacOS On ARM (M1 to M4 chips) Will be commented until we figure it out. - # MacOS-ARM-Build: - # runs-on: macos-latest + MacOS-ARM-Build: + runs-on: macos-latest - # steps: - # - uses: actions/checkout@v4.1.7 + steps: + - uses: actions/checkout@v4.1.7 - # - uses: krdlab/setup-haxe@master - # with: - # haxe-version: 4.3.4 - # - name: Install Haxelib - # run: | - # haxelib setup ~/haxelib - # chmod +x ./compile/workflow/unix.sh - # sh ./compile/workflow/unix.sh - # haxelib list - # - name: Compile MacOS ARM - # run: haxelib run lime build mac -arm64 - # - name: Publish Artifact - # uses: actions/upload-artifact@v4 - # with: - # name: Universe-MacOS-ARM - # path: export/release/macos/bin + - uses: krdlab/setup-haxe@master + with: + haxe-version: 4.3.4 + - name: Install Haxelib + run: | + haxelib setup ~/haxelib + chmod +x ./compile/workflow/unix.sh + sh ./compile/workflow/unix.sh + haxelib list + - name: Compile MacOS ARM + run: haxelib run lime build mac -arm64 + - name: Publish Artifact + uses: actions/upload-artifact@v4 + with: + name: Universe-MacOS-ARM + path: export/release/macos/bin diff --git a/compile/workflow/unix.sh b/compile/workflow/unix.sh index 3c3d90b..9f0f1bf 100644 --- a/compile/workflow/unix.sh +++ b/compile/workflow/unix.sh @@ -1,6 +1,6 @@ -haxelib install lime 8.1.3 && haxelib set lime 8.1.3 -haxelib install openfl 9.2.2 && haxelib set openfl 9.2.2 -haxelib install flixel 5.6.2 && haxelib set flixel 5.6.2 +haxelib install lime 8.2.2 && haxelib set lime 8.2.2 +haxelib install openfl 9.4.1 && haxelib set openfl 9.4.1 +haxelib install flixel 5.5.0 && haxelib set flixel 5.5.0 haxelib install flixel-addons 3.2.0 && haxelib set flixel-addons 3.2.0 haxelib install flixel-ui 2.5.0 && haxelib set flixel-ui 2.5.0 haxelib install hxvlc 1.9.3 && haxelib set hxvlc 1.9.3 @@ -14,4 +14,4 @@ haxelib install hxdiscord_rpc haxelib git hxcpp https://github.com/moxie-coder/hxcpp-compiled haxelib git linc_luajit https://github.com/superpowers04/linc_luajit -haxelib git hscript-improved https://github.com/CodenameCrew/hscript-improved \ No newline at end of file +haxelib git hscript-improved https://github.com/CodenameCrew/hscript-improved \ No newline at end of file diff --git a/compile/workflow/windows.bat b/compile/workflow/windows.bat index 3c3d90b..27212df 100644 --- a/compile/workflow/windows.bat +++ b/compile/workflow/windows.bat @@ -1,6 +1,6 @@ -haxelib install lime 8.1.3 && haxelib set lime 8.1.3 -haxelib install openfl 9.2.2 && haxelib set openfl 9.2.2 -haxelib install flixel 5.6.2 && haxelib set flixel 5.6.2 +haxelib install lime 8.2.2 && haxelib set lime 8.2.2 +haxelib install openfl 9.4.1 && haxelib set openfl 9.4.1 +haxelib install flixel 5.5.0 && haxelib set flixel 5.5.0 haxelib install flixel-addons 3.2.0 && haxelib set flixel-addons 3.2.0 haxelib install flixel-ui 2.5.0 && haxelib set flixel-ui 2.5.0 haxelib install hxvlc 1.9.3 && haxelib set hxvlc 1.9.3 From 53373439585f1a079b1bf500a1ccf4c8d16eddb2 Mon Sep 17 00:00:00 2001 From: VideoBot Date: Wed, 10 Sep 2025 19:00:50 +0200 Subject: [PATCH 12/13] idk why this happened --- .github/workflows/main.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 9715a60..7d8d5e3 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -96,10 +96,7 @@ jobs: chmod +x ./compile/workflow/unix.sh sh ./compile/workflow/unix.sh haxelib list -<<<<<<< HEAD -======= haxelib install lime 8.2.2 && haxelib set lime 8.2.2 ->>>>>>> refs/remotes/origin/uedev-polymod - name: Compile MacOS ARM run: haxelib run lime build mac -arm64 - name: Publish Artifact From ed235f2a5cc7858d547fbf857e1ca9086a4336c0 Mon Sep 17 00:00:00 2001 From: Char <73309364+CharGoldenYT@users.noreply.github.com> Date: Wed, 10 Sep 2025 13:24:20 -0400 Subject: [PATCH 13/13] compile shits.. again --- compile/.DS_Store | Bin 6148 -> 6148 bytes compile/workflow/unix.sh | 8 ++++++-- compile/workflow/windows.bat | 8 ++++++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/compile/.DS_Store b/compile/.DS_Store index 7ba76a4fff18b3f648b2e0bb3eeb636428f6eeaa..f4ae30cf8a9afb41ad11d6d12bfa23f1ca1150d6 100644 GIT binary patch delta 19 acmZoMXffFEhLz1&N5ROzX!9plAt3-kWd-p7 delta 19 acmZoMXffFEhLz1kN5R<8VDl$dAt3-ka|QAM diff --git a/compile/workflow/unix.sh b/compile/workflow/unix.sh index 9f0f1bf..3df0362 100644 --- a/compile/workflow/unix.sh +++ b/compile/workflow/unix.sh @@ -4,6 +4,11 @@ haxelib install flixel 5.5.0 && haxelib set flixel 5.5.0 haxelib install flixel-addons 3.2.0 && haxelib set flixel-addons 3.2.0 haxelib install flixel-ui 2.5.0 && haxelib set flixel-ui 2.5.0 haxelib install hxvlc 1.9.3 && haxelib set hxvlc 1.9.3 +haxelib install polymod +haxelib git jsonpatch https://github.com/EliteMasterEric/jsonpatch f9b83215acd586dc28754b4ae7f69d4c06c3b4d3 +haxelib git jsonpath https://github.com/EliteMasterEric/jsonpath 7a24193717b36393458c15c0435bb7c4470ecdda +haxelib git thx.core https://github.com/fponticelli/thx.core 2bf2b992e06159510f595554e6b952e47922f128 +haxelib git thx.semver https://github.com/fponticelli/thx.semver bdb191fe7cf745c02a980749906dbf22719e200b haxelib run lime setup flixel haxelib run lime setup @@ -13,5 +18,4 @@ haxelib install hxcpp-debug-server haxelib install hxdiscord_rpc haxelib git hxcpp https://github.com/moxie-coder/hxcpp-compiled -haxelib git linc_luajit https://github.com/superpowers04/linc_luajit -haxelib git hscript-improved https://github.com/CodenameCrew/hscript-improved \ No newline at end of file +haxelib git linc_luajit https://github.com/superpowers04/linc_luajit \ No newline at end of file diff --git a/compile/workflow/windows.bat b/compile/workflow/windows.bat index 27212df..3df0362 100644 --- a/compile/workflow/windows.bat +++ b/compile/workflow/windows.bat @@ -4,6 +4,11 @@ haxelib install flixel 5.5.0 && haxelib set flixel 5.5.0 haxelib install flixel-addons 3.2.0 && haxelib set flixel-addons 3.2.0 haxelib install flixel-ui 2.5.0 && haxelib set flixel-ui 2.5.0 haxelib install hxvlc 1.9.3 && haxelib set hxvlc 1.9.3 +haxelib install polymod +haxelib git jsonpatch https://github.com/EliteMasterEric/jsonpatch f9b83215acd586dc28754b4ae7f69d4c06c3b4d3 +haxelib git jsonpath https://github.com/EliteMasterEric/jsonpath 7a24193717b36393458c15c0435bb7c4470ecdda +haxelib git thx.core https://github.com/fponticelli/thx.core 2bf2b992e06159510f595554e6b952e47922f128 +haxelib git thx.semver https://github.com/fponticelli/thx.semver bdb191fe7cf745c02a980749906dbf22719e200b haxelib run lime setup flixel haxelib run lime setup @@ -13,5 +18,4 @@ haxelib install hxcpp-debug-server haxelib install hxdiscord_rpc haxelib git hxcpp https://github.com/moxie-coder/hxcpp-compiled -haxelib git linc_luajit https://github.com/superpowers04/linc_luajit -haxelib git hscript-improved https://github.com/CodenameCrew/hscript-improved \ No newline at end of file +haxelib git linc_luajit https://github.com/superpowers04/linc_luajit \ No newline at end of file