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

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