feat(renderer): Add apply method to RenderingBo interface and implement in rendering classes
This commit is contained in:
@@ -20,6 +20,7 @@ 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.RenderingBo;
|
||||
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.RgbaColor;
|
||||
@@ -50,7 +51,7 @@ public class G2DDrawBackground extends G2DAbstractRenderingBo {
|
||||
|
||||
private final CoordI2 overflow = MutableCoordI2.create();
|
||||
|
||||
private final List<Star> stars = new ArrayList<>();
|
||||
private List<Star> stars;
|
||||
|
||||
private CoordI2 starsViewport = ImmutableCoordI2.create();
|
||||
|
||||
@@ -58,6 +59,33 @@ public class G2DDrawBackground extends G2DAbstractRenderingBo {
|
||||
super(RenderingBoLayer.BACKGROUND0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void apply(RenderingBo other) {
|
||||
super.apply(other);
|
||||
|
||||
if (other instanceof G2DDrawBackground o) {
|
||||
this.bgrOffset.setXY(o.bgrOffset);
|
||||
this.sourceOffset.setXY(o.sourceOffset);
|
||||
this.destPosition.setXY(o.destPosition);
|
||||
this.destPosition2.setXY(o.destPosition2);
|
||||
this.overflow.setXY(o.overflow);
|
||||
this.starsViewport = o.starsViewport;
|
||||
this.stars = o.stars; // shallow copy for performance
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() throws Exception {
|
||||
super.close();
|
||||
|
||||
this.bgrOffset.setXY(0, 0);
|
||||
this.sourceOffset.setXY(0, 0);
|
||||
this.destPosition.setXY(0, 0);
|
||||
this.destPosition2.setXY(0, 0);
|
||||
this.overflow.setXY(0, 0);
|
||||
this.starsViewport = ImmutableCoordI2.create();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isScreenshotRelevant() {
|
||||
return false;
|
||||
@@ -207,10 +235,17 @@ public class G2DDrawBackground extends G2DAbstractRenderingBo {
|
||||
}
|
||||
|
||||
private void generateStars(final CoordI2 viewPort) {
|
||||
if (!viewPort.equals(this.starsViewport)) {
|
||||
if (this.stars == null || !viewPort.equals(this.starsViewport)) {
|
||||
if (this.stars == null) {
|
||||
this.stars = new ArrayList<>();
|
||||
}
|
||||
else {
|
||||
this.stars.clear();
|
||||
}
|
||||
|
||||
this.starsViewport = viewPort.toImmutableCoordI2();
|
||||
final var rand = ThreadLocalXorShift128Random.current();
|
||||
this.stars.clear();
|
||||
|
||||
for (var i = 0; i < 350; i++) {
|
||||
this.stars.add(new Star(
|
||||
ImmutableCoordI2.create(rand.nextInt(this.starsViewport.getX()), rand.nextInt(this.starsViewport.getY())),
|
||||
|
||||
@@ -12,6 +12,7 @@ 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.RenderingBo;
|
||||
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.DrawEffectRenderingBoEffects;
|
||||
@@ -255,6 +256,23 @@ public class G2DDrawEffect extends G2DAbstractRenderingBo implements DrawEffectR
|
||||
this.customDouble0 = 0.0;
|
||||
this.customString0 = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void apply(final RenderingBo other) {
|
||||
super.apply(other);
|
||||
|
||||
if (other instanceof final G2DDrawEffect o) {
|
||||
this.effect = o.effect;
|
||||
if (o.relativeCoordinates != null) {
|
||||
this.relativeCoordinates = List.copyOf(o.relativeCoordinates);
|
||||
} else {
|
||||
this.relativeCoordinates = null;
|
||||
}
|
||||
this.customInt0 = o.customInt0;
|
||||
this.customDouble0 = o.customDouble0;
|
||||
this.customString0 = o.customString0;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public DrawEffectRenderingBo setEffect(final DrawEffectRenderingBoEffects effect) {
|
||||
|
||||
@@ -12,6 +12,7 @@ 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;
|
||||
import de.extio.game_engine.renderer.model.bo.DrawFontRenderingBoTextAlignment;
|
||||
@@ -108,6 +109,17 @@ public class G2DDrawFont extends G2DAbstractRenderingBo implements DrawFontRende
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void apply(final RenderingBo other) {
|
||||
super.apply(other);
|
||||
|
||||
if (other instanceof final G2DDrawFont o) {
|
||||
this.text = o.text;
|
||||
this.size = o.size;
|
||||
this.alignment = o.alignment;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() throws Exception {
|
||||
super.close();
|
||||
|
||||
@@ -8,6 +8,7 @@ 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)
|
||||
@@ -68,6 +69,15 @@ public class G2DDrawFpsHistory extends G2DAbstractRenderingBo {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void apply(final RenderingBo other) {
|
||||
super.apply(other);
|
||||
|
||||
if (other instanceof final G2DDrawFpsHistory o) {
|
||||
this.history = o.history;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() throws Exception {
|
||||
super.close();
|
||||
|
||||
@@ -18,6 +18,7 @@ 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;
|
||||
|
||||
@@ -116,6 +117,19 @@ public class G2DDrawImage extends G2DAbstractRenderingBo implements DrawImageRen
|
||||
cachedImage.setUsed(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void apply(RenderingBo other) {
|
||||
super.apply(other);
|
||||
|
||||
if (other instanceof final G2DDrawImage o) {
|
||||
this.resourceName = o.resourceName;
|
||||
this.transparency = o.transparency;
|
||||
this.imageData = o.imageData;
|
||||
this.scaledX = o.scaledX;
|
||||
this.scaledY = o.scaledY;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() throws Exception {
|
||||
super.close();
|
||||
|
||||
@@ -7,6 +7,7 @@ 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.RenderingBo;
|
||||
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;
|
||||
@@ -62,6 +63,15 @@ public class G2DDrawWindow extends G2DAbstractRenderingBo implements DrawWindowR
|
||||
ComponentRenderingSupport.drawDecorativeBorderFilled(graphics, sx + strength, sy + strength, sw - strength * 2, sh - strength * 2, strength, cMain);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void apply(final RenderingBo other) {
|
||||
super.apply(other);
|
||||
|
||||
if (other instanceof final G2DDrawWindow o) {
|
||||
this.thickBorder = o.thickBorder;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() throws Exception {
|
||||
super.close();
|
||||
|
||||
@@ -13,6 +13,7 @@ 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.DrawWindowRenderingBo;
|
||||
import de.extio.game_engine.renderer.model.color.ImmutableRgbaColor;
|
||||
@@ -82,6 +83,17 @@ public class G2DDrawWindow2 extends G2DAbstractRenderingBo implements DrawWindow
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void apply(final RenderingBo other) {
|
||||
super.apply(other);
|
||||
|
||||
if (other instanceof final G2DDrawWindow2 o) {
|
||||
this.color = o.color;
|
||||
this.thickBorder = o.thickBorder;
|
||||
this.awtColor = o.awtColor;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() throws Exception {
|
||||
super.close();
|
||||
|
||||
@@ -24,6 +24,7 @@ import de.extio.game_engine.renderer.g2d.control.impl.G2DTextfieldControlImpl2;
|
||||
import de.extio.game_engine.renderer.g2d.control.impl.G2DToggleButtonControlImpl;
|
||||
import de.extio.game_engine.renderer.g2d.control.impl.G2DTooltipControl;
|
||||
import de.extio.game_engine.renderer.g2d.control.impl.G2DWindowCloseButtonControlImpl;
|
||||
import de.extio.game_engine.renderer.model.RenderingBo;
|
||||
import de.extio.game_engine.renderer.model.RenderingBoLayer;
|
||||
import de.extio.game_engine.renderer.model.bo.ControlRenderingBo;
|
||||
import de.extio.game_engine.renderer.model.bo.DrawFontRenderingBoTextAlignment;
|
||||
@@ -310,6 +311,26 @@ public class G2DDrawControl extends G2DAbstractRenderingBo implements ControlRen
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void apply(final RenderingBo other) {
|
||||
super.apply(other);
|
||||
|
||||
if (other instanceof final G2DDrawControl o) {
|
||||
this.controlId = o.controlId;
|
||||
this.clazz = o.clazz;
|
||||
this.caption = o.caption;
|
||||
this.controlGroup = o.controlGroup;
|
||||
this.fontSize = o.fontSize;
|
||||
this.customData = o.customData;
|
||||
this.customData2 = o.customData2;
|
||||
this.customData3 = o.customData3;
|
||||
this.customData4 = o.customData4;
|
||||
this.visible = o.visible;
|
||||
this.enabled = o.enabled;
|
||||
this.tooltip = o.tooltip;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() throws Exception {
|
||||
|
||||
@@ -226,6 +226,21 @@ public abstract class AbstractRenderingBo implements RenderingBo {
|
||||
this.layer = this.defaultLayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void apply(final RenderingBo other) {
|
||||
if (other instanceof final AbstractRenderingBo abstractRenderingBo) {
|
||||
this.id = abstractRenderingBo.id;
|
||||
this.color = abstractRenderingBo.color;
|
||||
this.x = abstractRenderingBo.x;
|
||||
this.y = abstractRenderingBo.y;
|
||||
this.localX = abstractRenderingBo.localX;
|
||||
this.localY = abstractRenderingBo.localY;
|
||||
this.width = abstractRenderingBo.width;
|
||||
this.height = abstractRenderingBo.height;
|
||||
this.layer = abstractRenderingBo.layer;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closeStatic() {
|
||||
|
||||
|
||||
@@ -107,6 +107,8 @@ public interface RenderingBo extends AutoCloseable {
|
||||
*/
|
||||
RenderingBo withPositionRelative(HasPosition2 position);
|
||||
|
||||
void apply(RenderingBo other);
|
||||
|
||||
void closeStatic();
|
||||
|
||||
void setRendererData(RendererData RendererData);
|
||||
|
||||
Reference in New Issue
Block a user