From 5b2edb3234c31e5420ba8de3b9782222710ba6a5 Mon Sep 17 00:00:00 2001 From: ousseyn01 <ousseyn.ndiaye9@gmail.com> Date: Thu, 5 Dec 2024 21:06:02 +0100 Subject: [PATCH] TerrainHandler.java is CREATED and DONE --- .../java/model/elements/TerrainHandler.java | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/main/java/model/elements/TerrainHandler.java diff --git a/src/main/java/model/elements/TerrainHandler.java b/src/main/java/model/elements/TerrainHandler.java new file mode 100644 index 0000000..29aac7a --- /dev/null +++ b/src/main/java/model/elements/TerrainHandler.java @@ -0,0 +1,48 @@ +package model.elements; + +import model.ModelElement; +import model.TerrainElement; +import util.Position; + +import java.util.*; + +public class TerrainHandler implements ElementHandler { + private final List<TerrainElement> terrainElements; + private final Class<? extends TerrainElement> terrainType; + private final ModelElement modelElement; + + public TerrainHandler(List<TerrainElement> terrainElements, + Class<? extends TerrainElement> terrainType, + ModelElement modelElement) { + this.terrainElements = terrainElements; + this.terrainType = terrainType; + this.modelElement = modelElement; + } + + @Override + public void addElement(Position position) { + try { + TerrainElement element = terrainType.getConstructor(Position.class).newInstance(position); + terrainElements.add(element); + } catch (Exception e) { + throw new RuntimeException("Failed to create terrain element", e); + } + } + + @Override + public void removeElement(Position position) { + terrainElements.removeIf(element -> element.getPosition().equals(position) && terrainType.isInstance(element)); + } + + @Override + public boolean hasElement(Position position) { + return terrainElements.stream() + .anyMatch(element -> element.getPosition().equals(position) && terrainType.isInstance(element)); + } + + @Override + public ModelElement getModelElement() { + return modelElement; + } +} + -- GitLab