From 74ae9dfc5b275dd0c32ebc2b9a9a158010000821 Mon Sep 17 00:00:00 2001 From: mohammadreza Date: Sun, 17 May 2026 06:35:18 -0700 Subject: [PATCH] implement Location.java --- .../java/org/project/location/Location.java | 67 ++++++++++++++++--- 1 file changed, 58 insertions(+), 9 deletions(-) diff --git a/Java-Knight/src/main/java/org/project/location/Location.java b/Java-Knight/src/main/java/org/project/location/Location.java index b0b4b98..202eb42 100644 --- a/Java-Knight/src/main/java/org/project/location/Location.java +++ b/Java-Knight/src/main/java/org/project/location/Location.java @@ -3,26 +3,75 @@ package org.project.location; import org.project.entity.enemies.Enemy; import java.util.ArrayList; +import java.util.Collections; +import java.util.List; public class Location { - private String name; - private ArrayList enemies; + private final String name; - public Location(ArrayList locations, ArrayList enemies) { - this.locations = locations; - this.enemies = enemies; + private final List connectedLocations; + private final List enemies; + + public Location(String name) { + this.name = name; + this.connectedLocations = new ArrayList<>(); + this.enemies = new ArrayList<>(); + } + + public Location(String name, List connectedLocations, List enemies) { + this.name = name; + + this.connectedLocations = + connectedLocations != null ? new ArrayList<>(connectedLocations) : new ArrayList<>(); + + this.enemies = + enemies != null ? new ArrayList<>(enemies) : new ArrayList<>(); } public String getName() { return name; } - public ArrayList getLocations() { - return locations; + public List getConnectedLocations() { + return Collections.unmodifiableList(connectedLocations); } - public ArrayList getEnemies() { - return enemies; + public List getEnemies() { + return Collections.unmodifiableList(enemies); + } + + // ------------------------------------ + // ADD / REMOVE LOCATIONS + // ------------------------------------location + + public void connect(Location other) { + if (other == null || other == this) return; + + if (!connectedLocations.contains(other)) { + connectedLocations.add(other); + } + + if (!other.connectedLocations.contains(this)) { + other.connectedLocations.add(this); + } + } + + + public void removeLocation(Location location) { + connectedLocations.remove(location); + } + + // ------------------------------------ + // ADD / REMOVE ENEMIES + // ------------------------------------ + public void addEnemy(Enemy enemy) { + if (enemy != null) { + enemies.add(enemy); + } + } + + public void removeEnemy(Enemy enemy) { + enemies.remove(enemy); } }