From 045a9bbb9de3028e997b8001accc8400e114117a Mon Sep 17 00:00:00 2001 From: extio-de Date: Mon, 5 Jan 2026 22:30:20 +0100 Subject: [PATCH] refactor(renderer): All beans use auto configurations --- README.md | 21 ++- .../renderer/RendererAutoConfiguration.java | 15 ++ .../renderer/container/ScrollArea.java | 4 - .../renderer/container/Window.java | 4 - .../renderer/g2d/G2DAutoConfiguration.java | 141 ++++++++++++++++++ .../g2d/bo/rendering/G2DDrawBackground.java | 6 - .../g2d/bo/rendering/G2DDrawEffect.java | 6 - .../g2d/bo/rendering/G2DDrawFont.java | 6 - .../g2d/bo/rendering/G2DDrawFpsHistory.java | 6 - .../g2d/bo/rendering/G2DDrawImage.java | 6 - .../g2d/bo/rendering/G2DDrawTest.java | 6 - .../renderer/g2d/control/G2DDrawControl.java | 10 +- .../g2d/control/G2DDrawControlTooltip.java | 7 +- .../g2d/theme/BevelPatternRenderer.java | 9 -- .../g2d/theme/BlueprintPatternRenderer.java | 9 -- .../g2d/theme/ChroniclePatternRenderer.java | 6 - .../theme/ContemporaryPatternRenderer.java | 6 - .../g2d/theme/DreamPatternRenderer.java | 6 - .../g2d/theme/FantasyPatternRenderer.java | 5 - .../g2d/theme/MetroPatternRenderer.java | 5 - .../g2d/theme/ModernPatternRenderer.java | 6 - .../g2d/theme/SpacecraftPatternRenderer.java | 10 -- .../g2d/theme/SteampunkPatternRenderer.java | 5 - .../g2d/theme/UrbanPatternRenderer.java | 6 - .../g2d/theme/VintagePatternRenderer.java | 5 - 25 files changed, 178 insertions(+), 138 deletions(-) diff --git a/README.md b/README.md index df61b0a..10906e1 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ The engine is structured around the following key subsystems: - `menu/` - Menu system components - `util/` - Core utilities for serialization, buffers, and RNG -The engine uses Spring's auto-configuration mechanism to wire components together, making it easy to extend and customize behavior through standard Spring configuration patterns. Each subsystem can be independently enabled/disabled via configuration properties, allowing developers to use only the components they need. +The engine is built as a Spring Boot starter library using auto-configuration exclusively - all beans are defined in AutoConfiguration classes rather than relying on component scanning. This approach provides explicit, discoverable bean definitions and makes it easy to extend and customize behavior through standard Spring configuration patterns. Each subsystem can be independently enabled/disabled via configuration properties, allowing developers to use only the components they need. ### Demo Module @@ -245,10 +245,14 @@ The core rendering infrastructure is auto-configured by `RendererAutoConfigurati **Properties**: - `game-engine.renderer.strategy` (default: `g2d`) - Must be set to "g2d" to enable - `game-engine.renderer.title` - Optional window title +- `game-engine.renderer.default-theme` (default: `urbanTheme`) - Default theme, see the ThemeManager section below -The `G2DAutoConfiguration` provides the default Java2D-based renderer implementation, which is enabled when the renderer strategy is set to "g2d" (the default). +The `G2DAutoConfiguration` provides the default Java2D-based renderer implementation, which is enabled when the renderer strategy is set to "g2d" (the default). This configuration class also registers all G2D rendering components as Spring beans, including: -- `game-engine.renderer.default-theme` (default: `urbanTheme`) - Default theme, see the ThemeManager section below. +- **Rendering Business Objects**: `G2DDrawBackground`, `G2DDrawEffect`, `G2DDrawFont`, `G2DDrawFpsHistory`, `G2DDrawImage`, `G2DDrawTest`, `G2DDrawControl`, `G2DDrawControlTooltip` +- **Pattern Renderers**: All theme pattern renderers (`BevelPatternRenderer`, `BlueprintPatternRenderer`, `ChroniclePatternRenderer`, `ContemporaryPatternRenderer`, `DreamPatternRenderer`, `FantasyPatternRenderer`, `MetroPatternRenderer`, `ModernPatternRenderer`, `SpacecraftPatternRenderer`, `SteampunkPatternRenderer`, `UrbanPatternRenderer`, `VintagePatternRenderer`) + +All rendering components are registered with `@ConditionalOnMissingBean`, allowing custom implementations to override the defaults. #### Exposed Spring Beans - **`Renderer`**: Main rendering interface (provided by G2DRenderer or custom implementation) @@ -557,10 +561,19 @@ Themes loaded from storage or static resources are automatically registered into ### Container System #### Purpose and Overview -The Container System provides a windowing framework for building complex, composable UIs. Windows are Spring-managed modules that can contain components, be dragged, resized to viewport changes, and managed with z-index stacking. The system supports parent-child window relationships and automatic cleanup when modules are deactivated. +The Container System provides a windowing framework for building complex, composable UIs. Windows are Spring-managed prototype-scoped beans that can contain components, be dragged, resized to viewport changes, and managed with z-index stacking. The system supports parent-child window relationships and automatic cleanup when modules are deactivated. Windows use normalized coordinates relative to a reference resolution (1920x1080), with automatic alignment for different viewport sizes. This ensures consistent UI layouts across various screen resolutions and aspect ratios. +#### Setup / Autoconfiguration +Container components are auto-configured by `RendererAutoConfiguration` when the renderer is enabled. + +**Exposed Container Beans** (all prototype-scoped): +- **`Window`**: Main container component for building UI windows +- **`ScrollArea`**: Scrollable content area with automatic scrollbar management + +These beans are created via `ApplicationContext.getBean()` when needed, ensuring each instance is independently managed. + #### Core Components **Window** diff --git a/src/main/java/de/extio/game_engine/renderer/RendererAutoConfiguration.java b/src/main/java/de/extio/game_engine/renderer/RendererAutoConfiguration.java index ad7f925..516d8a4 100644 --- a/src/main/java/de/extio/game_engine/renderer/RendererAutoConfiguration.java +++ b/src/main/java/de/extio/game_engine/renderer/RendererAutoConfiguration.java @@ -9,11 +9,14 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Scope; import de.extio.game_engine.event.EventService; import de.extio.game_engine.keyboard.KeycodeRegistry; import de.extio.game_engine.module.ModuleExecutor; import de.extio.game_engine.module.ModuleService; +import de.extio.game_engine.renderer.container.ScrollArea; +import de.extio.game_engine.renderer.container.Window; import de.extio.game_engine.renderer.model.RenderingBo; import de.extio.game_engine.renderer.work.RendererWorkingSet; import de.extio.game_engine.renderer.work.RendererWorkingSetImpl; @@ -74,4 +77,16 @@ public class RendererAutoConfiguration { return new RendererLauncher(applicationContext, rendererData); } + @Bean + @Scope("prototype") + Window window(final ModuleService moduleService, final RenderingBoPool renderingBoPool, final RendererControl rendererControl, final EventService eventService, final RendererWorkingSet rendererWorkingSet) { + return new Window(moduleService, renderingBoPool, rendererControl, eventService, rendererWorkingSet); + } + + @Bean + @Scope("prototype") + ScrollArea scrollArea(final RenderingBoPool renderingBoPool, final EventService eventService) { + return new ScrollArea(renderingBoPool, eventService); + } + } diff --git a/src/main/java/de/extio/game_engine/renderer/container/ScrollArea.java b/src/main/java/de/extio/game_engine/renderer/container/ScrollArea.java index 7ff33b3..2dc85d8 100644 --- a/src/main/java/de/extio/game_engine/renderer/container/ScrollArea.java +++ b/src/main/java/de/extio/game_engine/renderer/container/ScrollArea.java @@ -6,8 +6,6 @@ import java.util.Set; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Component; import de.extio.game_engine.event.EventService; import de.extio.game_engine.renderer.model.RenderingBo; @@ -25,8 +23,6 @@ import de.extio.game_engine.spatial2.model.CoordI2; import de.extio.game_engine.spatial2.model.ImmutableCoordI2; import de.extio.game_engine.spatial2.model.MutableCoordI2; -@Component -@Scope("prototype") public class ScrollArea implements WindowComponent { private final static Logger LOGGER = LoggerFactory.getLogger(ScrollArea.class); diff --git a/src/main/java/de/extio/game_engine/renderer/container/Window.java b/src/main/java/de/extio/game_engine/renderer/container/Window.java index db7bbe2..00b8b05 100644 --- a/src/main/java/de/extio/game_engine/renderer/container/Window.java +++ b/src/main/java/de/extio/game_engine/renderer/container/Window.java @@ -10,8 +10,6 @@ import java.util.Objects; import java.util.Set; import org.springframework.beans.factory.InitializingBean; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Component; import de.extio.game_engine.event.EventService; import de.extio.game_engine.module.AbstractClientModule; @@ -39,8 +37,6 @@ import de.extio.game_engine.spatial2.model.CoordI2; import de.extio.game_engine.spatial2.model.ImmutableCoordI2; import de.extio.game_engine.spatial2.model.MutableCoordI2; -@Component -@Scope("prototype") public class Window extends AbstractClientModule implements InitializingBean { public static final int MARGIN_TOP = 30; 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 f219a9d..c785dd2 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 @@ -6,11 +6,32 @@ import java.util.Map; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; +import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawBackground; +import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawEffect; +import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont; +import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFpsHistory; +import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawImage; +import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawTest; +import de.extio.game_engine.renderer.g2d.control.G2DDrawControl; +import de.extio.game_engine.renderer.g2d.control.G2DDrawControlTooltip; +import de.extio.game_engine.renderer.g2d.theme.BevelPatternRenderer; +import de.extio.game_engine.renderer.g2d.theme.BlueprintPatternRenderer; +import de.extio.game_engine.renderer.g2d.theme.ChroniclePatternRenderer; +import de.extio.game_engine.renderer.g2d.theme.ContemporaryPatternRenderer; +import de.extio.game_engine.renderer.g2d.theme.DreamPatternRenderer; +import de.extio.game_engine.renderer.g2d.theme.FantasyPatternRenderer; import de.extio.game_engine.renderer.g2d.theme.G2DThemeManager; +import de.extio.game_engine.renderer.g2d.theme.MetroPatternRenderer; +import de.extio.game_engine.renderer.g2d.theme.ModernPatternRenderer; import de.extio.game_engine.renderer.g2d.theme.PatternRenderer; +import de.extio.game_engine.renderer.g2d.theme.SpacecraftPatternRenderer; +import de.extio.game_engine.renderer.g2d.theme.SteampunkPatternRenderer; +import de.extio.game_engine.renderer.g2d.theme.UrbanPatternRenderer; +import de.extio.game_engine.renderer.g2d.theme.VintagePatternRenderer; import de.extio.game_engine.renderer.g2d.theme.BevelDarkThemeFactoryBean; import de.extio.game_engine.renderer.g2d.theme.BevelLightThemeFactoryBean; import de.extio.game_engine.renderer.g2d.theme.BlueprintThemeFactoryBean; @@ -134,4 +155,124 @@ public class G2DAutoConfiguration { return new SteampunkThemeFactoryBean(); } + @Bean + @ConditionalOnMissingBean + G2DDrawBackground g2dDrawBackground() { + return new G2DDrawBackground(); + } + + @Bean + @ConditionalOnMissingBean + G2DDrawEffect g2dDrawEffect() { + return new G2DDrawEffect(); + } + + @Bean + @ConditionalOnMissingBean + G2DDrawFont g2dDrawFont() { + return new G2DDrawFont(); + } + + @Bean + @ConditionalOnMissingBean + G2DDrawFpsHistory g2dDrawFpsHistory() { + return new G2DDrawFpsHistory(); + } + + @Bean + @ConditionalOnMissingBean + G2DDrawImage g2dDrawImage() { + return new G2DDrawImage(); + } + + @Bean + @ConditionalOnMissingBean + G2DDrawTest g2dDrawTest() { + return new G2DDrawTest(); + } + + @Bean + @ConditionalOnMissingBean + G2DDrawControl g2dDrawControl() { + return new G2DDrawControl(); + } + + @Bean + @ConditionalOnMissingBean + G2DDrawControlTooltip g2dDrawControlTooltip() { + return new G2DDrawControlTooltip(); + } + + @Bean + @ConditionalOnMissingBean + BevelPatternRenderer bevelPatternRenderer() { + return new BevelPatternRenderer(); + } + + @Bean + @ConditionalOnMissingBean + BlueprintPatternRenderer blueprintPatternRenderer() { + return new BlueprintPatternRenderer(); + } + + @Bean + @ConditionalOnMissingBean + ChroniclePatternRenderer chroniclePatternRenderer() { + return new ChroniclePatternRenderer(); + } + + @Bean + @ConditionalOnMissingBean + ContemporaryPatternRenderer contemporaryPatternRenderer() { + return new ContemporaryPatternRenderer(); + } + + @Bean + @ConditionalOnMissingBean + DreamPatternRenderer dreamPatternRenderer() { + return new DreamPatternRenderer(); + } + + @Bean + @ConditionalOnMissingBean + FantasyPatternRenderer fantasyPatternRenderer() { + return new FantasyPatternRenderer(); + } + + @Bean + @ConditionalOnMissingBean + MetroPatternRenderer metroPatternRenderer() { + return new MetroPatternRenderer(); + } + + @Bean + @ConditionalOnMissingBean + ModernPatternRenderer modernPatternRenderer() { + return new ModernPatternRenderer(); + } + + @Bean + @ConditionalOnMissingBean + SpacecraftPatternRenderer spacecraftPatternRenderer() { + return new SpacecraftPatternRenderer(); + } + + @Bean + @ConditionalOnMissingBean + SteampunkPatternRenderer steampunkPatternRenderer() { + return new SteampunkPatternRenderer(); + } + + @Bean + @ConditionalOnMissingBean + UrbanPatternRenderer urbanPatternRenderer() { + return new UrbanPatternRenderer(); + } + + @Bean + @ConditionalOnMissingBean + VintagePatternRenderer vintagePatternRenderer() { + return new VintagePatternRenderer(); + } + } diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawBackground.java b/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawBackground.java index 7011b8f..50f1074 100644 --- a/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawBackground.java +++ b/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawBackground.java @@ -11,11 +11,7 @@ import java.util.Objects; import javax.imageio.ImageIO; -import org.springframework.context.annotation.Conditional; -import org.springframework.stereotype.Component; - import de.extio.game_engine.renderer.RendererControl; -import de.extio.game_engine.renderer.g2d.G2DRendererCondition; import de.extio.game_engine.renderer.g2d.G2DRendererControl; import de.extio.game_engine.renderer.g2d.theme.G2DThemeManager; import de.extio.game_engine.renderer.model.RenderingBo; @@ -28,8 +24,6 @@ import de.extio.game_engine.spatial2.model.ImmutableCoordI2; import de.extio.game_engine.spatial2.model.MutableCoordI2; import de.extio.game_engine.util.rng.ThreadLocalXorShift128Random; -@Conditional(G2DRendererCondition.class) -@Component public class G2DDrawBackground extends G2DAbstractRenderingBo { private static VolatileImage BACKGROUND_IMAGE; diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawEffect.java b/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawEffect.java index 844ed2e..328950e 100644 --- a/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawEffect.java +++ b/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawEffect.java @@ -7,11 +7,7 @@ import java.awt.Shape; import java.util.ArrayList; import java.util.List; -import org.springframework.context.annotation.Conditional; -import org.springframework.stereotype.Component; - import de.extio.game_engine.renderer.g2d.G2DRenderer; -import de.extio.game_engine.renderer.g2d.G2DRendererCondition; import de.extio.game_engine.renderer.g2d.theme.G2DThemeManager; import de.extio.game_engine.renderer.g2d.theme.PatternRenderer; import de.extio.game_engine.renderer.model.RenderingBo; @@ -24,8 +20,6 @@ import de.extio.game_engine.spatial2.model.CoordI2; import de.extio.game_engine.spatial2.model.ImmutableCoordI2; import de.extio.game_engine.spatial2.model.MutableCoordI2; -@Conditional(G2DRendererCondition.class) -@Component public class G2DDrawEffect extends G2DAbstractRenderingBo implements DrawEffectRenderingBo { private DrawEffectRenderingBoEffects effect; diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawFont.java b/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawFont.java index 0a98b40..b8d4c53 100644 --- a/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawFont.java +++ b/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawFont.java @@ -9,10 +9,6 @@ import java.util.HashMap; import java.util.Map; import java.util.concurrent.atomic.AtomicReference; -import org.springframework.context.annotation.Conditional; -import org.springframework.stereotype.Component; - -import de.extio.game_engine.renderer.g2d.G2DRendererCondition; import de.extio.game_engine.renderer.model.RenderingBo; import de.extio.game_engine.renderer.model.RenderingBoLayer; import de.extio.game_engine.renderer.model.bo.DrawFontRenderingBo; @@ -25,8 +21,6 @@ import de.extio.game_engine.spatial2.model.CoordI2; import de.extio.game_engine.spatial2.model.ImmutableCoordI2; import de.extio.game_engine.spatial2.model.MutableCoordI2; -@Conditional(G2DRendererCondition.class) -@Component public class G2DDrawFont extends G2DAbstractRenderingBo implements DrawFontRenderingBo { public final static float FONT_SIZE_MIN = 12.0F; diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawFpsHistory.java b/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawFpsHistory.java index 8567276..67fe3d3 100644 --- a/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawFpsHistory.java +++ b/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawFpsHistory.java @@ -4,15 +4,9 @@ import java.awt.Color; import java.awt.Graphics2D; import java.util.Collection; -import org.springframework.context.annotation.Conditional; -import org.springframework.stereotype.Component; - -import de.extio.game_engine.renderer.g2d.G2DRendererCondition; import de.extio.game_engine.renderer.model.RenderingBo; import de.extio.game_engine.renderer.model.RenderingBoLayer; -@Conditional(G2DRendererCondition.class) -@Component public class G2DDrawFpsHistory extends G2DAbstractRenderingBo { private Collection history; diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawImage.java b/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawImage.java index 4e66c44..b611e95 100644 --- a/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawImage.java +++ b/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawImage.java @@ -11,11 +11,7 @@ import java.util.Map; import javax.imageio.ImageIO; -import org.springframework.context.annotation.Conditional; -import org.springframework.stereotype.Component; - import de.extio.game_engine.renderer.g2d.G2DRenderer; -import de.extio.game_engine.renderer.g2d.G2DRendererCondition; import de.extio.game_engine.renderer.model.RenderingBo; import de.extio.game_engine.renderer.model.RenderingBoLayer; import de.extio.game_engine.renderer.model.bo.DrawImageRenderingBo; @@ -24,8 +20,6 @@ import de.extio.game_engine.spatial2.SpatialUtils2; import de.extio.game_engine.spatial2.model.Area2; import de.extio.game_engine.spatial2.model.ImmutableCoordI2; -@Conditional(G2DRendererCondition.class) -@Component public class G2DDrawImage extends G2DAbstractRenderingBo implements DrawImageRenderingBo { private static Map IMAGE_CACHE = new HashMap<>(); diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawTest.java b/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawTest.java index 3ef1064..79f004f 100644 --- a/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawTest.java +++ b/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawTest.java @@ -2,15 +2,9 @@ package de.extio.game_engine.renderer.g2d.bo.rendering; import java.awt.Graphics2D; -import org.springframework.context.annotation.Conditional; -import org.springframework.stereotype.Component; - -import de.extio.game_engine.renderer.g2d.G2DRendererCondition; import de.extio.game_engine.renderer.model.RenderingBoLayer; import de.extio.game_engine.renderer.model.bo.DrawTestRenderingBo; -@Conditional(G2DRendererCondition.class) -@Component public class G2DDrawTest extends G2DAbstractRenderingBo implements DrawTestRenderingBo { // private static BufferedImage TILE; diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/control/G2DDrawControl.java b/src/main/java/de/extio/game_engine/renderer/g2d/control/G2DDrawControl.java index 17f714e..008cbd6 100644 --- a/src/main/java/de/extio/game_engine/renderer/g2d/control/G2DDrawControl.java +++ b/src/main/java/de/extio/game_engine/renderer/g2d/control/G2DDrawControl.java @@ -8,10 +8,7 @@ import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.context.annotation.Conditional; -import org.springframework.stereotype.Component; -import de.extio.game_engine.renderer.g2d.G2DRendererCondition; import de.extio.game_engine.renderer.g2d.bo.rendering.G2DAbstractRenderingBo; import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont; import de.extio.game_engine.renderer.g2d.control.impl.G2DBaseControlImpl; @@ -34,8 +31,6 @@ import de.extio.game_engine.spatial2.model.Area2; import de.extio.game_engine.spatial2.model.ImmutableCoordI2; import de.extio.game_engine.spatial2.model.MutableCoordI2; -@Conditional(G2DRendererCondition.class) -@Component public class G2DDrawControl extends G2DAbstractRenderingBo implements ControlRenderingBo { private final static Logger LOGGER = LoggerFactory.getLogger(G2DDrawControl.class); @@ -204,7 +199,10 @@ public class G2DDrawControl extends G2DAbstractRenderingBo implements ControlRen } if (this.customControlConfigurations == null) { - this.customControlConfigurations = List.copyOf( this.rendererData.getApplicationContext().getBeansOfType(CustomControlConfiguration.class).values()); + @SuppressWarnings("unchecked") + final + var beans = (java.util.Collection>) (java.util.Collection) this.rendererData.getApplicationContext().getBeansOfType(CustomControlConfiguration.class).values(); + this.customControlConfigurations = List.copyOf(beans); } var control = (G2DBaseControlImpl) CACHED_CONTROLS.get(this.id); diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/control/G2DDrawControlTooltip.java b/src/main/java/de/extio/game_engine/renderer/g2d/control/G2DDrawControlTooltip.java index b1659ed..5fbc0bd 100644 --- a/src/main/java/de/extio/game_engine/renderer/g2d/control/G2DDrawControlTooltip.java +++ b/src/main/java/de/extio/game_engine/renderer/g2d/control/G2DDrawControlTooltip.java @@ -3,18 +3,13 @@ package de.extio.game_engine.renderer.g2d.control; import java.awt.Color; import java.awt.Graphics2D; -import org.springframework.context.annotation.Conditional; -import org.springframework.stereotype.Component; - -import de.extio.game_engine.renderer.g2d.G2DRendererCondition; import de.extio.game_engine.renderer.g2d.bo.rendering.G2DAbstractRenderingBo; import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont; import de.extio.game_engine.renderer.model.RenderingBoLayer; import de.extio.game_engine.renderer.model.color.MutableRgbaColor; import de.extio.game_engine.spatial2.model.CoordI2; -@Conditional(G2DRendererCondition.class) -@Component + public class G2DDrawControlTooltip extends G2DAbstractRenderingBo { public static record TooltipRecord(CoordI2 position, String text) { 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 5df410e..a55d24e 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,17 +3,8 @@ package de.extio.game_engine.renderer.g2d.theme; import java.awt.Color; import java.awt.Graphics2D; -import org.springframework.context.annotation.Conditional; -import org.springframework.stereotype.Component; - -import de.extio.game_engine.renderer.g2d.G2DRendererCondition; import de.extio.game_engine.spatial2.model.CoordI2; -/** - * Implementation of PatternRenderer that draws borders and panels in a classic "Bevel" style. - */ -@Conditional(G2DRendererCondition.class) -@Component public class BevelPatternRenderer implements PatternRenderer { @Override 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 e73475b..d4c993b 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,18 +6,9 @@ import java.awt.Graphics2D; import java.awt.Stroke; import java.awt.image.BufferedImage; -import org.springframework.context.annotation.Conditional; -import org.springframework.stereotype.Component; -import de.extio.game_engine.renderer.g2d.G2DRendererCondition; -import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont; import de.extio.game_engine.spatial2.model.CoordI2; -/** - * Implementation of PatternRenderer that draws a technical "Blueprint" style with grids and measurement markers. - */ -@Conditional(G2DRendererCondition.class) -@Component public class BlueprintPatternRenderer implements PatternRenderer { @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 21acfbb..d38befe 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 @@ -8,15 +8,9 @@ import java.awt.RenderingHints; import java.awt.Stroke; import java.awt.image.BufferedImage; -import org.springframework.context.annotation.Conditional; -import org.springframework.stereotype.Component; - -import de.extio.game_engine.renderer.g2d.G2DRendererCondition; import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont; import de.extio.game_engine.spatial2.model.CoordI2; -@Conditional(G2DRendererCondition.class) -@Component public class ChroniclePatternRenderer implements PatternRenderer { @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 faff1b7..4de3a9f 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 @@ -9,15 +9,9 @@ import java.awt.Stroke; import java.awt.image.BufferedImage; import java.awt.geom.RoundRectangle2D; -import org.springframework.context.annotation.Conditional; -import org.springframework.stereotype.Component; - -import de.extio.game_engine.renderer.g2d.G2DRendererCondition; import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont; import de.extio.game_engine.spatial2.model.CoordI2; -@Conditional(G2DRendererCondition.class) -@Component public class ContemporaryPatternRenderer implements PatternRenderer { @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 11b5144..df0794e 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 @@ -4,15 +4,9 @@ import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedImage; -import org.springframework.context.annotation.Conditional; -import org.springframework.stereotype.Component; - -import de.extio.game_engine.renderer.g2d.G2DRendererCondition; import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont; import de.extio.game_engine.spatial2.model.CoordI2; -@Conditional(G2DRendererCondition.class) -@Component public class DreamPatternRenderer implements PatternRenderer { @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 2757934..8278a2d 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,14 +5,9 @@ import java.awt.GradientPaint; import java.awt.Graphics2D; import java.awt.image.BufferedImage; -import org.springframework.context.annotation.Conditional; -import org.springframework.stereotype.Component; -import de.extio.game_engine.renderer.g2d.G2DRendererCondition; import de.extio.game_engine.spatial2.model.CoordI2; -@Conditional(G2DRendererCondition.class) -@Component public class FantasyPatternRenderer implements PatternRenderer { @Override 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 bd2d236..c868a9f 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,14 +5,9 @@ import java.awt.GradientPaint; import java.awt.Graphics2D; import java.awt.image.BufferedImage; -import org.springframework.context.annotation.Conditional; -import org.springframework.stereotype.Component; -import de.extio.game_engine.renderer.g2d.G2DRendererCondition; import de.extio.game_engine.spatial2.model.CoordI2; -@Conditional(G2DRendererCondition.class) -@Component public class MetroPatternRenderer implements PatternRenderer { @Override 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 d166172..9a916e3 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 @@ -5,15 +5,9 @@ import java.awt.GradientPaint; import java.awt.Graphics2D; import java.awt.image.BufferedImage; -import org.springframework.context.annotation.Conditional; -import org.springframework.stereotype.Component; - -import de.extio.game_engine.renderer.g2d.G2DRendererCondition; import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont; import de.extio.game_engine.spatial2.model.CoordI2; -@Conditional(G2DRendererCondition.class) -@Component public class ModernPatternRenderer implements PatternRenderer { @Override 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 206300f..c05d405 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 @@ -5,11 +5,7 @@ import java.awt.Graphics2D; import java.util.ArrayList; import java.util.List; -import org.springframework.context.annotation.Conditional; -import org.springframework.stereotype.Component; - import de.extio.game_engine.renderer.RendererControl; -import de.extio.game_engine.renderer.g2d.G2DRendererCondition; import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont; import de.extio.game_engine.renderer.model.color.ImmutableRgbaColor; import de.extio.game_engine.renderer.model.color.RgbaColor; @@ -17,12 +13,6 @@ import de.extio.game_engine.spatial2.model.CoordI2; import de.extio.game_engine.spatial2.model.ImmutableCoordI2; import de.extio.game_engine.util.rng.ThreadLocalXorShift128Random; -/** - * Default implementation of PatternRenderer that draws borders and panels in a decorative style. - * This implementation provides the default theming for UI components. - */ -@Conditional(G2DRendererCondition.class) -@Component public class SpacecraftPatternRenderer implements PatternRenderer { private final static List STARS = new ArrayList<>(); 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 a120a1b..06af79f 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,14 +5,9 @@ import java.awt.GradientPaint; import java.awt.Graphics2D; import java.awt.image.BufferedImage; -import org.springframework.context.annotation.Conditional; -import org.springframework.stereotype.Component; -import de.extio.game_engine.renderer.g2d.G2DRendererCondition; import de.extio.game_engine.spatial2.model.CoordI2; -@Conditional(G2DRendererCondition.class) -@Component public class SteampunkPatternRenderer implements PatternRenderer { private java.awt.image.BufferedImage patternCache; 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 caedb56..2de2788 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,14 +4,8 @@ import java.awt.Color; import java.awt.GradientPaint; import java.awt.Graphics2D; -import org.springframework.context.annotation.Conditional; -import org.springframework.stereotype.Component; - -import de.extio.game_engine.renderer.g2d.G2DRendererCondition; import de.extio.game_engine.spatial2.model.CoordI2; -@Conditional(G2DRendererCondition.class) -@Component public class UrbanPatternRenderer implements PatternRenderer { @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 a00e6fa..9dc1d0d 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,14 +5,9 @@ import java.awt.GradientPaint; import java.awt.Graphics2D; import java.awt.image.BufferedImage; -import org.springframework.context.annotation.Conditional; -import org.springframework.stereotype.Component; -import de.extio.game_engine.renderer.g2d.G2DRendererCondition; import de.extio.game_engine.spatial2.model.CoordI2; -@Conditional(G2DRendererCondition.class) -@Component public class VintagePatternRenderer implements PatternRenderer { @Override