refactor(renderer): All beans use auto configurations
This commit is contained in:
21
README.md
21
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**
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<>();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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<>();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user