diff --git a/commandline/commands/Setup.hx b/commandline/commands/Setup.hx
index 23e289cb..2fd3554e 100644
--- a/commandline/commands/Setup.hx
+++ b/commandline/commands/Setup.hx
@@ -23,6 +23,7 @@ class Setup {
var CHECK_VSTUDIO = !args.existsOption("no-vscheck");
var REINSTALL_ALL = args.existsOption("reinstall");
var SILENT = args.existsOption("silent-progress");
+ // TODO: add only install missing libs
// to prevent messing with currently installed libs
if (!FileSystem.exists('.haxelib'))
diff --git a/setup-dev.xml b/setup-dev.xml
index 3f8b70ac..e15dd397 100644
--- a/setup-dev.xml
+++ b/setup-dev.xml
@@ -94,5 +94,20 @@
+
+
+
+ haxelib dev lime ../../lime
+ haxelib dev openfl ../../openfl
+ haxelib dev flixel ../../flixel
+ haxelib dev flixel-addons ../../flixel-addons
+ haxelib dev hscript-improved ../../hscript-improved
+ haxelib dev flxanimate ../../flxanimate
+
+ haxelib dev away3d ../../away3d
+ haxelib dev hxcpp ../../../hxcpp
+
+
+
Setup for dev libs complete!
diff --git a/source/flx3d/Flx3DUtil.hx b/source/flx3d/Flx3DUtil.hx
index 029a06f3..e6c85bb0 100644
--- a/source/flx3d/Flx3DUtil.hx
+++ b/source/flx3d/Flx3DUtil.hx
@@ -14,7 +14,7 @@ import flixel.FlxG;
* @see https://twitter.com/Ne_Eo_Twitch
*/
@:access(away3d.core.managers.Stage3DManager)
-class Flx3DUtil
+final class Flx3DUtil
{
#if THREE_D_SUPPORT
/**
diff --git a/source/funkin/backend/chart/Chart.hx b/source/funkin/backend/chart/Chart.hx
index 87302b71..9fa9c782 100644
--- a/source/funkin/backend/chart/Chart.hx
+++ b/source/funkin/backend/chart/Chart.hx
@@ -11,7 +11,7 @@ import sys.FileSystem;
using StringTools;
-class Chart {
+final class Chart {
/**
* Default background colors for songs without bg color
*/
diff --git a/source/funkin/backend/chart/EventsData.hx b/source/funkin/backend/chart/EventsData.hx
index 630f2269..c7394c18 100644
--- a/source/funkin/backend/chart/EventsData.hx
+++ b/source/funkin/backend/chart/EventsData.hx
@@ -9,7 +9,7 @@ import openfl.Assets;
using StringTools;
-class EventsData {
+final class EventsData {
public static var defaultEventsList:Array = ["HScript Call", "Camera Movement", "Add Camera Zoom", "Camera Modulo Change", "Camera Flash", "BPM Change", "Scroll Speed Change", "Alt Animation Toggle", "Play Animation"];
public static var defaultEventsParams:Map> = [
"HScript Call" => [
diff --git a/source/funkin/backend/scripting/EventManager.hx b/source/funkin/backend/scripting/EventManager.hx
index 84e7d33f..f2eeb23f 100644
--- a/source/funkin/backend/scripting/EventManager.hx
+++ b/source/funkin/backend/scripting/EventManager.hx
@@ -3,7 +3,7 @@ package funkin.backend.scripting;
import flixel.FlxState;
import funkin.backend.scripting.events.*;
-class EventManager {
+final class EventManager {
// map doesnt work for that
public static var eventValues:Array = [];
public static var eventKeys:Array> = [];
diff --git a/source/funkin/backend/system/CommandLineHandler.hx b/source/funkin/backend/system/CommandLineHandler.hx
index 3690b6a2..6256c2a2 100644
--- a/source/funkin/backend/system/CommandLineHandler.hx
+++ b/source/funkin/backend/system/CommandLineHandler.hx
@@ -2,7 +2,7 @@ package funkin.backend.system;
#if sys
import sys.FileSystem;
-class CommandLineHandler {
+final class CommandLineHandler {
public static function parseCommandLine(cmd:Array) {
var i:Int = 0;
while(i < cmd.length) {
diff --git a/source/funkin/backend/system/Logs.hx b/source/funkin/backend/system/Logs.hx
index 1f083324..ce590882 100644
--- a/source/funkin/backend/system/Logs.hx
+++ b/source/funkin/backend/system/Logs.hx
@@ -6,7 +6,7 @@ import funkin.backend.utils.NativeAPI.ConsoleColor;
import funkin.backend.utils.NativeAPI;
import haxe.Log;
-class Logs {
+final class Logs {
private static var __showing:Bool = false;
public static var nativeTrace = Log.trace;
diff --git a/source/funkin/backend/system/modules/AudioSwitchFix.hx b/source/funkin/backend/system/modules/AudioSwitchFix.hx
index 232c1eb8..c7065f0c 100644
--- a/source/funkin/backend/system/modules/AudioSwitchFix.hx
+++ b/source/funkin/backend/system/modules/AudioSwitchFix.hx
@@ -11,7 +11,7 @@ import lime.media.AudioManager;
* hi gray itsa me yoshicrafter29 i fixed it hehe
*/
@:dox(hide)
-class AudioSwitchFix {
+final class AudioSwitchFix {
@:noCompletion
private static function onStateSwitch(state:FlxState):Void {
#if windows
diff --git a/source/funkin/backend/system/modules/CrashHandler.hx b/source/funkin/backend/system/modules/CrashHandler.hx
index 124b915c..6a460ac1 100644
--- a/source/funkin/backend/system/modules/CrashHandler.hx
+++ b/source/funkin/backend/system/modules/CrashHandler.hx
@@ -7,7 +7,7 @@ import openfl.errors.Error;
import openfl.events.ErrorEvent;
import openfl.events.UncaughtErrorEvent;
-class CrashHandler {
+final class CrashHandler {
public static function init() {
Lib.current.loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, onUncaughtError);
#if cpp
diff --git a/source/funkin/backend/utils/BitmapUtil.hx b/source/funkin/backend/utils/BitmapUtil.hx
index 866f6b25..fb9eefb2 100644
--- a/source/funkin/backend/utils/BitmapUtil.hx
+++ b/source/funkin/backend/utils/BitmapUtil.hx
@@ -5,7 +5,7 @@ import openfl.display.BitmapData;
import openfl.geom.Point;
import openfl.geom.Rectangle;
-class BitmapUtil {
+final class BitmapUtil {
/**
* Returns the most present color in a Bitmap.
* @param bmap Bitmap
diff --git a/source/funkin/backend/utils/CoolUtil.hx b/source/funkin/backend/utils/CoolUtil.hx
index a9acf042..dc250c5a 100644
--- a/source/funkin/backend/utils/CoolUtil.hx
+++ b/source/funkin/backend/utils/CoolUtil.hx
@@ -41,7 +41,7 @@ import openfl.geom.ColorTransform;
using StringTools;
@:allow(funkin.game.PlayState)
-class CoolUtil
+final class CoolUtil
{
public static function getLastExceptionStack():String {
return CallStack.toString(CallStack.exceptionStack());
diff --git a/source/funkin/backend/utils/DiscordUtil.hx b/source/funkin/backend/utils/DiscordUtil.hx
index db3c20c4..01871674 100644
--- a/source/funkin/backend/utils/DiscordUtil.hx
+++ b/source/funkin/backend/utils/DiscordUtil.hx
@@ -16,7 +16,7 @@ import lime.app.Application;
import sys.thread.Thread;
#end
-class DiscordUtil
+final class DiscordUtil
{
public static var currentID(default, set):String = null;
public static var discordThread:#if DISCORD_RPC Thread #else Dynamic #end = null;
diff --git a/source/funkin/backend/utils/DrawUtil.hx b/source/funkin/backend/utils/DrawUtil.hx
index 1d0bc481..8b3976e7 100644
--- a/source/funkin/backend/utils/DrawUtil.hx
+++ b/source/funkin/backend/utils/DrawUtil.hx
@@ -4,7 +4,7 @@ import flixel.util.FlxColor;
import flixel.math.FlxAngle;
import flixel.math.FlxPoint;
-class DrawUtil {
+final class DrawUtil {
public static var line:FlxSprite = null;
public static var dot:FlxSprite = null;
diff --git a/source/funkin/backend/utils/EngineUtil.hx b/source/funkin/backend/utils/EngineUtil.hx
index 9f0e9157..ebfe916c 100644
--- a/source/funkin/backend/utils/EngineUtil.hx
+++ b/source/funkin/backend/utils/EngineUtil.hx
@@ -3,7 +3,7 @@ package funkin.backend.utils;
import funkin.backend.scripting.MultiThreadedScript;
import funkin.backend.scripting.Script;
-class EngineUtil {
+final class EngineUtil {
/**
* Starts a new multithreaded script.
* This script will share all the variables with the current one, which means already existing callbacks will be replaced by new ones on conflict.
diff --git a/source/funkin/backend/utils/HttpUtil.hx b/source/funkin/backend/utils/HttpUtil.hx
index f2d3caf8..b48fc3d9 100644
--- a/source/funkin/backend/utils/HttpUtil.hx
+++ b/source/funkin/backend/utils/HttpUtil.hx
@@ -2,7 +2,7 @@ package funkin.backend.utils;
import haxe.Http;
-class HttpUtil
+final class HttpUtil
{
public static var userAgent:String = "request";
public static function requestText(url:String)
diff --git a/source/funkin/backend/utils/IniUtil.hx b/source/funkin/backend/utils/IniUtil.hx
index d7b5738e..646a91b4 100644
--- a/source/funkin/backend/utils/IniUtil.hx
+++ b/source/funkin/backend/utils/IniUtil.hx
@@ -3,7 +3,7 @@ package funkin.backend.utils;
/**
* DOESNT SUPPORT CATEGORIES YET!!
*/
-class IniUtil {
+final class IniUtil {
public static inline function parseAsset(assetPath:String, ?defaultVariables:Map)
return parseString(Assets.getText(assetPath), defaultVariables);
diff --git a/source/funkin/backend/utils/MarkdownUtil.hx b/source/funkin/backend/utils/MarkdownUtil.hx
index c3692f38..e481198d 100644
--- a/source/funkin/backend/utils/MarkdownUtil.hx
+++ b/source/funkin/backend/utils/MarkdownUtil.hx
@@ -3,7 +3,7 @@ package funkin.backend.utils;
import flixel.text.FlxText;
import flixel.util.FlxColor;
-class MarkdownUtil {
+final class MarkdownUtil {
public static function applyMarkdownText(text:FlxText, str:String) {
text.textField.htmlText = Markdown.markdownToHtml(prepareMarkdown(str));
var changes:Array = [
diff --git a/source/funkin/backend/utils/MathUtil.hx b/source/funkin/backend/utils/MathUtil.hx
index aba4736b..06b4e83a 100644
--- a/source/funkin/backend/utils/MathUtil.hx
+++ b/source/funkin/backend/utils/MathUtil.hx
@@ -2,7 +2,7 @@ package funkin.backend.utils;
import haxe.macro.Expr;
-class MathUtil {
+final class MathUtil {
/**
* Returns the maximum value in the arguments.
* @param args Array of values
diff --git a/source/funkin/backend/utils/MatrixUtil.hx b/source/funkin/backend/utils/MatrixUtil.hx
index 9005c663..41cd5f1f 100644
--- a/source/funkin/backend/utils/MatrixUtil.hx
+++ b/source/funkin/backend/utils/MatrixUtil.hx
@@ -9,7 +9,7 @@ interface IPrePostDraw {
public function postDraw():Void;
}
-class MatrixUtil {
+final class MatrixUtil {
public static function getMatrixPosition(sprite:FlxSprite, points:OneOfTwo>, ?camera:FlxCamera, _width:Float = 1, _height:Float = 1):Array
{
//if(_width == -1) _width = sprite.width;
diff --git a/source/funkin/backend/utils/MemoryUtil.hx b/source/funkin/backend/utils/MemoryUtil.hx
index 85f7d145..81a6087a 100644
--- a/source/funkin/backend/utils/MemoryUtil.hx
+++ b/source/funkin/backend/utils/MemoryUtil.hx
@@ -14,7 +14,7 @@ import openfl.system.System;
using StringTools;
-class MemoryUtil {
+final class MemoryUtil {
public static var disableCount:Int = 0;
public static function askDisable() {
diff --git a/source/funkin/backend/utils/NdllUtil.hx b/source/funkin/backend/utils/NdllUtil.hx
index 97ab5d3e..c0cf1907 100644
--- a/source/funkin/backend/utils/NdllUtil.hx
+++ b/source/funkin/backend/utils/NdllUtil.hx
@@ -14,7 +14,7 @@ package funkin.backend.utils;
* - The Function cannot be found in the NDLL
* then an empty function will be returned instead, and a message will be shown in logs.
*/
-class NdllUtil {
+final class NdllUtil {
#if NDLLS_SUPPORTED
#if windows public static final os:String = "windows"; #end
#if linux public static final os:String = "linux"; #end
diff --git a/source/funkin/backend/utils/ShaderResizeFix.hx b/source/funkin/backend/utils/ShaderResizeFix.hx
index 96242859..97fc73fe 100644
--- a/source/funkin/backend/utils/ShaderResizeFix.hx
+++ b/source/funkin/backend/utils/ShaderResizeFix.hx
@@ -2,7 +2,7 @@ package funkin.backend.utils;
import openfl.display.Sprite;
-class ShaderResizeFix {
+final class ShaderResizeFix {
public static var doResizeFix:Bool = true;
public static function init() {
diff --git a/source/funkin/backend/utils/SortedArrayUtil.hx b/source/funkin/backend/utils/SortedArrayUtil.hx
index ac317811..eee8b5ec 100644
--- a/source/funkin/backend/utils/SortedArrayUtil.hx
+++ b/source/funkin/backend/utils/SortedArrayUtil.hx
@@ -3,7 +3,7 @@ package funkin.backend.utils;
/**
* All types of utils only usable in a sorted array.
*/
-class SortedArrayUtil {
+final class SortedArrayUtil {
/**
* Gets the index of a possible new element of an Array of T using an efficient algorithm.
* @param array Array of T to check in
diff --git a/source/funkin/backend/utils/ThreadUtil.hx b/source/funkin/backend/utils/ThreadUtil.hx
index fe2cb5bf..8c2f654c 100644
--- a/source/funkin/backend/utils/ThreadUtil.hx
+++ b/source/funkin/backend/utils/ThreadUtil.hx
@@ -1,7 +1,7 @@
package funkin.backend.utils;
#if ALLOW_MULTITHREADING
-class ThreadUtil {
+final class ThreadUtil {
/**
* Creates a new Thread with an error handler.
* @param func Function to execute
diff --git a/source/funkin/backend/utils/WindowUtils.hx b/source/funkin/backend/utils/WindowUtils.hx
index d6210d9a..bf4d2730 100644
--- a/source/funkin/backend/utils/WindowUtils.hx
+++ b/source/funkin/backend/utils/WindowUtils.hx
@@ -2,7 +2,7 @@ package funkin.backend.utils;
import openfl.Lib;
-class WindowUtils {
+final class WindowUtils {
public static var winTitle(default, set):String;
private static function set_winTitle(value:String):String {
winTitle = value;
diff --git a/source/funkin/backend/utils/XMLUtil.hx b/source/funkin/backend/utils/XMLUtil.hx
index 52a3bd47..b09d2b4a 100644
--- a/source/funkin/backend/utils/XMLUtil.hx
+++ b/source/funkin/backend/utils/XMLUtil.hx
@@ -15,7 +15,7 @@ typedef TextFormat = { text:String, format:Dynamic }
/**
* Class made to make XML parsing easier.
*/
-class XMLUtil {
+final class XMLUtil {
/**
* Applies a property XML node to an object.
diff --git a/source/funkin/backend/utils/ZipUtil.hx b/source/funkin/backend/utils/ZipUtil.hx
index 16a353c2..f7c5f9e3 100644
--- a/source/funkin/backend/utils/ZipUtil.hx
+++ b/source/funkin/backend/utils/ZipUtil.hx
@@ -23,7 +23,7 @@ using StringTools;
// import ZipUtils; ZipUtils.uncompressZip(ZipUtils.openZip("E:\\Desktop\\test\\termination lua.ycemod"), "E:\\Desktop\\test\\uncompressed\\");
// import ZipUtils; var e = ZipUtils.createZipFile("gjnsdghs.ycemod"); ZipUtils.writeFolderToZip(e, "./mods/Friday Night Funkin'/", "Friday Night Funkin'/"); e.flush(); e.close();
-class ZipUtil {
+final class ZipUtil {
public static var bannedNames:Array = [".git", ".gitignore", ".github", ".vscode", ".gitattributes", "readme.txt"];
/**
diff --git a/source/funkin/backend/utils/native/Linux.hx b/source/funkin/backend/utils/native/Linux.hx
index 01e6a84b..661c5842 100644
--- a/source/funkin/backend/utils/native/Linux.hx
+++ b/source/funkin/backend/utils/native/Linux.hx
@@ -2,7 +2,8 @@ package funkin.backend.utils.native;
#if linux
@:cppFileCode("#include ")
-class Linux {
+@:dox(hide)
+final class Linux {
@:functionCode('
FILE *meminfo = fopen("/proc/meminfo", "r");
diff --git a/source/funkin/backend/utils/native/Mac.hx b/source/funkin/backend/utils/native/Mac.hx
index abdb478c..b682d7ac 100644
--- a/source/funkin/backend/utils/native/Mac.hx
+++ b/source/funkin/backend/utils/native/Mac.hx
@@ -5,7 +5,8 @@ import funkin.backend.utils.NativeAPI.CodeCursor;
import openfl.ui.Mouse;
@:headerInclude('sys/sysctl.h')
-class Mac
+@:dox(hide)
+final class Mac
{
@:functionCode('
int mib [] = { CTL_HW, HW_MEMSIZE };
diff --git a/source/funkin/backend/utils/native/Windows.hx b/source/funkin/backend/utils/native/Windows.hx
index a536c75f..eb0b8cf0 100644
--- a/source/funkin/backend/utils/native/Windows.hx
+++ b/source/funkin/backend/utils/native/Windows.hx
@@ -114,7 +114,7 @@ class AudioFixClient : public IMMNotificationClient {
AudioFixClient *curAudioFix;
')
@:dox(hide)
-class Windows {
+final class Windows {
public static var __audioChangeCallback:Void->Void = function() {
trace("test");