Refactored renderer model;

This commit is contained in:
extio-de
2026-03-25 22:19:03 +01:00
parent 697aafe87d
commit 697bf3f6a6
48 changed files with 94 additions and 20 deletions

View File

@@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>de.extio</groupId> <groupId>de.extio</groupId>
<artifactId>game-engine</artifactId> <artifactId>game-engine</artifactId>
<version>1.0.1</version> <version>1.0.2</version>
<properties> <properties>
<java.version>25</java.version> <java.version>25</java.version>

View File

@@ -8,8 +8,7 @@ import org.slf4j.LoggerFactory;
import de.extio.game_engine.keyboard.KeyModifiers; import de.extio.game_engine.keyboard.KeyModifiers;
import de.extio.game_engine.keyboard.KeycodeRegistration; import de.extio.game_engine.keyboard.KeycodeRegistration;
import de.extio.game_engine.renderer.g2d.theme.Theme; import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.renderer.g2d.theme.Theme;
import de.extio.game_engine.renderer.model.options.VideoOptions; import de.extio.game_engine.renderer.model.options.VideoOptions;
public class RendererLoop implements Runnable { public class RendererLoop implements Runnable {

View File

@@ -3,8 +3,8 @@ package de.extio.game_engine.renderer;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.resource.StaticResource; import de.extio.game_engine.resource.StaticResource;
import de.extio.game_engine.renderer.g2d.theme.Theme;
public interface ThemeManager { public interface ThemeManager {

View File

@@ -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.NoirThemeFactoryBean;
import de.extio.game_engine.renderer.g2d.theme.SpacecraftThemeFactoryBean; 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.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.UrbanThemeFactoryBean;
import de.extio.game_engine.renderer.g2d.theme.VintageThemeFactoryBean; 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.renderer.g2d.theme.TerminalThemeFactoryBean;
import de.extio.game_engine.resource.StaticResourceService; import de.extio.game_engine.resource.StaticResourceService;
import de.extio.game_engine.storage.StorageService; import de.extio.game_engine.storage.StorageService;

View File

@@ -5,8 +5,8 @@ import java.awt.Graphics2D;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont; 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.g2d.theme.G2DThemeManager;
import de.extio.game_engine.renderer.model.Theme;
@SuppressWarnings("serial") @SuppressWarnings("serial")
public class CustomButton extends CustomAbstractButton { public class CustomButton extends CustomAbstractButton {

View File

@@ -14,7 +14,7 @@ import java.util.List;
import de.extio.game_engine.renderer.ThemeManager; import de.extio.game_engine.renderer.ThemeManager;
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont; 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.renderer.model.bo.HorizontalAlignment;
import de.extio.game_engine.spatial2.model.CoordI2; import de.extio.game_engine.spatial2.model.CoordI2;
import de.extio.game_engine.spatial2.model.ImmutableCoordI2; import de.extio.game_engine.spatial2.model.ImmutableCoordI2;

View File

@@ -23,7 +23,7 @@ import java.util.function.Consumer;
import de.extio.game_engine.renderer.ThemeManager; import de.extio.game_engine.renderer.ThemeManager;
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont; 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; import de.extio.game_engine.spatial2.model.ImmutableCoordI2;
@SuppressWarnings("serial") @SuppressWarnings("serial")

View File

@@ -15,7 +15,7 @@ import java.util.Objects;
import de.extio.game_engine.renderer.ThemeManager; import de.extio.game_engine.renderer.ThemeManager;
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont; 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.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.renderer.model.bo.ControlRenderingBo.PopupMenuItem;
import de.extio.game_engine.spatial2.model.CoordI2; import de.extio.game_engine.spatial2.model.CoordI2;
import de.extio.game_engine.spatial2.model.ImmutableCoordI2; import de.extio.game_engine.spatial2.model.ImmutableCoordI2;

View File

@@ -19,7 +19,7 @@ import java.util.function.Consumer;
import de.extio.game_engine.renderer.ThemeManager; import de.extio.game_engine.renderer.ThemeManager;
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont; 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; import de.extio.game_engine.spatial2.model.ImmutableCoordI2;
@SuppressWarnings("serial") @SuppressWarnings("serial")

View File

@@ -11,7 +11,7 @@ import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener; import java.awt.event.MouseMotionListener;
import de.extio.game_engine.renderer.ThemeManager; 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.CoordI2;
import de.extio.game_engine.spatial2.model.ImmutableCoordI2; import de.extio.game_engine.spatial2.model.ImmutableCoordI2;

View File

@@ -5,8 +5,8 @@ import java.awt.Graphics2D;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont; 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.g2d.theme.G2DThemeManager;
import de.extio.game_engine.renderer.model.Theme;
@SuppressWarnings("serial") @SuppressWarnings("serial")
public class CustomSwitch extends CustomAbstractButton { public class CustomSwitch extends CustomAbstractButton {

View File

@@ -11,8 +11,8 @@ import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener; import java.awt.event.MouseWheelListener;
import de.extio.game_engine.renderer.g2d.G2DMainFrame; 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.g2d.theme.G2DThemeManager;
import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.spatial2.model.ImmutableCoordI2; import de.extio.game_engine.spatial2.model.ImmutableCoordI2;
public class CustomWindowPanel extends Component { public class CustomWindowPanel extends Component {

View File

@@ -5,6 +5,7 @@ import java.awt.Graphics2D;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont; 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; import de.extio.game_engine.spatial2.model.CoordI2;
public class AsciiPatternRenderer implements PatternRenderer { public class AsciiPatternRenderer implements PatternRenderer {

View File

@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean; 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<Theme> { public class AsciiThemeFactoryBean implements FactoryBean<Theme> {
@Override @Override

View File

@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean; 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<Theme> { public class BevelDarkThemeFactoryBean implements FactoryBean<Theme> {
@Override @Override

View File

@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean; 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<Theme> { public class BevelLightThemeFactoryBean implements FactoryBean<Theme> {
@Override @Override

View File

@@ -3,6 +3,7 @@ package de.extio.game_engine.renderer.g2d.theme;
import java.awt.Color; import java.awt.Color;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.spatial2.model.CoordI2; import de.extio.game_engine.spatial2.model.CoordI2;
public class BevelPatternRenderer implements PatternRenderer { public class BevelPatternRenderer implements PatternRenderer {

View File

@@ -6,7 +6,7 @@ import java.awt.Graphics2D;
import java.awt.Stroke; import java.awt.Stroke;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.spatial2.model.CoordI2; import de.extio.game_engine.spatial2.model.CoordI2;
public class BlueprintPatternRenderer implements PatternRenderer { public class BlueprintPatternRenderer implements PatternRenderer {

View File

@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean; 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<Theme> { public class BlueprintThemeFactoryBean implements FactoryBean<Theme> {
@Override @Override

View File

@@ -9,6 +9,7 @@ import java.awt.Stroke;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont; 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; import de.extio.game_engine.spatial2.model.CoordI2;
public class ChroniclePatternRenderer implements PatternRenderer { public class ChroniclePatternRenderer implements PatternRenderer {

View File

@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean; 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<Theme> { public class ChronicleThemeFactoryBean implements FactoryBean<Theme> {
@Override @Override

View File

@@ -10,6 +10,7 @@ import java.awt.image.BufferedImage;
import java.awt.geom.RoundRectangle2D; import java.awt.geom.RoundRectangle2D;
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont; 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; import de.extio.game_engine.spatial2.model.CoordI2;
public class ContemporaryPatternRenderer implements PatternRenderer { public class ContemporaryPatternRenderer implements PatternRenderer {

View File

@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean; 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<Theme> { public class ContemporaryThemeFactoryBean implements FactoryBean<Theme> {
@Override @Override

View File

@@ -5,6 +5,7 @@ import java.awt.Graphics2D;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont; 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; import de.extio.game_engine.spatial2.model.CoordI2;
public class DreamPatternRenderer implements PatternRenderer { public class DreamPatternRenderer implements PatternRenderer {

View File

@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean; 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<Theme> { public class DreamThemeFactoryBean implements FactoryBean<Theme> {
@Override @Override

View File

@@ -5,7 +5,7 @@ import java.awt.GradientPaint;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.spatial2.model.CoordI2; import de.extio.game_engine.spatial2.model.CoordI2;
public class FantasyPatternRenderer implements PatternRenderer { public class FantasyPatternRenderer implements PatternRenderer {

View File

@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean; 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<Theme> { public class FantasyThemeFactoryBean implements FactoryBean<Theme> {
@Override @Override

View File

@@ -14,6 +14,7 @@ import org.slf4j.LoggerFactory;
import de.extio.game_engine.renderer.ThemeManager; import de.extio.game_engine.renderer.ThemeManager;
import de.extio.game_engine.renderer.g2d.G2DRenderer; import de.extio.game_engine.renderer.g2d.G2DRenderer;
import de.extio.game_engine.renderer.g2d.G2DRendererControl; 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.StaticResource;
import de.extio.game_engine.resource.StaticResourceService; import de.extio.game_engine.resource.StaticResourceService;
import de.extio.game_engine.storage.StorageService; import de.extio.game_engine.storage.StorageService;

View File

@@ -5,7 +5,7 @@ import java.awt.GradientPaint;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.spatial2.model.CoordI2; import de.extio.game_engine.spatial2.model.CoordI2;
public class MetroPatternRenderer implements PatternRenderer { public class MetroPatternRenderer implements PatternRenderer {

View File

@@ -6,6 +6,7 @@ import java.awt.Graphics2D;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont; 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; import de.extio.game_engine.spatial2.model.CoordI2;
public class ModernPatternRenderer implements PatternRenderer { public class ModernPatternRenderer implements PatternRenderer {

View File

@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean; 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<Theme> { public class ModernThemeFactoryBean implements FactoryBean<Theme> {
@Override @Override

View File

@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean; 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<Theme> { public class NeonThemeFactoryBean implements FactoryBean<Theme> {
@Override @Override

View File

@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean; 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<Theme> { public class NoirThemeFactoryBean implements FactoryBean<Theme> {
@Override @Override

View File

@@ -3,6 +3,7 @@ package de.extio.game_engine.renderer.g2d.theme;
import java.awt.Color; import java.awt.Color;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.spatial2.model.CoordI2; import de.extio.game_engine.spatial2.model.CoordI2;
/** /**

View File

@@ -7,6 +7,7 @@ import java.util.List;
import de.extio.game_engine.renderer.RendererControl; import de.extio.game_engine.renderer.RendererControl;
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont; 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.ImmutableRgbaColor;
import de.extio.game_engine.renderer.model.color.RgbaColor; import de.extio.game_engine.renderer.model.color.RgbaColor;
import de.extio.game_engine.spatial2.model.CoordI2; import de.extio.game_engine.spatial2.model.CoordI2;

View File

@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean; 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<Theme> { public class SpacecraftThemeFactoryBean implements FactoryBean<Theme> {
@Override @Override

View File

@@ -5,7 +5,7 @@ import java.awt.GradientPaint;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.spatial2.model.CoordI2; import de.extio.game_engine.spatial2.model.CoordI2;
public class SteampunkPatternRenderer implements PatternRenderer { public class SteampunkPatternRenderer implements PatternRenderer {

View File

@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean; 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<Theme> { public class SteampunkThemeFactoryBean implements FactoryBean<Theme> {
@Override @Override

View File

@@ -5,6 +5,7 @@ import java.awt.Graphics2D;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont; 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; import de.extio.game_engine.spatial2.model.CoordI2;
public class TerminalPatternRenderer implements PatternRenderer { public class TerminalPatternRenderer implements PatternRenderer {

View File

@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean; 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<Theme> { public class TerminalThemeFactoryBean implements FactoryBean<Theme> {
@Override @Override

View File

@@ -4,6 +4,7 @@ import java.awt.Color;
import java.awt.GradientPaint; import java.awt.GradientPaint;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.spatial2.model.CoordI2; import de.extio.game_engine.spatial2.model.CoordI2;
public class UrbanPatternRenderer implements PatternRenderer { public class UrbanPatternRenderer implements PatternRenderer {

View File

@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean; 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<Theme> { public class UrbanThemeFactoryBean implements FactoryBean<Theme> {
@Override @Override

View File

@@ -5,7 +5,7 @@ import java.awt.GradientPaint;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import de.extio.game_engine.renderer.model.Theme;
import de.extio.game_engine.spatial2.model.CoordI2; import de.extio.game_engine.spatial2.model.CoordI2;
public class VintagePatternRenderer implements PatternRenderer { public class VintagePatternRenderer implements PatternRenderer {

View File

@@ -2,6 +2,9 @@ package de.extio.game_engine.renderer.g2d.theme;
import org.springframework.beans.factory.FactoryBean; 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<Theme> { public class VintageThemeFactoryBean implements FactoryBean<Theme> {
@Override @Override

View File

@@ -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.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty; 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. * 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. * Themes are element-based rather than component-based, allowing consistent styling across different components.

View File

@@ -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.awt.Color;
import java.util.Objects; import java.util.Objects;
@@ -42,6 +42,10 @@ public final class HSBColor {
final var hsb = Color.RGBtoHSB(color.getRed(), color.getGreen(), color.getBlue(), null); final var hsb = Color.RGBtoHSB(color.getRed(), color.getGreen(), color.getBlue(), null);
return new HSBColor(hsb[0], hsb[1], hsb[2]); 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. * Converts this HSB color to an AWT Color.
@@ -51,6 +55,10 @@ public final class HSBColor {
public Color toColor() { public Color toColor() {
return Color.getHSBColor(this.hue, this.saturation, this.brightness); return Color.getHSBColor(this.hue, this.saturation, this.brightness);
} }
public RgbaColor toRgbaColor() {
return new ImmutableRgbaColor(this.toColor());
}
/** /**
* Creates a new HSBColor with adjusted brightness. * Creates a new HSBColor with adjusted brightness.

View File

@@ -73,6 +73,10 @@ public interface RgbaColor {
int getA(); int getA();
Color toAwtColor(); Color toAwtColor();
default HSBColor toHSBColor() {
return HSBColor.fromColor(this);
}
ImmutableRgbaColor toImmutable(); ImmutableRgbaColor toImmutable();

View File

@@ -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.G2DRenderer;
import de.extio.game_engine.renderer.g2d.G2DRendererControl; 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.renderer.model.options.UiOptions;
import de.extio.game_engine.resource.StaticResource; import de.extio.game_engine.resource.StaticResource;
import de.extio.game_engine.resource.StaticResourceService; import de.extio.game_engine.resource.StaticResourceService;