diff --git a/pom.xml b/pom.xml
index ebbd45f..85dbb36 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
de.extio
game-engine
- 1.0.1
+ 1.0.2
25
diff --git a/src/main/java/de/extio/game_engine/renderer/RendererLoop.java b/src/main/java/de/extio/game_engine/renderer/RendererLoop.java
index c0d1652..6789767 100644
--- a/src/main/java/de/extio/game_engine/renderer/RendererLoop.java
+++ b/src/main/java/de/extio/game_engine/renderer/RendererLoop.java
@@ -8,8 +8,7 @@ import org.slf4j.LoggerFactory;
import de.extio.game_engine.keyboard.KeyModifiers;
import de.extio.game_engine.keyboard.KeycodeRegistration;
-import de.extio.game_engine.renderer.g2d.theme.Theme;
-import de.extio.game_engine.renderer.g2d.theme.Theme;
+import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.renderer.model.options.VideoOptions;
public class RendererLoop implements Runnable {
diff --git a/src/main/java/de/extio/game_engine/renderer/ThemeManager.java b/src/main/java/de/extio/game_engine/renderer/ThemeManager.java
index be2365a..a8bd77f 100644
--- a/src/main/java/de/extio/game_engine/renderer/ThemeManager.java
+++ b/src/main/java/de/extio/game_engine/renderer/ThemeManager.java
@@ -3,8 +3,8 @@ package de.extio.game_engine.renderer;
import java.util.List;
import java.util.Optional;
+import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.resource.StaticResource;
-import de.extio.game_engine.renderer.g2d.theme.Theme;
public interface ThemeManager {
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/G2DAutoConfiguration.java b/src/main/java/de/extio/game_engine/renderer/g2d/G2DAutoConfiguration.java
index ca8a409..36ccfde 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/G2DAutoConfiguration.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/G2DAutoConfiguration.java
@@ -47,9 +47,9 @@ import de.extio.game_engine.renderer.g2d.theme.NeonThemeFactoryBean;
import de.extio.game_engine.renderer.g2d.theme.NoirThemeFactoryBean;
import de.extio.game_engine.renderer.g2d.theme.SpacecraftThemeFactoryBean;
import de.extio.game_engine.renderer.g2d.theme.SteampunkThemeFactoryBean;
-import de.extio.game_engine.renderer.g2d.theme.Theme;
import de.extio.game_engine.renderer.g2d.theme.UrbanThemeFactoryBean;
import de.extio.game_engine.renderer.g2d.theme.VintageThemeFactoryBean;
+import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.renderer.g2d.theme.TerminalThemeFactoryBean;
import de.extio.game_engine.resource.StaticResourceService;
import de.extio.game_engine.storage.StorageService;
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomButton.java b/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomButton.java
index 03acc41..d67112b 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomButton.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomButton.java
@@ -5,8 +5,8 @@ import java.awt.Graphics2D;
import java.awt.event.ActionListener;
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont;
-import de.extio.game_engine.renderer.g2d.theme.Theme;
import de.extio.game_engine.renderer.g2d.theme.G2DThemeManager;
+import de.extio.game_engine.renderer.model.Theme;
@SuppressWarnings("serial")
public class CustomButton extends CustomAbstractButton {
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomLabel.java b/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomLabel.java
index a35d1de..c7c7ab4 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomLabel.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomLabel.java
@@ -14,7 +14,7 @@ import java.util.List;
import de.extio.game_engine.renderer.ThemeManager;
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont;
-import de.extio.game_engine.renderer.g2d.theme.Theme;
+import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.renderer.model.bo.HorizontalAlignment;
import de.extio.game_engine.spatial2.model.CoordI2;
import de.extio.game_engine.spatial2.model.ImmutableCoordI2;
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomMultiLineTextArea.java b/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomMultiLineTextArea.java
index a060bb9..1d8f67c 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomMultiLineTextArea.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomMultiLineTextArea.java
@@ -23,7 +23,7 @@ import java.util.function.Consumer;
import de.extio.game_engine.renderer.ThemeManager;
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont;
-import de.extio.game_engine.renderer.g2d.theme.Theme;
+import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.spatial2.model.ImmutableCoordI2;
@SuppressWarnings("serial")
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomPopupMenu.java b/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomPopupMenu.java
index c4955e5..9833556 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomPopupMenu.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomPopupMenu.java
@@ -15,7 +15,7 @@ import java.util.Objects;
import de.extio.game_engine.renderer.ThemeManager;
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont;
import de.extio.game_engine.renderer.g2d.theme.G2DThemeManager;
-import de.extio.game_engine.renderer.g2d.theme.Theme;
+import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.renderer.model.bo.ControlRenderingBo.PopupMenuItem;
import de.extio.game_engine.spatial2.model.CoordI2;
import de.extio.game_engine.spatial2.model.ImmutableCoordI2;
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomSingleLineTextField.java b/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomSingleLineTextField.java
index b0a5eb4..7db31f5 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomSingleLineTextField.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomSingleLineTextField.java
@@ -19,7 +19,7 @@ import java.util.function.Consumer;
import de.extio.game_engine.renderer.ThemeManager;
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont;
-import de.extio.game_engine.renderer.g2d.theme.Theme;
+import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.spatial2.model.ImmutableCoordI2;
@SuppressWarnings("serial")
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomSlider.java b/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomSlider.java
index 4fe8807..a902f28 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomSlider.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomSlider.java
@@ -11,7 +11,7 @@ import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import de.extio.game_engine.renderer.ThemeManager;
-import de.extio.game_engine.renderer.g2d.theme.Theme;
+import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.spatial2.model.CoordI2;
import de.extio.game_engine.spatial2.model.ImmutableCoordI2;
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomSwitch.java b/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomSwitch.java
index 162b719..d7a434b 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomSwitch.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomSwitch.java
@@ -5,8 +5,8 @@ import java.awt.Graphics2D;
import java.awt.event.ActionListener;
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont;
-import de.extio.game_engine.renderer.g2d.theme.Theme;
import de.extio.game_engine.renderer.g2d.theme.G2DThemeManager;
+import de.extio.game_engine.renderer.model.Theme;
@SuppressWarnings("serial")
public class CustomSwitch extends CustomAbstractButton {
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomWindowPanel.java b/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomWindowPanel.java
index 4b97282..1446993 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomWindowPanel.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomWindowPanel.java
@@ -11,8 +11,8 @@ import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import de.extio.game_engine.renderer.g2d.G2DMainFrame;
-import de.extio.game_engine.renderer.g2d.theme.Theme;
import de.extio.game_engine.renderer.g2d.theme.G2DThemeManager;
+import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.spatial2.model.ImmutableCoordI2;
public class CustomWindowPanel extends Component {
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/AsciiPatternRenderer.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/AsciiPatternRenderer.java
index 42bb1a2..aaf63ad 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/AsciiPatternRenderer.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/AsciiPatternRenderer.java
@@ -5,6 +5,7 @@ import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont;
+import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.spatial2.model.CoordI2;
public class AsciiPatternRenderer implements PatternRenderer {
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/AsciiThemeFactoryBean.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/AsciiThemeFactoryBean.java
index 99ba425..daac900 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/AsciiThemeFactoryBean.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/AsciiThemeFactoryBean.java
@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean;
+import de.extio.game_engine.renderer.model.Theme;
+import de.extio.game_engine.renderer.model.color.HSBColor;
+
public class AsciiThemeFactoryBean implements FactoryBean {
@Override
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/BevelDarkThemeFactoryBean.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/BevelDarkThemeFactoryBean.java
index 85ec7f6..248a0e4 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/BevelDarkThemeFactoryBean.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/BevelDarkThemeFactoryBean.java
@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean;
+import de.extio.game_engine.renderer.model.Theme;
+import de.extio.game_engine.renderer.model.color.HSBColor;
+
public class BevelDarkThemeFactoryBean implements FactoryBean {
@Override
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/BevelLightThemeFactoryBean.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/BevelLightThemeFactoryBean.java
index c49b99d..941431c 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/BevelLightThemeFactoryBean.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/BevelLightThemeFactoryBean.java
@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean;
+import de.extio.game_engine.renderer.model.Theme;
+import de.extio.game_engine.renderer.model.color.HSBColor;
+
public class BevelLightThemeFactoryBean implements FactoryBean {
@Override
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/BevelPatternRenderer.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/BevelPatternRenderer.java
index 55e05a6..b16e413 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/BevelPatternRenderer.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/BevelPatternRenderer.java
@@ -3,6 +3,7 @@ package de.extio.game_engine.renderer.g2d.theme;
import java.awt.Color;
import java.awt.Graphics2D;
+import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.spatial2.model.CoordI2;
public class BevelPatternRenderer implements PatternRenderer {
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/BlueprintPatternRenderer.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/BlueprintPatternRenderer.java
index 03c8230..f295611 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/BlueprintPatternRenderer.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/BlueprintPatternRenderer.java
@@ -6,7 +6,7 @@ import java.awt.Graphics2D;
import java.awt.Stroke;
import java.awt.image.BufferedImage;
-
+import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.spatial2.model.CoordI2;
public class BlueprintPatternRenderer implements PatternRenderer {
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/BlueprintThemeFactoryBean.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/BlueprintThemeFactoryBean.java
index 354b2b0..4c06493 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/BlueprintThemeFactoryBean.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/BlueprintThemeFactoryBean.java
@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean;
+import de.extio.game_engine.renderer.model.Theme;
+import de.extio.game_engine.renderer.model.color.HSBColor;
+
public class BlueprintThemeFactoryBean implements FactoryBean {
@Override
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/ChroniclePatternRenderer.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/ChroniclePatternRenderer.java
index 80c13ed..faadcd6 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/ChroniclePatternRenderer.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/ChroniclePatternRenderer.java
@@ -9,6 +9,7 @@ import java.awt.Stroke;
import java.awt.image.BufferedImage;
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont;
+import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.spatial2.model.CoordI2;
public class ChroniclePatternRenderer implements PatternRenderer {
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/ChronicleThemeFactoryBean.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/ChronicleThemeFactoryBean.java
index b5fbb81..31e7a42 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/ChronicleThemeFactoryBean.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/ChronicleThemeFactoryBean.java
@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean;
+import de.extio.game_engine.renderer.model.Theme;
+import de.extio.game_engine.renderer.model.color.HSBColor;
+
public class ChronicleThemeFactoryBean implements FactoryBean {
@Override
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/ContemporaryPatternRenderer.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/ContemporaryPatternRenderer.java
index c4209ab..fc7ff1d 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/ContemporaryPatternRenderer.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/ContemporaryPatternRenderer.java
@@ -10,6 +10,7 @@ import java.awt.image.BufferedImage;
import java.awt.geom.RoundRectangle2D;
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont;
+import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.spatial2.model.CoordI2;
public class ContemporaryPatternRenderer implements PatternRenderer {
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/ContemporaryThemeFactoryBean.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/ContemporaryThemeFactoryBean.java
index 608bc78..28e6b90 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/ContemporaryThemeFactoryBean.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/ContemporaryThemeFactoryBean.java
@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean;
+import de.extio.game_engine.renderer.model.Theme;
+import de.extio.game_engine.renderer.model.color.HSBColor;
+
public class ContemporaryThemeFactoryBean implements FactoryBean {
@Override
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/DreamPatternRenderer.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/DreamPatternRenderer.java
index 18e1b83..92af51f 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/DreamPatternRenderer.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/DreamPatternRenderer.java
@@ -5,6 +5,7 @@ import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont;
+import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.spatial2.model.CoordI2;
public class DreamPatternRenderer implements PatternRenderer {
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/DreamThemeFactoryBean.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/DreamThemeFactoryBean.java
index 36c95b4..b7df0c2 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/DreamThemeFactoryBean.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/DreamThemeFactoryBean.java
@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean;
+import de.extio.game_engine.renderer.model.Theme;
+import de.extio.game_engine.renderer.model.color.HSBColor;
+
public class DreamThemeFactoryBean implements FactoryBean {
@Override
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/FantasyPatternRenderer.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/FantasyPatternRenderer.java
index 42ed0a6..179ed42 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/FantasyPatternRenderer.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/FantasyPatternRenderer.java
@@ -5,7 +5,7 @@ import java.awt.GradientPaint;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
-
+import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.spatial2.model.CoordI2;
public class FantasyPatternRenderer implements PatternRenderer {
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/FantasyThemeFactoryBean.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/FantasyThemeFactoryBean.java
index 44c4733..81e32c2 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/FantasyThemeFactoryBean.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/FantasyThemeFactoryBean.java
@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean;
+import de.extio.game_engine.renderer.model.Theme;
+import de.extio.game_engine.renderer.model.color.HSBColor;
+
public class FantasyThemeFactoryBean implements FactoryBean {
@Override
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/G2DThemeManager.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/G2DThemeManager.java
index adb4a7c..c05cb74 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/G2DThemeManager.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/G2DThemeManager.java
@@ -14,6 +14,7 @@ import org.slf4j.LoggerFactory;
import de.extio.game_engine.renderer.ThemeManager;
import de.extio.game_engine.renderer.g2d.G2DRenderer;
import de.extio.game_engine.renderer.g2d.G2DRendererControl;
+import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.resource.StaticResource;
import de.extio.game_engine.resource.StaticResourceService;
import de.extio.game_engine.storage.StorageService;
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/MetroPatternRenderer.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/MetroPatternRenderer.java
index fd35e1f..a44bc3c 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/MetroPatternRenderer.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/MetroPatternRenderer.java
@@ -5,7 +5,7 @@ import java.awt.GradientPaint;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
-
+import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.spatial2.model.CoordI2;
public class MetroPatternRenderer implements PatternRenderer {
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/ModernPatternRenderer.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/ModernPatternRenderer.java
index 14bae8f..e953eca 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/ModernPatternRenderer.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/ModernPatternRenderer.java
@@ -6,6 +6,7 @@ import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont;
+import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.spatial2.model.CoordI2;
public class ModernPatternRenderer implements PatternRenderer {
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/ModernThemeFactoryBean.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/ModernThemeFactoryBean.java
index 78643c1..1225b2d 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/ModernThemeFactoryBean.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/ModernThemeFactoryBean.java
@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean;
+import de.extio.game_engine.renderer.model.Theme;
+import de.extio.game_engine.renderer.model.color.HSBColor;
+
public class ModernThemeFactoryBean implements FactoryBean {
@Override
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/NeonThemeFactoryBean.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/NeonThemeFactoryBean.java
index bdeab37..6306459 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/NeonThemeFactoryBean.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/NeonThemeFactoryBean.java
@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean;
+import de.extio.game_engine.renderer.model.Theme;
+import de.extio.game_engine.renderer.model.color.HSBColor;
+
public class NeonThemeFactoryBean implements FactoryBean {
@Override
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/NoirThemeFactoryBean.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/NoirThemeFactoryBean.java
index df6cd7d..e173f36 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/NoirThemeFactoryBean.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/NoirThemeFactoryBean.java
@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean;
+import de.extio.game_engine.renderer.model.Theme;
+import de.extio.game_engine.renderer.model.color.HSBColor;
+
public class NoirThemeFactoryBean implements FactoryBean {
@Override
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/PatternRenderer.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/PatternRenderer.java
index 53594c9..e69429a 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/PatternRenderer.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/PatternRenderer.java
@@ -3,6 +3,7 @@ package de.extio.game_engine.renderer.g2d.theme;
import java.awt.Color;
import java.awt.Graphics2D;
+import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.spatial2.model.CoordI2;
/**
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/SpacecraftPatternRenderer.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/SpacecraftPatternRenderer.java
index a79875c..1fdb5f9 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/SpacecraftPatternRenderer.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/SpacecraftPatternRenderer.java
@@ -7,6 +7,7 @@ import java.util.List;
import de.extio.game_engine.renderer.RendererControl;
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont;
+import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.renderer.model.color.ImmutableRgbaColor;
import de.extio.game_engine.renderer.model.color.RgbaColor;
import de.extio.game_engine.spatial2.model.CoordI2;
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/SpacecraftThemeFactoryBean.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/SpacecraftThemeFactoryBean.java
index 6ef181c..5ed704c 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/SpacecraftThemeFactoryBean.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/SpacecraftThemeFactoryBean.java
@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean;
+import de.extio.game_engine.renderer.model.Theme;
+import de.extio.game_engine.renderer.model.color.HSBColor;
+
public class SpacecraftThemeFactoryBean implements FactoryBean {
@Override
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/SteampunkPatternRenderer.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/SteampunkPatternRenderer.java
index 425c139..9039701 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/SteampunkPatternRenderer.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/SteampunkPatternRenderer.java
@@ -5,7 +5,7 @@ import java.awt.GradientPaint;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
-
+import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.spatial2.model.CoordI2;
public class SteampunkPatternRenderer implements PatternRenderer {
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/SteampunkThemeFactoryBean.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/SteampunkThemeFactoryBean.java
index 3b1b57e..460eb92 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/SteampunkThemeFactoryBean.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/SteampunkThemeFactoryBean.java
@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean;
+import de.extio.game_engine.renderer.model.Theme;
+import de.extio.game_engine.renderer.model.color.HSBColor;
+
public class SteampunkThemeFactoryBean implements FactoryBean {
@Override
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/TerminalPatternRenderer.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/TerminalPatternRenderer.java
index da68c64..aec64e8 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/TerminalPatternRenderer.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/TerminalPatternRenderer.java
@@ -5,6 +5,7 @@ import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont;
+import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.spatial2.model.CoordI2;
public class TerminalPatternRenderer implements PatternRenderer {
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/TerminalThemeFactoryBean.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/TerminalThemeFactoryBean.java
index ef59231..71359f8 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/TerminalThemeFactoryBean.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/TerminalThemeFactoryBean.java
@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean;
+import de.extio.game_engine.renderer.model.Theme;
+import de.extio.game_engine.renderer.model.color.HSBColor;
+
public class TerminalThemeFactoryBean implements FactoryBean {
@Override
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/UrbanPatternRenderer.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/UrbanPatternRenderer.java
index fdca6ff..6a1f796 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/UrbanPatternRenderer.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/UrbanPatternRenderer.java
@@ -4,6 +4,7 @@ import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics2D;
+import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.spatial2.model.CoordI2;
public class UrbanPatternRenderer implements PatternRenderer {
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/UrbanThemeFactoryBean.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/UrbanThemeFactoryBean.java
index 2f15848..33a05aa 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/UrbanThemeFactoryBean.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/UrbanThemeFactoryBean.java
@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean;
+import de.extio.game_engine.renderer.model.Theme;
+import de.extio.game_engine.renderer.model.color.HSBColor;
+
public class UrbanThemeFactoryBean implements FactoryBean {
@Override
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/VintagePatternRenderer.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/VintagePatternRenderer.java
index c81f640..e5e17e2 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/VintagePatternRenderer.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/VintagePatternRenderer.java
@@ -5,7 +5,7 @@ import java.awt.GradientPaint;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
-
+import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.spatial2.model.CoordI2;
public class VintagePatternRenderer implements PatternRenderer {
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/VintageThemeFactoryBean.java b/src/main/java/de/extio/game_engine/renderer/g2d/theme/VintageThemeFactoryBean.java
index d390b02..89cbdf7 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/VintageThemeFactoryBean.java
+++ b/src/main/java/de/extio/game_engine/renderer/g2d/theme/VintageThemeFactoryBean.java
@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean;
+import de.extio.game_engine.renderer.model.Theme;
+import de.extio.game_engine.renderer.model.color.HSBColor;
+
public class VintageThemeFactoryBean implements FactoryBean {
@Override
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/Theme.java b/src/main/java/de/extio/game_engine/renderer/model/Theme.java
similarity index 98%
rename from src/main/java/de/extio/game_engine/renderer/g2d/theme/Theme.java
rename to src/main/java/de/extio/game_engine/renderer/model/Theme.java
index 349a1c3..ce0868e 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/Theme.java
+++ b/src/main/java/de/extio/game_engine/renderer/model/Theme.java
@@ -1,8 +1,10 @@
-package de.extio.game_engine.renderer.g2d.theme;
+package de.extio.game_engine.renderer.model;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
+import de.extio.game_engine.renderer.model.color.HSBColor;
+
/**
* Represents a complete UI theme with all color definitions and pattern renderer.
* Themes are element-based rather than component-based, allowing consistent styling across different components.
diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/theme/HSBColor.java b/src/main/java/de/extio/game_engine/renderer/model/color/HSBColor.java
similarity index 92%
rename from src/main/java/de/extio/game_engine/renderer/g2d/theme/HSBColor.java
rename to src/main/java/de/extio/game_engine/renderer/model/color/HSBColor.java
index 8010622..dcf60a2 100644
--- a/src/main/java/de/extio/game_engine/renderer/g2d/theme/HSBColor.java
+++ b/src/main/java/de/extio/game_engine/renderer/model/color/HSBColor.java
@@ -1,4 +1,4 @@
-package de.extio.game_engine.renderer.g2d.theme;
+package de.extio.game_engine.renderer.model.color;
import java.awt.Color;
import java.util.Objects;
@@ -42,6 +42,10 @@ public final class HSBColor {
final var hsb = Color.RGBtoHSB(color.getRed(), color.getGreen(), color.getBlue(), null);
return new HSBColor(hsb[0], hsb[1], hsb[2]);
}
+
+ public static HSBColor fromColor(final RgbaColor color) {
+ return fromColor(color.toAwtColor());
+ }
/**
* Converts this HSB color to an AWT Color.
@@ -51,6 +55,10 @@ public final class HSBColor {
public Color toColor() {
return Color.getHSBColor(this.hue, this.saturation, this.brightness);
}
+
+ public RgbaColor toRgbaColor() {
+ return new ImmutableRgbaColor(this.toColor());
+ }
/**
* Creates a new HSBColor with adjusted brightness.
diff --git a/src/main/java/de/extio/game_engine/renderer/model/color/RgbaColor.java b/src/main/java/de/extio/game_engine/renderer/model/color/RgbaColor.java
index 3c70255..89a352f 100644
--- a/src/main/java/de/extio/game_engine/renderer/model/color/RgbaColor.java
+++ b/src/main/java/de/extio/game_engine/renderer/model/color/RgbaColor.java
@@ -73,6 +73,10 @@ public interface RgbaColor {
int getA();
Color toAwtColor();
+
+ default HSBColor toHSBColor() {
+ return HSBColor.fromColor(this);
+ }
ImmutableRgbaColor toImmutable();
diff --git a/src/test/java/de/extio/game_engine/renderer/g2d/theme/G2DThemeManagerTest.java b/src/test/java/de/extio/game_engine/renderer/g2d/theme/G2DThemeManagerTest.java
index 166d7fc..d01882a 100644
--- a/src/test/java/de/extio/game_engine/renderer/g2d/theme/G2DThemeManagerTest.java
+++ b/src/test/java/de/extio/game_engine/renderer/g2d/theme/G2DThemeManagerTest.java
@@ -18,6 +18,8 @@ import org.junit.jupiter.api.Test;
import de.extio.game_engine.renderer.g2d.G2DRenderer;
import de.extio.game_engine.renderer.g2d.G2DRendererControl;
+import de.extio.game_engine.renderer.model.Theme;
+import de.extio.game_engine.renderer.model.color.HSBColor;
import de.extio.game_engine.renderer.model.options.UiOptions;
import de.extio.game_engine.resource.StaticResource;
import de.extio.game_engine.resource.StaticResourceService;