refactor(renderer): All beans use auto configurations

This commit is contained in:
extio-de
2026-01-05 22:30:20 +01:00
parent 96f338bc24
commit 045a9bbb9d
25 changed files with 178 additions and 138 deletions

View File

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

View File

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

View File

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

View File

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

View File

@@ -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();
}
}

View File

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

View File

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

View File

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

View File

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

View File

@@ -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<String, CachedImage> IMAGE_CACHE = new HashMap<>();

View File

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

View File

@@ -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<CustomControlConfiguration<? extends G2DBaseControlImpl>>) (java.util.Collection<?>) this.rendererData.getApplicationContext().getBeansOfType(CustomControlConfiguration.class).values();
this.customControlConfigurations = List.copyOf(beans);
}
var control = (G2DBaseControlImpl) CACHED_CONTROLS.get(this.id);

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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<Star> STARS = new ArrayList<>();

View File

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

View File

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

View File

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