From f4899ba777b49b278d46d83c3da0a1d49ce96efe Mon Sep 17 00:00:00 2001 From: extio-de Date: Mon, 22 Dec 2025 17:39:43 +0100 Subject: [PATCH] feat(renderer): Add G2DRendererCondition to control rendering based on configuration --- .../renderer/g2d/G2DRendererCondition.java | 33 +++++++++++++++++++ .../g2d/bo/rendering/G2DDrawBackground.java | 4 +++ .../g2d/bo/rendering/G2DDrawEffect.java | 3 ++ .../g2d/bo/rendering/G2DDrawFont.java | 3 ++ .../g2d/bo/rendering/G2DDrawFpsHistory.java | 3 ++ .../g2d/bo/rendering/G2DDrawImage.java | 4 ++- .../g2d/bo/rendering/G2DDrawTest.java | 3 ++ .../g2d/bo/rendering/G2DDrawWindow.java | 3 ++ .../g2d/bo/rendering/G2DDrawWindow2.java | 3 ++ .../renderer/g2d/control/G2DDrawControl.java | 3 ++ .../g2d/control/G2DDrawControlTooltip.java | 3 ++ 11 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 src/main/java/de/extio/game_engine/renderer/g2d/G2DRendererCondition.java diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/G2DRendererCondition.java b/src/main/java/de/extio/game_engine/renderer/g2d/G2DRendererCondition.java new file mode 100644 index 0000000..2e98630 --- /dev/null +++ b/src/main/java/de/extio/game_engine/renderer/g2d/G2DRendererCondition.java @@ -0,0 +1,33 @@ +package de.extio.game_engine.renderer.g2d; + +import org.springframework.context.annotation.Condition; +import org.springframework.context.annotation.ConditionContext; +import org.springframework.core.env.Environment; +import org.springframework.core.type.AnnotatedTypeMetadata; + +/** + * Condition that matches when the renderer is enabled and the strategy is g2d. + * + * Behavior mirrors the previous Spring Boot conditions: + * - game-engine.renderer.enabled: when present must be "true"; when missing it matches (default true). + * - game-engine.renderer.strategy: when present must equal "g2d"; when missing it matches. + */ +public class G2DRendererCondition implements Condition { + + @Override + public boolean matches(final ConditionContext context, final AnnotatedTypeMetadata metadata) { + final Environment env = context.getEnvironment(); + + final String enabled = env.getProperty("game-engine.renderer.enabled"); + if (enabled != null && !Boolean.parseBoolean(enabled)) { + return false; + } + + final String strategy = env.getProperty("game-engine.renderer.strategy"); + if (strategy != null) { + return "g2d".equalsIgnoreCase(strategy); + } + + return true; + } +} 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 f281be4..bc0d64c 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 @@ -14,8 +14,11 @@ 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.g2d.G2DRendererCondition; import de.extio.game_engine.renderer.g2d.G2DRendererControl; import de.extio.game_engine.renderer.model.RenderingBoLayer; import de.extio.game_engine.renderer.model.color.ImmutableRgbaColor; @@ -25,6 +28,7 @@ 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 { 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 20c6cc2..22b2d75 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 @@ -6,9 +6,11 @@ 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.g2d.G2DRenderer; +import de.extio.game_engine.renderer.g2d.G2DRendererCondition; import de.extio.game_engine.renderer.g2d.control.components.ComponentRenderingSupport; import de.extio.game_engine.renderer.model.RenderingBoLayer; import de.extio.game_engine.renderer.model.bo.DrawEffectRenderingBo; @@ -19,6 +21,7 @@ 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 { 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 64b3b06..066ce88 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 @@ -8,8 +8,10 @@ import java.awt.font.TextAttribute; import java.util.HashMap; import java.util.Map; +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.DrawFontRenderingBo; import de.extio.game_engine.renderer.model.bo.DrawFontRenderingBoTextAlignment; @@ -17,6 +19,7 @@ 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 { 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 e48b6e2..c13c2f0 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,10 +4,13 @@ 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.RenderingBoLayer; +@Conditional(G2DRendererCondition.class) @Component public class G2DDrawFpsHistory extends G2DAbstractRenderingBo { 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 ba75e3c..76ba545 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,13 +11,15 @@ import java.util.HashMap; 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.RenderingBoLayer; import de.extio.game_engine.renderer.model.bo.DrawImageRenderingBo; +@Conditional(G2DRendererCondition.class) @Component public class G2DDrawImage extends G2DAbstractRenderingBo implements DrawImageRenderingBo { 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 1904834..53b3a52 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,11 +2,14 @@ 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 { diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawWindow.java b/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawWindow.java index 82f808c..c1c7765 100644 --- a/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawWindow.java +++ b/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawWindow.java @@ -2,14 +2,17 @@ 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.g2d.control.components.ComponentRenderingSupport; import de.extio.game_engine.renderer.model.RenderingBoLayer; import de.extio.game_engine.renderer.model.bo.DrawWindowRenderingBo; import de.extio.game_engine.renderer.model.color.ImmutableRgbaColor; import de.extio.game_engine.renderer.model.color.RgbaColor; +@Conditional(G2DRendererCondition.class) @Component public class G2DDrawWindow extends G2DAbstractRenderingBo implements DrawWindowRenderingBo { diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawWindow2.java b/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawWindow2.java index 423df3f..f7a6afb 100644 --- a/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawWindow2.java +++ b/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawWindow2.java @@ -8,14 +8,17 @@ import java.awt.image.BufferedImage; import java.util.HashMap; import java.util.Map; +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.RenderingBoLayer; import de.extio.game_engine.renderer.model.bo.DrawWindowRenderingBo; import de.extio.game_engine.renderer.model.color.ImmutableRgbaColor; import de.extio.game_engine.renderer.model.color.RgbaColor; +@Conditional(G2DRendererCondition.class) @Component public class G2DDrawWindow2 extends G2DAbstractRenderingBo implements DrawWindowRenderingBo { 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 80caaf8..2e08161 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,8 +8,10 @@ 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.control.impl.G2DBaseControlImpl; import de.extio.game_engine.renderer.g2d.control.impl.G2DButtonControlImpl; @@ -27,6 +29,7 @@ import de.extio.game_engine.renderer.model.bo.ControlRenderingBo; import de.extio.game_engine.renderer.model.bo.DrawFontRenderingBoTextAlignment; import de.extio.game_engine.renderer.model.color.RgbaColor; +@Conditional(G2DRendererCondition.class) @Component public class G2DDrawControl extends G2DAbstractRenderingBo implements ControlRenderingBo { 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 1341e93..0641c36 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,14 +3,17 @@ 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 {