diff --git a/ansi/build.gradle b/ansi/build.gradle
new file mode 100644
index 00000000..2086aa0b
--- /dev/null
+++ b/ansi/build.gradle
@@ -0,0 +1,135 @@
+/*
+ * STAROPENSOURCE ENGINE SOURCE FILE
+ * Copyright (c) 2024 The StarOpenSource Engine Contributors
+ * Licensed under the GNU Affero General Public License v3
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+import java.nio.file.Files
+// Plugins
+plugins {
+ id("java")
+ id("io.freefair.lombok") version("${pluginLombok}")
+ id("maven-publish")
+}
+
+// Project dependencies
+dependencies {
+ // -> Runtime <-
+ // Lombok
+ compileOnly("org.projectlombok:lombok:${dependencyLombok}")
+ annotationProcessor("org.projectlombok:lombok:${dependencyLombok}")
+
+ // JetBrains Annotations
+ compileOnly("org.jetbrains:annotations:${dependencyJetbrainsAnnotations}")
+
+ // ANSI support
+ implementation("org.fusesource.jansi:jansi:${dependencyJansi}")
+
+ // Project
+ implementation(project(":base"))
+
+ // -> Testing <-
+ // Jetbrains Annotations
+ testCompileOnly("org.jetbrains:annotations:${dependencyJetbrainsAnnotations}")
+
+ // JUnit
+ testImplementation(platform("org.junit:junit-bom:${dependencyJunit}"))
+ testImplementation("org.junit.jupiter:junit-jupiter")
+ testRuntimeOnly("org.junit.platform:junit-platform-launcher")
+}
+
+// Fix delombok task
+delombok.doFirst {
+ File target = file("${project.projectDir}/src/main/module-info.java")
+ File source = file("${project.projectDir}/src/main/java/module-info.java")
+
+ target.delete()
+ source.renameTo(target)
+}
+delombok.doLast {
+ File target = file("${project.projectDir}/src/main/java/module-info.java")
+ File source = file("${project.projectDir}/src/main/module-info.java")
+
+ target.delete()
+ source.renameTo(target)
+}
+
+// Javadoc configuration
+javadoc {
+ outputs.upToDateWhen { false } // Force task execution
+ dependsOn(delombok) // Make sure the source is delomboked first
+
+ javadoc {
+ setClasspath(files(project.sourceSets.main.compileClasspath)) // Include dependencies
+
+ options {
+ if (new File(projectDir, "src/main/javadoc/theme.css").exists())
+ stylesheetFile = new File(projectDir, "src/main/javadoc/theme.css") // Theming is cool :3
+ setMemberLevel(JavadocMemberLevel.PUBLIC) // Only display public stuff
+ setOverview("src/main/javadoc/overview.html") // We want a custom overview page to greet the visitor
+ setLocale("en_US") // 你好
+
+ setJFlags([
+ "-Duser.language=en_US" // See above
+ ])
+ }
+ }
+}
+
+// Unit testing configuration
+test {
+ useJUnitPlatform()
+
+ setMaxParallelForks(project.hasProperty("jobs") ? Integer.parseInt((String) project.property("jobs")) : 8)
+ setForkEvery(1)
+ setFailFast(true)
+
+ testLogging {
+ events("passed", "skipped", "failed")
+ }
+}
+
+// Include javadoc and source jar during publishing
+java {
+ withJavadocJar()
+ withSourcesJar()
+}
+
+// Build publishing configuration
+// Note: You can safely ignore any errors or warnings thrown by your IDE here
+publishing {
+ repositories {
+ maven {
+ name = "staropensource"
+ url = uri("https://mvn.staropensource.de/sosengine")
+ credentials(org.gradle.api.credentials.PasswordCredentials)
+ authentication {
+ //noinspection GroovyAssignabilityCheck
+ basic (BasicAuthentication)
+ }
+ }
+ }
+ publications {
+ //noinspection GroovyAssignabilityCheck
+ maven (MavenPublication) {
+ groupId = group
+ artifactId = "ansi"
+ version = version
+ //noinspection GroovyAssignabilityCheck
+ from components.java
+ }
+ }
+}
diff --git a/ansi/gradle b/ansi/gradle
new file mode 120000
index 00000000..3337596a
--- /dev/null
+++ b/ansi/gradle
@@ -0,0 +1 @@
+../gradle
\ No newline at end of file
diff --git a/ansi/gradlew b/ansi/gradlew
new file mode 120000
index 00000000..502f5a2d
--- /dev/null
+++ b/ansi/gradlew
@@ -0,0 +1 @@
+../gradlew
\ No newline at end of file
diff --git a/ansi/gradlew.bat b/ansi/gradlew.bat
new file mode 120000
index 00000000..28401328
--- /dev/null
+++ b/ansi/gradlew.bat
@@ -0,0 +1 @@
+../gradlew.bat
\ No newline at end of file
diff --git a/base/src/main/java/de/staropensource/sosengine/base/logging/implementation/ColoredLoggerImpl.java b/ansi/src/main/java/de/staropensource/sosengine/ansi/AnsiLoggerImpl.java
similarity index 91%
rename from base/src/main/java/de/staropensource/sosengine/base/logging/implementation/ColoredLoggerImpl.java
rename to ansi/src/main/java/de/staropensource/sosengine/ansi/AnsiLoggerImpl.java
index a72a3c53..5445b3e6 100644
--- a/base/src/main/java/de/staropensource/sosengine/base/logging/implementation/ColoredLoggerImpl.java
+++ b/ansi/src/main/java/de/staropensource/sosengine/ansi/AnsiLoggerImpl.java
@@ -17,14 +17,13 @@
* along with this program. If not, see .
*/
-package de.staropensource.sosengine.base.logging.implementation;
+package de.staropensource.sosengine.ansi;
import de.staropensource.sosengine.base.EngineConfiguration;
import de.staropensource.sosengine.base.classes.LoggerImpl;
import de.staropensource.sosengine.base.logging.Logger;
import de.staropensource.sosengine.base.types.logging.LogIssuer;
import de.staropensource.sosengine.base.types.logging.LogLevel;
-import de.staropensource.sosengine.base.utility.converter.AnsiShortcodeConverter;
import org.fusesource.jansi.Ansi;
import org.fusesource.jansi.AnsiConsole;
import org.jetbrains.annotations.NotNull;
@@ -37,13 +36,13 @@ import org.jetbrains.annotations.NotNull;
* @since v1-alpha0
*/
@SuppressWarnings({ "unused" })
-public class ColoredLoggerImpl implements LoggerImpl {
+public class AnsiLoggerImpl implements LoggerImpl {
/**
* Constructs this class.
*
* @since v1-alpha0
*/
- public ColoredLoggerImpl() {}
+ public AnsiLoggerImpl() {}
/** {@inheritDoc} */
@NotNull
diff --git a/base/src/main/java/de/staropensource/sosengine/base/utility/converter/AnsiShortcodeConverter.java b/ansi/src/main/java/de/staropensource/sosengine/ansi/AnsiShortcodeConverter.java
similarity index 98%
rename from base/src/main/java/de/staropensource/sosengine/base/utility/converter/AnsiShortcodeConverter.java
rename to ansi/src/main/java/de/staropensource/sosengine/ansi/AnsiShortcodeConverter.java
index 7ec83104..943ce744 100644
--- a/base/src/main/java/de/staropensource/sosengine/base/utility/converter/AnsiShortcodeConverter.java
+++ b/ansi/src/main/java/de/staropensource/sosengine/ansi/AnsiShortcodeConverter.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package de.staropensource.sosengine.base.utility.converter;
+package de.staropensource.sosengine.ansi;
import de.staropensource.sosengine.base.classes.ShortcodeParserSkeleton;
import de.staropensource.sosengine.base.exceptions.ParserException;
diff --git a/ansi/src/main/java/de/staropensource/sosengine/ansi/AnsiSubsystem.java b/ansi/src/main/java/de/staropensource/sosengine/ansi/AnsiSubsystem.java
new file mode 100644
index 00000000..877140d7
--- /dev/null
+++ b/ansi/src/main/java/de/staropensource/sosengine/ansi/AnsiSubsystem.java
@@ -0,0 +1,90 @@
+/*
+ * STAROPENSOURCE ENGINE SOURCE FILE
+ * Copyright (c) 2024 The StarOpenSource Engine Contributors
+ * Licensed under the GNU Affero General Public License v3
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+package de.staropensource.sosengine.ansi;
+
+import de.staropensource.sosengine.base.annotations.EngineSubsystem;
+import de.staropensource.sosengine.base.classes.SubsystemMainClass;
+import de.staropensource.sosengine.base.data.info.EngineInformation;
+import de.staropensource.sosengine.base.data.versioning.StarOpenSourceVersioningSystem;
+import de.staropensource.sosengine.base.logging.Logger;
+import de.staropensource.sosengine.base.logging.LoggerInstance;
+import de.staropensource.sosengine.base.types.CodePart;
+import de.staropensource.sosengine.base.types.DependencyVector;
+import de.staropensource.sosengine.base.types.logging.LogIssuer;
+import lombok.Getter;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * Main object for the ANSI Compatibility subsystem.
+ *
+ * @since v1-alpha0
+ */
+@SuppressWarnings({ "unused", "JavadocDeclaration", "JavadocBlankLines" })
+@EngineSubsystem
+public final class AnsiSubsystem implements SubsystemMainClass {
+ /**
+ * Contains the class instance.
+ *
+ * @since v1-alpha0
+ *
+ * -- GETTER --
+ * Returns the class instance.
+ *
+ * @return class instance unless the subsystem is uninitialized
+ * @since v1-alpha0
+ */
+ @Getter
+ private static AnsiSubsystem instance = null;
+
+ /** {@inheritDoc} */
+ private final LoggerInstance logger = new LoggerInstance(new LogIssuer(getClass(), CodePart.ENGINE));
+
+ /**
+ * Constructs this subsystem.
+ */
+ public AnsiSubsystem() {
+ // Check if subsystem has already initialized
+ if (instance == null)
+ instance = this;
+ else {
+ instance.logger.crash("The subsystem tried to initialize twice");
+ }
+ }
+
+ /** {@inheritDoc} */
+ @NotNull
+ @Override
+ public String getName() {
+ return "ansi";
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void initializeSubsystem() {
+ Logger.setLoggerImplementation(new AnsiLoggerImpl());
+ }
+
+ /** {@inheritDoc} */
+ @NotNull
+ @Override
+ public DependencyVector getDependencyVector() {
+ return new DependencyVector("ansi", StarOpenSourceVersioningSystem.class, EngineInformation.getVersioningString());
+ }
+}
diff --git a/ansi/src/main/java/de/staropensource/sosengine/ansi/package-info.java b/ansi/src/main/java/de/staropensource/sosengine/ansi/package-info.java
new file mode 100644
index 00000000..cc4ffa3e
--- /dev/null
+++ b/ansi/src/main/java/de/staropensource/sosengine/ansi/package-info.java
@@ -0,0 +1,23 @@
+/*
+ * STAROPENSOURCE ENGINE SOURCE FILE
+ * Copyright (c) 2024 The StarOpenSource Engine Contributors
+ * Licensed under the GNU Affero General Public License v3
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+/**
+ * Contains the ANSI subsystem code.
+ */
+package de.staropensource.sosengine.ansi;
diff --git a/ansi/src/main/java/module-info.java b/ansi/src/main/java/module-info.java
new file mode 100644
index 00000000..a2bb3a4f
--- /dev/null
+++ b/ansi/src/main/java/module-info.java
@@ -0,0 +1,27 @@
+/**
+ * Defines the ANSI subsystem, allowing the engine to
+ * use ANSI escape codes using the Jansi library.
+ *
+ * @since v1-alpha2
+ */
+module sosengine.ansi {
+ // Dependencies
+ // -> Java <-
+ requires transitive java.management;
+
+ // -> Engine <-
+ requires transitive sosengine.base;
+
+ // -> Common stuff <-
+ requires transitive static lombok;
+ requires transitive org.jetbrains.annotations;
+
+ // -> Subystem-specific dependencies <-
+ requires org.fusesource.jansi;
+
+ // API access
+ exports de.staropensource.sosengine.ansi;
+
+ // Reflection access
+ opens de.staropensource.sosengine.ansi;
+}
diff --git a/base/build.gradle b/base/build.gradle
index 85a8150f..93bd4478 100644
--- a/base/build.gradle
+++ b/base/build.gradle
@@ -36,9 +36,6 @@ dependencies {
// JetBrains Annotations
compileOnly("org.jetbrains:annotations:${dependencyJetbrainsAnnotations}")
- // ANSI support
- implementation("org.fusesource.jansi:jansi:${dependencyJansi}")
-
// Reflections
implementation("org.reflections:reflections:${dependencyReflections}")
diff --git a/base/src/main/java/de/staropensource/sosengine/base/EngineConfiguration.java b/base/src/main/java/de/staropensource/sosengine/base/EngineConfiguration.java
index 49646811..7f188530 100644
--- a/base/src/main/java/de/staropensource/sosengine/base/EngineConfiguration.java
+++ b/base/src/main/java/de/staropensource/sosengine/base/EngineConfiguration.java
@@ -19,14 +19,15 @@
package de.staropensource.sosengine.base;
+import de.staropensource.sosengine.base.classes.ShortcodeParserSkeleton;
import de.staropensource.sosengine.base.classes.SubsystemConfiguration;
+import de.staropensource.sosengine.base.classes.helpers.EventHelper;
import de.staropensource.sosengine.base.logging.CrashHandler;
import de.staropensource.sosengine.base.logging.Logger;
import de.staropensource.sosengine.base.types.CodePart;
import de.staropensource.sosengine.base.types.logging.LogIssuer;
import de.staropensource.sosengine.base.types.logging.LogLevel;
import de.staropensource.sosengine.base.types.vectors.Vec2;
-import de.staropensource.sosengine.base.utility.converter.AnsiShortcodeConverter;
import de.staropensource.sosengine.base.utility.parser.PropertyParser;
import lombok.Getter;
import org.jetbrains.annotations.NotNull;
@@ -91,7 +92,7 @@ public final class EngineConfiguration implements SubsystemConfiguration {
* Gets the value for {@link #debug}.
*
* @return variable value
- * @see EngineConfiguration#debug
+ * @see #debug
* @since v1-alpha0
*/
private boolean debug;
@@ -99,47 +100,47 @@ public final class EngineConfiguration implements SubsystemConfiguration {
/**
* If enabled, all called events will be logged.
*
- * @see de.staropensource.sosengine.base.classes.helpers.EventHelper#logCall(Class, Object...)
+ * @see EventHelper#logCall(Class, Object...)
* @since v1-alpha0
*
* -- GETTER --
* Gets the value for {@link #debugEvents}.
*
* @return variable value
- * @see EngineConfiguration#debugEvents
+ * @see #debugEvents
* @since v1-alpha0
*/
private boolean debugEvents;
/**
- * If enabled, very verbose messages about the {@link AnsiShortcodeConverter}'s internals will be printed.
+ * If enabled, very verbose messages about the {@link ShortcodeParserSkeleton}'s internals will be printed.
* Don't enable unless you want to work on it.
*
- * @see AnsiShortcodeConverter
+ * @see ShortcodeParserSkeleton
* @since v1-alpha0
*
* -- GETTER --
* Gets the value for {@link #debugShortcodeConverter}.
*
* @return variable value
- * @see EngineConfiguration#debugShortcodeConverter
+ * @see #debugShortcodeConverter
* @since v1-alpha0
*/
private boolean debugShortcodeConverter;
/**
- * If enabled, invalid shortcodes will be logged by the {@link AnsiShortcodeConverter}.
- * The message will be printed as a silent warning.
+ * If enabled, invalid shortcodes will be logged by the {@link ShortcodeParserSkeleton}.
+ * The message will be printed as a {@link LogLevel#SILENT_WARNING}.
*
- * @see AnsiShortcodeConverter
- * @see EngineConfiguration#loggerLevel
+ * @see ShortcodeParserSkeleton
+ * @see #loggerLevel
* @since v1-alpha0
*
* -- GETTER --
* Gets the value for {@link #errorShortcodeConverter}.
*
* @return variable value
- * @see EngineConfiguration#errorShortcodeConverter
+ * @see #errorShortcodeConverter
* @since v1-alpha0
*/
private boolean errorShortcodeConverter;
@@ -148,7 +149,7 @@ public final class EngineConfiguration implements SubsystemConfiguration {
* If enabled, will makes the {@link Logger} work asynchronous, in a separate platform thread.
* Don't disable unless you want your application to run extremely slowly.
*
- * @see EngineConfiguration#loggerPollingSpeed
+ * @see #loggerPollingSpeed
* @see Thread
* @since v1-alpha0
*
@@ -156,7 +157,7 @@ public final class EngineConfiguration implements SubsystemConfiguration {
* Gets the value for {@link #optimizeLogging}.
*
* @return variable value
- * @see EngineConfiguration#optimizeLogging
+ * @see #optimizeLogging
* @since v1-alpha0
*/
private boolean optimizeLogging;
@@ -172,7 +173,7 @@ public final class EngineConfiguration implements SubsystemConfiguration {
* Gets the value for {@link #optimizeEvents}.
*
* @return variable value
- * @see EngineConfiguration#optimizeEvents
+ * @see #optimizeEvents
* @since v1-alpha0
*/
private boolean optimizeEvents;
@@ -192,7 +193,7 @@ public final class EngineConfiguration implements SubsystemConfiguration {
* Gets the value for {@link #optimizeSubsystemInitialization}.
*
* @return variable value
- * @see EngineConfiguration#optimizeSubsystemInitialization
+ * @see #optimizeSubsystemInitialization
* @since v1-alpha2
*/
private boolean optimizeSubsystemInitialization;
@@ -207,7 +208,7 @@ public final class EngineConfiguration implements SubsystemConfiguration {
* Gets the value for {@link #loggerLevel}.
*
* @return variable value
- * @see EngineConfiguration#loggerLevel
+ * @see #loggerLevel
* @since v1-alpha0
*/
private LogLevel loggerLevel;
@@ -222,7 +223,7 @@ public final class EngineConfiguration implements SubsystemConfiguration {
* Gets the value for {@link #loggerTemplate}
*
* @return variable value
- * @see EngineConfiguration#loggerTemplate
+ * @see #loggerTemplate
* @since v1-alpha0
*/
private String loggerTemplate;
@@ -238,7 +239,7 @@ public final class EngineConfiguration implements SubsystemConfiguration {
* Gets the value for {@link #loggerImmediateShutdown}.
*
* @return variable value
- * @see EngineConfiguration#loggerImmediateShutdown
+ * @see #loggerImmediateShutdown
* @since v1-alpha0
*/
private boolean loggerImmediateShutdown;
@@ -253,7 +254,7 @@ public final class EngineConfiguration implements SubsystemConfiguration {
* Gets the value for {@link #loggerForceStandardOutput}.
*
* @return variable value
- * @see EngineConfiguration#loggerForceStandardOutput
+ * @see #loggerForceStandardOutput
* @since v1-alpha0
*/
private boolean loggerForceStandardOutput;
@@ -262,14 +263,14 @@ public final class EngineConfiguration implements SubsystemConfiguration {
* Determines how fast the logging thread will poll for queued messages.
* Only applies if {@code optimizeLogging} is turned on.
*
- * @see EngineConfiguration#optimizeLogging
+ * @see #optimizeLogging
* @since v1-alpha1
*
* -- GETTER --
* Gets the value for {@link #loggerForceStandardOutput}.
*
* @return variable value
- * @see EngineConfiguration#loggerForceStandardOutput
+ * @see #loggerForceStandardOutput
* @since v1-alpha1
*/
private int loggerPollingSpeed;
@@ -288,7 +289,7 @@ public final class EngineConfiguration implements SubsystemConfiguration {
* Gets the value for {@link #hideFullTypePath}.
*
* @return variable value
- * @see EngineConfiguration#hideFullTypePath
+ * @see #hideFullTypePath
* @since v1-alpha2
*/
private boolean hideFullTypePath;
diff --git a/base/src/main/java/de/staropensource/sosengine/base/logging/Logger.java b/base/src/main/java/de/staropensource/sosengine/base/logging/Logger.java
index fb962afb..f67a90b4 100644
--- a/base/src/main/java/de/staropensource/sosengine/base/logging/Logger.java
+++ b/base/src/main/java/de/staropensource/sosengine/base/logging/Logger.java
@@ -27,7 +27,7 @@ import de.staropensource.sosengine.base.classes.helpers.EventHelper;
import de.staropensource.sosengine.base.events.LogEvent;
import de.staropensource.sosengine.base.internal.placeholders.logger.*;
import de.staropensource.sosengine.base.internal.types.QueuedLogMessage;
-import de.staropensource.sosengine.base.logging.implementation.ColoredLoggerImpl;
+import de.staropensource.sosengine.base.logging.implementation.PlainLoggerImpl;
import de.staropensource.sosengine.base.types.logging.LogIssuer;
import de.staropensource.sosengine.base.types.logging.LogLevel;
import de.staropensource.sosengine.base.types.logging.LogRule;
@@ -75,7 +75,7 @@ public final class Logger {
@NotNull
@Getter
@Setter
- private static LoggerImpl loggerImplementation = new ColoredLoggerImpl();
+ private static LoggerImpl loggerImplementation = new PlainLoggerImpl();
/**
* Refers to the logging thread.
diff --git a/base/src/main/java/module-info.java b/base/src/main/java/module-info.java
index 07ca6291..f884ca1e 100644
--- a/base/src/main/java/module-info.java
+++ b/base/src/main/java/module-info.java
@@ -8,7 +8,6 @@ module sosengine.base {
requires transitive java.management;
requires transitive static lombok;
requires transitive org.jetbrains.annotations;
- requires org.fusesource.jansi;
requires org.reflections;
// API access
diff --git a/build.gradle b/build.gradle
index 34464856..2f8dd7db 100644
--- a/build.gradle
+++ b/build.gradle
@@ -26,13 +26,9 @@ plugins {
// Register task for Javadoc generation for all subsystems
tasks.register("javadocAll", Javadoc) {
- // Subprojects to document
- def subprojects = [
- ":base",
- ":graphics",
- ":graphics:opengl",
- ":graphics:vulkan",
- ":slf4j-compat",
+ // Subprojects to exclude
+ def nodoc = [
+ ":testapp",
]
// Task metadata
@@ -40,8 +36,23 @@ tasks.register("javadocAll", Javadoc) {
setGroup("documentation")
// Make sure the source is delomboked first
- for (String subproject : subprojects)
- dependsOn(project(subproject).delombok)
+ boolean match
+ for (Project subproject : getSubprojects()) {
+ match = false
+
+ // Check if name is in 'nodoc' list
+ for (String name : nodoc)
+ if (subproject.getName() == name)
+ match = true
+
+ if (match)
+ continue
+
+ // Add dependsOn if delombok task is found
+ try {
+ dependsOn(subproject.getTasks().named("delombok"))
+ } catch(UnknownTaskException ignored) {}
+ }
// Set output directory, source and classpath
setSource(subprojects.collect({ project(it).projectDir.getPath() + "/build/generated/sources/delombok/java/main/" }))
@@ -62,7 +73,7 @@ tasks.register("javadocAll", Javadoc) {
// Fix module collisions
doFirst {
- logger.log(LogLevel.WARN, "If this task fails, make sure to reset all module-info.java files using git or you may have issues.")
+ logger.log(LogLevel.WARN, "If this task fails, make sure to reset all module-info.java files using git or you may encounter issues.")
for (String subproject : subprojects) {
File source = new File(project(subproject).projectDir.getPath() + "/src/main/java/module-info.java")
diff --git a/docs/docs/welcome.md b/docs/docs/welcome.md
index 4f391e03..e5fd24b0 100644
--- a/docs/docs/welcome.md
+++ b/docs/docs/welcome.md
@@ -32,6 +32,7 @@ Subsystems on the other hand usually handle complex tasks. They provide abstract
## Available official subsystems
Besides the `base` engine, there is one stable subsystem, two experimental subsystems and one stub subsystem.
### Stable
+- [`ansi`](https://git.staropensource.de/StarOpenSource/Engine/src/branch/develop/ansi): Provides an ANSI logging implementation and a ShortcodeParserSkeleton implementation
- [`slf4j-compat`](https://git.staropensource.de/StarOpenSource/Engine/src/branch/develop/slf4j-compat): Provides [SLF4J](https://slf4j.org/) compatibility logger that redirects all log calls to the engine.
### Experimental
- [`graphics`](https://git.staropensource.de/StarOpenSource/Engine/src/branch/develop/graphics): Provides interfaces and classes meant to be extended by Graphics APIs.
diff --git a/settings.gradle b/settings.gradle
index 6ae5f00c..a4f30230 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -17,12 +17,13 @@
* along with this program. If not, see .
*/
-rootProject.name = "sosengine"
+rootProject.setName("sosengine")
-include "base"
-include "slf4j-compat"
-include "graphics"
-include "graphics:glfw"
-include "graphics:opengl"
-include "graphics:vulkan"
-include "testapp"
+include("base")
+include("ansi")
+include("slf4j-compat")
+include("graphics")
+include("graphics:glfw")
+include("graphics:opengl")
+include("graphics:vulkan")
+include("testapp")
diff --git a/testapp/build.gradle b/testapp/build.gradle
index c81fec56..7ea04985 100644
--- a/testapp/build.gradle
+++ b/testapp/build.gradle
@@ -40,6 +40,7 @@ dependencies {
// -> Project <-
implementation(project(":base"))
+ implementation(project(":ansi"))
implementation(project(":slf4j-compat"))
implementation(project(":graphics"))
implementation(project(":graphics:vulkan"))