ThatRozebudDude / FPS-Plus-Public

Other
102 stars 103 forks source link

Class Based "Scripting" System Suggestion (no it is not softcoded hscript) #70

Closed BlueColorsin closed 4 months ago

BlueColorsin commented 5 months ago

--IMPORTANT: I AM A BEGINER IN HAXE SO THE METHODS OF IMPLIMENTATION MAY NOT BE POSSIBLE OR INCORRECT AND JUST THINK THIS WILL BE A NEAT ADDITION--

Class Based "Scripting" System

Knowing this is a hardcoded based a way to remove bloat from PlayState and having it be for something to interfacing to add into with instead of editing to add into, is a really neat way of thinking about it and we can do this with something already with what is done in engine

an example of this is already seen in the stage system, all we need to do is have this on a expandable scale

so lets say we have a new folder in source called scripts and inside it we have songs & global

base level

These are scripts that can be added onto songs via the chart editor, similar to characters these are in a dropdown list and when selected adds to a list that you can remove from, this allows for specific use of songs throughout weeks and other shenanigans

songs

Songs in this folder just need the name of there respective song to be loaded so if the song was dadbattle and there was a class called scripts.songs.dadbattle, the class will load

global

These are classes that are loaded in every song, and is self explainable

how?

Now that we are in a sort of fnf engine scripting golden age you have many examples from many engines to do this original take on scripting but in summery you start off with a handler to work and call from the mass amount of script classes and most likely have a base script class that all scripts extend a nice engine with a simple enough scripting manager to take inspiration from is Maru-Funkin and in all seriousness this may be alot easier to do then actual hscript implementation and keeps your hardcoded quality

but all of this keeps PlayState easy to understand and allows for more direct paths for editing songs and provides a much cleaner user experience, especially in a source sense and this can be expanded into things like ui's so you don't need to have a bunch of switches for the current ui you're using and so much more uses