Skip to content

Commit

Permalink
Small optimizations
Browse files Browse the repository at this point in the history
  • Loading branch information
NeeEoo committed Dec 1, 2023
1 parent 52f0612 commit c050ea7
Show file tree
Hide file tree
Showing 8 changed files with 186 additions and 179 deletions.
194 changes: 97 additions & 97 deletions commandline/Main.hx
Original file line number Diff line number Diff line change
Expand Up @@ -3,111 +3,111 @@ package;
import commands.*;

class Main {
public static var commands:Array<Command> = [];
public static var commands:Array<Command> = [];

public static function initCommands() {
commands = [
{
names: ["setup"],
doc: "Setups (or updates) all libraries required for the engine.",
func: Update.main,
dDoc: "This command runs through all libraries in libs.xml, and install them.\nIf they're already installed, they will be updated."
},
{
names: ["help", null],
doc: "Shows help. Pass a command name to get additional help.",
func: help,
dDoc: "Usage: help <cmd>\n\nFor example, use \"cne help test\" to get additional help on the test command."
},
{
names: ["test"],
doc: "Creates a non final test build, then runs it.",
func: Compiler.test,
dDoc: "Usage: test <optional args>\n" +
"\nThis will create a quick debug build binded to the source then run it, which means:" +
"\n- The assets WON'T be copied over - Assets will be read from the game's source." +
"\n- This build WON'T be ready for release - Running anywhere else than in the bin folder will result in a crash from missing assets" +
"\n- This build will also use the mods folder from the source directory." +
"\n\nIf you want a full build which contains all assets, run \"cne release\" or \"cne test-release\"" +
"\nAdditional arguments will be sent to the lime compiler."
},
{
names: ["build"],
doc: "Creates a non final test build, without running it.",
func: Compiler.build,
dDoc: "Usage: build <optional arguments>\n" +
"\nThis will create a quick debug build binded to the source then run it, which means:" +
"\n- The assets WON'T be copied over - Assets will be read from the game's source." +
"\n- This build WON'T be ready for release - Running anywhere else than in the bin folder will result in a crash from missing assets" +
"\n- This build will also use the mods folder from the source directory." +
"\n\nIf you want a full build which contains all assets, run \"cne release\" or \"cne test-release\"" +
"\nAdditional arguments will be sent to the lime compiler."
},
{
names: ["release"],
doc: "Creates a final non debug build, containing all assets.",
func: Compiler.release,
dDoc: "Usage: release <optional arguments>\n" +
"\nThis will create a final ready-for-release build, which means this build will be able to be release on websites such as GameBanana without worrying about source-dependant stuff."
},
{
names: ["test-release"],
doc: "Creates a final non debug build, containing all assets.",
func: Compiler.testRelease,
dDoc: "Usage: release <optional arguments>\n" +
"\nThis will create and run a final ready-for-release build, which means this build will be able to be release on websites such as GameBanana without worrying about source-dependant stuff."
}
];
}
public static function initCommands() {
commands = [
{
names: ["setup"],
doc: "Setups (or updates) all libraries required for the engine.",
func: Update.main,
dDoc: "This command runs through all libraries in libs.xml, and install them.\nIf they're already installed, they will be updated."
},
{
names: ["help", null],
doc: "Shows help. Pass a command name to get additional help.",
func: help,
dDoc: "Usage: help <cmd>\n\nFor example, use \"cne help test\" to get additional help on the test command."
},
{
names: ["test"],
doc: "Creates a non final test build, then runs it.",
func: Compiler.test,
dDoc: "Usage: test <optional args>\n" +
"\nThis will create a quick debug build binded to the source then run it, which means:" +
"\n- The assets WON'T be copied over - Assets will be read from the game's source." +
"\n- This build WON'T be ready for release - Running anywhere else than in the bin folder will result in a crash from missing assets" +
"\n- This build will also use the mods folder from the source directory." +
"\n\nIf you want a full build which contains all assets, run \"cne release\" or \"cne test-release\"" +
"\nAdditional arguments will be sent to the lime compiler."
},
{
names: ["build"],
doc: "Creates a non final test build, without running it.",
func: Compiler.build,
dDoc: "Usage: build <optional arguments>\n" +
"\nThis will create a quick debug build binded to the source then run it, which means:" +
"\n- The assets WON'T be copied over - Assets will be read from the game's source." +
"\n- This build WON'T be ready for release - Running anywhere else than in the bin folder will result in a crash from missing assets" +
"\n- This build will also use the mods folder from the source directory." +
"\n\nIf you want a full build which contains all assets, run \"cne release\" or \"cne test-release\"" +
"\nAdditional arguments will be sent to the lime compiler."
},
{
names: ["release"],
doc: "Creates a final non debug build, containing all assets.",
func: Compiler.release,
dDoc: "Usage: release <optional arguments>\n" +
"\nThis will create a final ready-for-release build, which means this build will be able to be release on websites such as GameBanana without worrying about source-dependant stuff."
},
{
names: ["test-release"],
doc: "Creates a final non debug build, containing all assets.",
func: Compiler.testRelease,
dDoc: "Usage: release <optional arguments>\n" +
"\nThis will create and run a final ready-for-release build, which means this build will be able to be release on websites such as GameBanana without worrying about source-dependant stuff."
}
];
}

public static function main() {
initCommands();
var args = Sys.args();
var commandName = args.shift();
if (commandName != null)
commandName = commandName.toLowerCase();
for(c in commands) {
if (c.names.contains(commandName)) {
c.func(args);
return;
}
}
}
public static function main() {
initCommands();
var args = Sys.args();
var commandName = args.shift();
if (commandName != null)
commandName = commandName.toLowerCase();
for(c in commands) {
if (c.names.contains(commandName)) {
c.func(args);
return;
}
}
}

public static function help(args:Array<String>) {
var cmdName = args.shift();
if (cmdName != null) {
cmdName = cmdName.toLowerCase();
public static function help(args:Array<String>) {
var cmdName = args.shift();
if (cmdName != null) {
cmdName = cmdName.toLowerCase();

var matchingCommand = null;
for(c in commands) if (c.names.contains(cmdName)) {
matchingCommand = c;
break;
}
var matchingCommand = null;
for(c in commands) if (c.names.contains(cmdName)) {
matchingCommand = c;
break;
}

if (matchingCommand == null) {
Sys.println('help - Command named ${cmdName} not found.');
return;
}
if (matchingCommand == null) {
Sys.println('help - Command named ${cmdName} not found.');
return;
}

Sys.println('${matchingCommand.names.join(", ")}');
Sys.println("---");
Sys.println(matchingCommand.dDoc);
Sys.println('${matchingCommand.names.join(", ")}');
Sys.println("---");
Sys.println(matchingCommand.dDoc);

return;
}
// shows help
Sys.println("Codename Engine Command Line utility");
Sys.println('Available commands (${commands.length}):\n');
for(line in commands) {
Sys.println('${line.names.join(", ")} - ${line.doc}');
}
}
return;
}
// shows help
Sys.println("Codename Engine Command Line utility");
Sys.println('Available commands (${commands.length}):\n');
for(line in commands) {
Sys.println('${line.names.join(", ")} - ${line.doc}');
}
}
}

typedef Command = {
var names:Array<String>;
var func:Array<String>->Void;
var ?doc:String;
var ?dDoc:String;
var names:Array<String>;
var func:Array<String>->Void;
var ?doc:String;
var ?dDoc:String;
}
58 changes: 29 additions & 29 deletions commandline/commands/Compiler.hx
Original file line number Diff line number Diff line change
@@ -1,35 +1,35 @@
package commands;

class Compiler {
public static function test(args:Array<String>) {
__build(args, ["test", getBuildTarget(), "-D", "TEST_BUILD"]);
}
public static function build(args:Array<String>) {
__build(args, ["build", getBuildTarget(), "-D", "TEST_BUILD"]);
}
public static function release(args:Array<String>) {
__build(args, ["build", getBuildTarget()]);
}
public static function testRelease(args:Array<String>) {
__build(args, ["test", getBuildTarget()]);
}
public static function test(args:Array<String>) {
__build(args, ["test", getBuildTarget(), "-D", "TEST_BUILD"]);
}
public static function build(args:Array<String>) {
__build(args, ["build", getBuildTarget(), "-D", "TEST_BUILD"]);
}
public static function release(args:Array<String>) {
__build(args, ["build", getBuildTarget()]);
}
public static function testRelease(args:Array<String>) {
__build(args, ["test", getBuildTarget()]);
}

private static function __build(args:Array<String>, arg:Array<String>) {
for(a in args)
arg.push(a);
Sys.command("lime", arg);
}
private static function __build(args:Array<String>, arg:Array<String>) {
for(a in args)
arg.push(a);
Sys.command("lime", arg);
}

private static function getBuildTarget() {
return switch(Sys.systemName()) {
case "Windows":
"windows";
case "Mac":
"macos";
case "Linux":
"linux";
case def:
def.toLowerCase();
}
}
private static function getBuildTarget() {
return switch(Sys.systemName()) {
case "Windows":
"windows";
case "Mac":
"macos";
case "Linux":
"linux";
case def:
def.toLowerCase();
}
}
}
78 changes: 39 additions & 39 deletions commandline/commands/Update.hx
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@ import sys.io.Process;
import sys.FileSystem;

class Update {
public static function main(args:Array<String>) {
public static function main(args:Array<String>) {
prettyPrint("Preparing installation...");

// to prevent messing with currently installed libs
if (!FileSystem.exists('.haxelib'))
FileSystem.createDirectory('.haxelib');
var libs:Array<Library> = [];
var libsXML:Access = new Access(Xml.parse(File.getContent('./libs.xml')).firstElement());
if (!FileSystem.exists('.haxelib'))
FileSystem.createDirectory('.haxelib');

var libs:Array<Library> = [];
var libsXML:Access = new Access(Xml.parse(File.getContent('./libs.xml')).firstElement());

for (libNode in libsXML.elements) {
var lib:Library = {
Expand All @@ -33,23 +33,23 @@ class Update {
libs.push(lib);
}

for(lib in libs) {
// install libs
var globalism = lib.global == "true" ? "--global" : "";
switch(lib.type) {
case "lib":
prettyPrint((lib.global == "true" ? "Globally installing" : "Locally installing") + ' "${lib.name}"...');
Sys.command('haxelib $globalism install ${lib.name} ${lib.version != null ? " " + lib.version : " "}');
case "git":
prettyPrint((lib.global == "true" ? "Globally installing" : "Locally installing") + ' "${lib.name}" from git url "${lib.url}"');
if (lib.ref != null)
Sys.command('haxelib $globalism git ${lib.name} ${lib.url} ${lib.ref}');
else
Sys.command('haxelib $globalism git ${lib.name} ${lib.url}');
default:
prettyPrint('Cannot resolve library of type "${lib.type}"');
}
}
for(lib in libs) {
// install libs
var globalism = lib.global == "true" ? "--global" : "";
switch(lib.type) {
case "lib":
prettyPrint((lib.global == "true" ? "Globally installing" : "Locally installing") + ' "${lib.name}"...');
Sys.command('haxelib $globalism install ${lib.name} ${lib.version != null ? " " + lib.version : " "}');
case "git":
prettyPrint((lib.global == "true" ? "Globally installing" : "Locally installing") + ' "${lib.name}" from git url "${lib.url}"');
if (lib.ref != null)
Sys.command('haxelib $globalism git ${lib.name} ${lib.url} ${lib.ref}');
else
Sys.command('haxelib $globalism git ${lib.name} ${lib.url}');
default:
prettyPrint('Cannot resolve library of type "${lib.type}"');
}
}

var proc = new Process('haxe --version');
proc.exitCode(true);
Expand All @@ -76,24 +76,24 @@ class Update {
}
}
}
}
}

public static function prettyPrint(text:String) {
var header = "══════";
for(i in 0...(text.length-(text.lastIndexOf("\n")+1)))
header += "";
Sys.println("");
Sys.println('$header');
Sys.println('$text');
Sys.println('$header');
}
public static function prettyPrint(text:String) {
var header = "══════";
for(i in 0...(text.length-(text.lastIndexOf("\n")+1)))
header += "";
Sys.println("");
Sys.println('$header');
Sys.println('$text');
Sys.println('$header');
}
}

typedef Library = {
var name:String;
var type:String;
var ?global:String;
var ?version:String;
var ?ref:String;
var ?url:String;
var name:String;
var type:String;
var ?global:String;
var ?version:String;
var ?ref:String;
var ?url:String;
}
2 changes: 1 addition & 1 deletion libs.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<libraries>
<!-- OpenFL & Lime (Required for Flixel) -->
<lib name="openfl" />
<lib name="lime" version="8.0.2"/>
<lib name="lime" />

<!-- Flixel -->
<git name="flixel" url="https://github.com/FNF-CNE-Devs/flixel" />
Expand Down
3 changes: 2 additions & 1 deletion source/funkin/backend/system/framerate/SystemInfo.hx
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,8 @@ class SystemInfo extends FramerateCategory {
}

static function formatSysInfo() {
if (osInfo != "Unknown") __formattedSysText = 'System: $osInfo';
__formattedSysText = "";
if (osInfo != "Unknown") __formattedSysText += 'System: $osInfo';
if (cpuName != "Unknown") __formattedSysText += '\nCPU: $cpuName ${openfl.system.Capabilities.cpuArchitecture} ${(openfl.system.Capabilities.supports64BitProcesses ? '64-Bit' : '32-Bit')}';
if (gpuName != cpuName || vRAM != "Unknown") {
var gpuNameKnown = gpuName != "Unknown" && gpuName != cpuName;
Expand Down
Loading

0 comments on commit c050ea7

Please sign in to comment.