Skip to content

Commit

Permalink
Settler: Prevent settler from settling nearby cities
Browse files Browse the repository at this point in the history
  • Loading branch information
RyanGrieb committed Jul 14, 2021
1 parent 72f088c commit 1bf1f8f
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 1 deletion.
9 changes: 9 additions & 0 deletions core/src/main/java/me/rhin/openciv/game/CivGame.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package me.rhin.openciv.game;

import java.util.ArrayList;
import java.util.HashMap;

import com.badlogic.gdx.Gdx;
Expand Down Expand Up @@ -298,4 +299,12 @@ public int getTurn() {
return turns;
}

public ArrayList<City> getCities() {
ArrayList<City> cities = new ArrayList<>();
for (Player player : players.values())
cities.addAll(player.getOwnedCities());

return cities;
}

}
15 changes: 15 additions & 0 deletions core/src/main/java/me/rhin/openciv/game/unit/type/Settler.java
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,21 @@ public boolean canAct() {
if (unit.getCurrentMovement() < 1) {
return false;
}

for (City city : Civilization.getInstance().getGame().getCities()) {
float distX = Math.abs(unit.getTile().getGridX() - city.getOriginTile().getGridX());
float distY = Math.abs(unit.getTile().getGridY() - city.getOriginTile().getGridY());

System.out.println(distX + distY);
if (distX + distY < 4)
return false;
}

for (Tile tile : unit.getStandingTile().getAdjTiles())
for (Tile adjTile : tile.getAdjTiles())
if (adjTile.getTerritory() != null)
return false;

return true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -381,7 +381,9 @@ public void onUnitMove(WebSocket conn, MoveUnitPacket packet) {
public void onSettleCity(WebSocket conn, SettleCityPacket settleCityPacket) {
Player cityPlayer = getPlayerByConn(conn);
settleCityPacket.setOwner(cityPlayer.getName());


//FIXME: The server needs to check if the unit has movement & is too close to other cities.

String cityName = "Unknown";
boolean identicalName = true;

Expand Down

0 comments on commit 1bf1f8f

Please sign in to comment.