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>
<groupId>de.extio</groupId>
<artifactId>game-engine</artifactId>
<version>1.0.1</version>
<version>1.0.2</version>
<properties>
<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.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 {

View File

@@ -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 {

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.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;

View File

@@ -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 {

View File

@@ -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;

View File

@@ -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")

View File

@@ -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;

View File

@@ -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")

View File

@@ -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;

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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<Theme> {
@Override

View File

@@ -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<Theme> {
@Override

View File

@@ -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<Theme> {
@Override

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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<Theme> {
@Override

View File

@@ -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 {

View File

@@ -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<Theme> {
@Override

View File

@@ -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 {

View File

@@ -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<Theme> {
@Override

View File

@@ -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 {

View File

@@ -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<Theme> {
@Override

View File

@@ -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 {

View File

@@ -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<Theme> {
@Override

View File

@@ -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;

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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<Theme> {
@Override

View File

@@ -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<Theme> {
@Override

View File

@@ -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<Theme> {
@Override

View File

@@ -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;
/**

View File

@@ -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;

View File

@@ -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<Theme> {
@Override

View File

@@ -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 {

View File

@@ -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<Theme> {
@Override

View File

@@ -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 {

View File

@@ -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<Theme> {
@Override

View File

@@ -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 {

View File

@@ -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<Theme> {
@Override

View File

@@ -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 {

View File

@@ -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<Theme> {
@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.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.

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.util.Objects;
@@ -43,6 +43,10 @@ public final class HSBColor {
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.
*
@@ -52,6 +56,10 @@ public final class HSBColor {
return Color.getHSBColor(this.hue, this.saturation, this.brightness);
}
public RgbaColor toRgbaColor() {
return new ImmutableRgbaColor(this.toColor());
}
/**
* Creates a new HSBColor with adjusted brightness.
*

View File

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

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.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;