feat(renderer): Add G2DRendererCondition to control rendering based on configuration

This commit is contained in:
extio-de
2025-12-22 17:39:43 +01:00
parent af6242eaad
commit f4899ba777
11 changed files with 64 additions and 1 deletions

View File

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

View File

@@ -14,8 +14,11 @@ import java.util.Objects;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import org.springframework.context.annotation.Conditional;
import org.springframework.stereotype.Component; 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.g2d.G2DRendererControl;
import de.extio.game_engine.renderer.model.RenderingBoLayer; import de.extio.game_engine.renderer.model.RenderingBoLayer;
import de.extio.game_engine.renderer.model.color.ImmutableRgbaColor; 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.spatial2.model.MutableCoordI2;
import de.extio.game_engine.util.rng.ThreadLocalXorShift128Random; import de.extio.game_engine.util.rng.ThreadLocalXorShift128Random;
@Conditional(G2DRendererCondition.class)
@Component @Component
public class G2DDrawBackground extends G2DAbstractRenderingBo { public class G2DDrawBackground extends G2DAbstractRenderingBo {

View File

@@ -6,9 +6,11 @@ import java.awt.Graphics2D;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.springframework.context.annotation.Conditional;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import de.extio.game_engine.renderer.g2d.G2DRenderer; 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.g2d.control.components.ComponentRenderingSupport;
import de.extio.game_engine.renderer.model.RenderingBoLayer; import de.extio.game_engine.renderer.model.RenderingBoLayer;
import de.extio.game_engine.renderer.model.bo.DrawEffectRenderingBo; 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.ImmutableCoordI2;
import de.extio.game_engine.spatial2.model.MutableCoordI2; import de.extio.game_engine.spatial2.model.MutableCoordI2;
@Conditional(G2DRendererCondition.class)
@Component @Component
public class G2DDrawEffect extends G2DAbstractRenderingBo implements DrawEffectRenderingBo { public class G2DDrawEffect extends G2DAbstractRenderingBo implements DrawEffectRenderingBo {

View File

@@ -8,8 +8,10 @@ import java.awt.font.TextAttribute;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import org.springframework.context.annotation.Conditional;
import org.springframework.stereotype.Component; 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.RenderingBoLayer;
import de.extio.game_engine.renderer.model.bo.DrawFontRenderingBo; import de.extio.game_engine.renderer.model.bo.DrawFontRenderingBo;
import de.extio.game_engine.renderer.model.bo.DrawFontRenderingBoTextAlignment; 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.ImmutableCoordI2;
import de.extio.game_engine.spatial2.model.MutableCoordI2; import de.extio.game_engine.spatial2.model.MutableCoordI2;
@Conditional(G2DRendererCondition.class)
@Component @Component
public class G2DDrawFont extends G2DAbstractRenderingBo implements DrawFontRenderingBo { public class G2DDrawFont extends G2DAbstractRenderingBo implements DrawFontRenderingBo {

View File

@@ -4,10 +4,13 @@ import java.awt.Color;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.util.Collection; import java.util.Collection;
import org.springframework.context.annotation.Conditional;
import org.springframework.stereotype.Component; 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.RenderingBoLayer;
@Conditional(G2DRendererCondition.class)
@Component @Component
public class G2DDrawFpsHistory extends G2DAbstractRenderingBo { public class G2DDrawFpsHistory extends G2DAbstractRenderingBo {

View File

@@ -11,13 +11,15 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import org.springframework.context.annotation.Conditional;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import de.extio.game_engine.renderer.g2d.G2DRenderer; 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.RenderingBoLayer;
import de.extio.game_engine.renderer.model.bo.DrawImageRenderingBo; import de.extio.game_engine.renderer.model.bo.DrawImageRenderingBo;
@Conditional(G2DRendererCondition.class)
@Component @Component
public class G2DDrawImage extends G2DAbstractRenderingBo implements DrawImageRenderingBo { public class G2DDrawImage extends G2DAbstractRenderingBo implements DrawImageRenderingBo {

View File

@@ -2,11 +2,14 @@ package de.extio.game_engine.renderer.g2d.bo.rendering;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import org.springframework.context.annotation.Conditional;
import org.springframework.stereotype.Component; 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.RenderingBoLayer;
import de.extio.game_engine.renderer.model.bo.DrawTestRenderingBo; import de.extio.game_engine.renderer.model.bo.DrawTestRenderingBo;
@Conditional(G2DRendererCondition.class)
@Component @Component
public class G2DDrawTest extends G2DAbstractRenderingBo implements DrawTestRenderingBo { public class G2DDrawTest extends G2DAbstractRenderingBo implements DrawTestRenderingBo {

View File

@@ -2,14 +2,17 @@ package de.extio.game_engine.renderer.g2d.bo.rendering;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import org.springframework.context.annotation.Conditional;
import org.springframework.stereotype.Component; 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.g2d.control.components.ComponentRenderingSupport;
import de.extio.game_engine.renderer.model.RenderingBoLayer; import de.extio.game_engine.renderer.model.RenderingBoLayer;
import de.extio.game_engine.renderer.model.bo.DrawWindowRenderingBo; 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.ImmutableRgbaColor;
import de.extio.game_engine.renderer.model.color.RgbaColor; import de.extio.game_engine.renderer.model.color.RgbaColor;
@Conditional(G2DRendererCondition.class)
@Component @Component
public class G2DDrawWindow extends G2DAbstractRenderingBo implements DrawWindowRenderingBo { public class G2DDrawWindow extends G2DAbstractRenderingBo implements DrawWindowRenderingBo {

View File

@@ -8,14 +8,17 @@ import java.awt.image.BufferedImage;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import org.springframework.context.annotation.Conditional;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import de.extio.game_engine.renderer.g2d.G2DRenderer; 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.RenderingBoLayer;
import de.extio.game_engine.renderer.model.bo.DrawWindowRenderingBo; 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.ImmutableRgbaColor;
import de.extio.game_engine.renderer.model.color.RgbaColor; import de.extio.game_engine.renderer.model.color.RgbaColor;
@Conditional(G2DRendererCondition.class)
@Component @Component
public class G2DDrawWindow2 extends G2DAbstractRenderingBo implements DrawWindowRenderingBo { public class G2DDrawWindow2 extends G2DAbstractRenderingBo implements DrawWindowRenderingBo {

View File

@@ -8,8 +8,10 @@ import java.util.Map;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Conditional;
import org.springframework.stereotype.Component; 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.G2DAbstractRenderingBo;
import de.extio.game_engine.renderer.g2d.control.impl.G2DBaseControlImpl; import de.extio.game_engine.renderer.g2d.control.impl.G2DBaseControlImpl;
import de.extio.game_engine.renderer.g2d.control.impl.G2DButtonControlImpl; 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.bo.DrawFontRenderingBoTextAlignment;
import de.extio.game_engine.renderer.model.color.RgbaColor; import de.extio.game_engine.renderer.model.color.RgbaColor;
@Conditional(G2DRendererCondition.class)
@Component @Component
public class G2DDrawControl extends G2DAbstractRenderingBo implements ControlRenderingBo { public class G2DDrawControl extends G2DAbstractRenderingBo implements ControlRenderingBo {

View File

@@ -3,14 +3,17 @@ package de.extio.game_engine.renderer.g2d.control;
import java.awt.Color; import java.awt.Color;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import org.springframework.context.annotation.Conditional;
import org.springframework.stereotype.Component; 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.G2DAbstractRenderingBo;
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont; 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.RenderingBoLayer;
import de.extio.game_engine.renderer.model.color.MutableRgbaColor; import de.extio.game_engine.renderer.model.color.MutableRgbaColor;
import de.extio.game_engine.spatial2.model.CoordI2; import de.extio.game_engine.spatial2.model.CoordI2;
@Conditional(G2DRendererCondition.class)
@Component @Component
public class G2DDrawControlTooltip extends G2DAbstractRenderingBo { public class G2DDrawControlTooltip extends G2DAbstractRenderingBo {