diff --git a/README.md b/README.md
index b4d4bcc9..93b36034 100644
--- a/README.md
+++ b/README.md
@@ -12,8 +12,8 @@ Also, the command `.\cne test` uses the source assets folder instead of the expo
## Codename Engine
Codename Engine is a new Friday Night Funkin' Engine aimed at simplifying modding, along with extensiblity and ease of use.
-Make sure to read the wiki and join the Discord server linked there!
-#### It includes many new features, as seen [here](FEATURES.md)
+### Before making issues or need help with something, check our website [HERE](https://fnf-cne-devs.github.io/) (it contains a wiki of how to mod with EXAMPLES, an api, lists of mods made with Codename Engine and more)!!!
+#### The Engine includes many new features, as seen [here](FEATURES.md)
#### Wanna see the new features added in the most recent update? Click [here](PATCHNOTES.md)
## How to download
diff --git a/assets/data/config/credits.xml b/assets/data/config/credits.xml
deleted file mode 100644
index 4f300fcb..00000000
--- a/assets/data/config/credits.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
diff --git a/assets/data/config/options.xml b/assets/data/config/options.xml
deleted file mode 100644
index 888288d7..00000000
--- a/assets/data/config/options.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/source/funkin/backend/system/Logs.hx b/source/funkin/backend/system/Logs.hx
index 1f083324..60713004 100644
--- a/source/funkin/backend/system/Logs.hx
+++ b/source/funkin/backend/system/Logs.hx
@@ -11,8 +11,7 @@ class Logs {
public static var nativeTrace = Log.trace;
public static function init() {
-
- Log.trace = function(v : Dynamic, ?infos : Null) {
+ Log.trace = function(v:Dynamic, ?infos:Null) {
var data = [
logText('${infos.fileName}:${infos.lineNumber}: ', CYAN),
logText(Std.string(v))
@@ -28,22 +27,48 @@ class Logs {
__showInConsole(prepareColoredTrace(data, TRACE));
};
- LogFrontEnd.onLogs = function(Data, Style, FireOnce) {
+ LogFrontEnd.onLogs = function(data, style, fireOnce) {
var prefix = "[FLIXEL]";
var color:ConsoleColor = LIGHTGRAY;
var level:Level = INFO;
- if (Style == LogStyle.CONSOLE) {prefix = "> "; color = WHITE; level = INFO; } else
- if (Style == LogStyle.ERROR) {prefix = "[FLIXEL]"; color = RED; level = ERROR; } else
- if (Style == LogStyle.NORMAL) {prefix = "[FLIXEL]"; color = WHITE; level = INFO; } else
- if (Style == LogStyle.NOTICE) {prefix = "[FLIXEL]"; color = GREEN; level = VERBOSE;} else
- if (Style == LogStyle.WARNING) {prefix = "[FLIXEL]"; color = YELLOW; level = WARNING;}
+ if (style == LogStyle.CONSOLE) // cant place a switch here as these arent inline values - Nex
+ {
+ prefix = "> ";
+ color = WHITE;
+ level = INFO;
+ }
+ else if (style == LogStyle.ERROR)
+ {
+ prefix = "[FLIXEL]";
+ color = RED;
+ level = ERROR;
+ }
+ else if (style == LogStyle.NORMAL)
+ {
+ prefix = "[FLIXEL]";
+ color = WHITE;
+ level = INFO;
+ }
+ else if (style == LogStyle.NOTICE)
+ {
+ prefix = "[FLIXEL]";
+ color = GREEN;
+ level = VERBOSE;
+ }
+ else if (style == LogStyle.WARNING)
+ {
+ prefix = "[FLIXEL]";
+ color = YELLOW;
+ level = WARNING;
+ }
- var d:Dynamic = Data;
+ var d:Dynamic = data;
if (!(d is Array))
d = [d];
var a:Array = d;
var strs = [for(e in a) Std.string(e)];
- for(e in strs) {
+ for(e in strs)
+ {
Logs.trace('$prefix $e', level, color);
}
};
@@ -55,12 +80,18 @@ class Logs {
logText('[ '),
logText('${Std.string(time.getHours()).addZeros(2)}:${Std.string(time.getMinutes()).addZeros(2)}:${Std.string(time.getSeconds()).addZeros(2)}', DARKMAGENTA),
logText(' |'),
- switch(level) {
- case WARNING: logText(' WARNING ', DARKYELLOW);
- case ERROR: logText(' ERROR ', DARKRED);
- case TRACE: logText(' TRACE ', GRAY);
- case VERBOSE: logText(' VERBOSE ', DARKMAGENTA);
- default: logText(' INFORMATION ', CYAN);
+ switch (level)
+ {
+ case WARNING:
+ logText(' WARNING ', DARKYELLOW);
+ case ERROR:
+ logText(' ERROR ', DARKRED);
+ case TRACE:
+ logText(' TRACE ', GRAY);
+ case VERBOSE:
+ logText(' VERBOSE ', DARKMAGENTA);
+ default:
+ logText(' INFORMATION ', CYAN);
},
logText('] ')
];
@@ -77,7 +108,7 @@ class Logs {
}
public static function __showInConsole(text:Array) {
- #if sys
+ #if (sys && !mobile)
while(__showing) {
Sys.sleep(0.05);
}
@@ -89,20 +120,30 @@ class Logs {
NativeAPI.setConsoleColors();
Sys.print("\r\n");
__showing = false;
+ #elseif mobile
+ while(__showing) {
+ Sys.sleep(0.05);
+ }
+ __showing = true;
+ @:privateAccess
+ Sys.print([for(t in text) t.text].join(""));
+ __showing = false;
#else
@:privateAccess
nativeTrace([for(t in text) t.text].join(""));
#end
}
- public static function traceColored(text:Array, level:Level = INFO) {
+ public static function traceColored(text:Array, level:Level = INFO)
__showInConsole(prepareColoredTrace(text, level));
- }
+
public static function trace(text:String, level:Level = INFO, color:ConsoleColor = LIGHTGRAY) {
- traceColored([{
- text: text,
- color: color
- }], level);
+ traceColored([
+ {
+ text: text,
+ color: color
+ }
+ ], level);
}
}
@@ -113,7 +154,8 @@ enum abstract Level(Int) {
var TRACE = 3;
var VERBOSE = 4;
}
+
typedef LogText = {
var text:String;
var color:ConsoleColor;
-}
\ No newline at end of file
+}
diff --git a/source/funkin/backend/utils/CoolUtil.hx b/source/funkin/backend/utils/CoolUtil.hx
index 640fedcc..baa7d05f 100644
--- a/source/funkin/backend/utils/CoolUtil.hx
+++ b/source/funkin/backend/utils/CoolUtil.hx
@@ -721,7 +721,10 @@ class CoolUtil
*/
@:noUsing public static inline function openURL(url:String) {
#if linux
- Sys.command('/usr/bin/xdg-open', [url]);
+ // generally `xdg-open` should work in every distro
+ var cmd = Sys.command("xdg-open", [url]);
+ // run old command JUST IN CASE it fails, which it shouldn't
+ if (cmd != 0) cmd = Sys.command("/usr/bin/xdg-open", [url]);
#else
FlxG.openURL(url);
#end
diff --git a/source/funkin/backend/utils/MemoryUtil.hx b/source/funkin/backend/utils/MemoryUtil.hx
index 6c27629e..cd27cb0e 100644
--- a/source/funkin/backend/utils/MemoryUtil.hx
+++ b/source/funkin/backend/utils/MemoryUtil.hx
@@ -140,14 +140,16 @@ class MemoryUtil {
reg.match(process.stdout.readAll().toString());
if (process.exitCode() == 0) return reg.matched(1);
#elseif linux
- var process = new HiddenProcess("sudo", ["dmidecode", "--type", "17"]);
+ /*var process = new HiddenProcess("sudo", ["dmidecode", "--type", "17"]);
if (process.exitCode() != 0) return "Unknown";
var lines = process.stdout.readAll().toString().split("\n");
for (line in lines) {
if (line.startsWith("Type:")) {
return line.substring("Type:".length).trim();
}
- }
+ }*/
+ // TODO: sort of unsafe? also requires users to use `sudo`
+ // when launching the engine through the CLI, REIMPLEMENT LATER.
#end
return "Unknown";
}
diff --git a/source/funkin/game/cutscenes/DialogueCutscene.hx b/source/funkin/game/cutscenes/DialogueCutscene.hx
index b3b16c8e..b24e2396 100644
--- a/source/funkin/game/cutscenes/DialogueCutscene.hx
+++ b/source/funkin/game/cutscenes/DialogueCutscene.hx
@@ -89,7 +89,7 @@ class DialogueCutscene extends Cutscene {
musicVolume: node.has.musicVolume ? (volume = Std.parseFloat(node.att.speed).getDefault(0.8)) : null,
changeMusic: node.has.changeMusic ? FlxG.sound.load(Paths.music(node.att.changeMusic), volume, true) : null,
playSound: node.has.playSound ? FlxG.sound.load(Paths.sound(node.att.playSound)) : null,
- nextSound: node.has.nextSound ? FlxG.sound.load(Paths.music(node.att.nextSound)) : null,
+ nextSound: node.has.nextSound ? FlxG.sound.load(Paths.sound(node.att.nextSound)) : null,
textSound: null
};
@@ -215,4 +215,4 @@ typedef DialogueLine = {
var nextSound:FlxSound;
var textSound:FlxSound;
var changeDefAnim:String;
-}
\ No newline at end of file
+}
diff --git a/source/funkin/menus/MainMenuState.hx b/source/funkin/menus/MainMenuState.hx
index cd40bc90..a8a629eb 100644
--- a/source/funkin/menus/MainMenuState.hx
+++ b/source/funkin/menus/MainMenuState.hx
@@ -158,7 +158,7 @@ class MainMenuState extends MusicBeatState
var event = event("onSelectItem", EventManager.get(NameEvent).recycle(daChoice));
if (event.cancelled) return;
- switch (daChoice)
+ switch (event.name)
{
case 'story mode': FlxG.switchState(new StoryMenuState());
case 'freeplay': FlxG.switchState(new FreeplayState());
diff --git a/source/funkin/menus/StoryMenuState.hx b/source/funkin/menus/StoryMenuState.hx
index 1ed7fa5b..6759d0dc 100644
--- a/source/funkin/menus/StoryMenuState.hx
+++ b/source/funkin/menus/StoryMenuState.hx
@@ -114,6 +114,12 @@ class StoryMenuState extends MusicBeatState {
}
}
+ // default difficulty should be the middle difficulty in the array
+ // to be consistent with base game and whatnot, you know the drill
+ curDifficulty = Math.floor(weeks[0].difficulties.length * 0.5);
+ // debug stuff lol
+ Logs.trace('Middle Difficulty for Week 1 is ${weeks[0].difficulties[curDifficulty]} (ID: $curDifficulty)');
+
changeWeek(0, true);
DiscordUtil.call("onMenuLoaded", ["Story Menu"]);
@@ -163,6 +169,7 @@ class StoryMenuState extends MusicBeatState {
if (!force) CoolUtil.playMenuSFX();
for(k=>e in weekSprites.members) {
e.targetY = k - curWeek;
+ e.alpha = k == curWeek ? 1.0 : 0.6;
}
tracklist.text = 'TRACKS\n\n${[for(e in weeks[curWeek].songs) if (!e.hide) e.name.toUpperCase()].join('\n')}';
weekTitle.text = weeks[curWeek].name.getDefault("");
@@ -343,13 +350,13 @@ class StoryMenuState extends MusicBeatState {
if (char.animation.exists("confirm"))
char.animation.play("confirm");
- PlayState.loadWeek(weeks[curWeek], weeks[curWeek].difficulties[curDifficulty]);
+ PlayState.loadWeek(event.week, event.difficulty);
new FlxTimer().start(1, function(tmr:FlxTimer)
{
FlxG.switchState(new PlayState());
});
- weekSprites.members[curWeek].startFlashing();
+ weekSprites.members[event.weekID].startFlashing();
}
}
diff --git a/source/lime/system/System.hx b/source/lime/system/System.hx
index 98efafe3..64f8c771 100644
--- a/source/lime/system/System.hx
+++ b/source/lime/system/System.hx
@@ -367,7 +367,10 @@ class System
#elseif mac
Sys.command("/usr/bin/open", [path]);
#elseif linux
- Sys.command("/usr/bin/xdg-open", [path]);
+ // generally `xdg-open` should work in every distro
+ var cmd = Sys.command("xdg-open", [path, "&"]);
+ // run old command JUST IN CASE it fails, which it shouldn't
+ if (cmd != 0) cmd = Sys.command("/usr/bin/xdg-open", [path, "&"]);
#elseif (js && html5)
Browser.window.open(path, "_blank");
#elseif flash