Skip to content

Commit c3cb735

Browse files
committed
Properly update the tiles' room IDs
1 parent e65ab94 commit c3cb735

File tree

4 files changed

+22
-10
lines changed

4 files changed

+22
-10
lines changed

src/toniarts/openkeeper/game/component/MapTile.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,10 @@
1717
package toniarts.openkeeper.game.component;
1818

1919
import com.simsilica.es.EntityComponent;
20+
import com.simsilica.es.EntityId;
2021
import java.awt.Point;
2122
import java.util.HashMap;
2223
import java.util.Map;
23-
24-
import com.simsilica.es.EntityId;
2524
import toniarts.openkeeper.tools.convert.map.Tile;
2625

2726
/**
@@ -63,6 +62,7 @@ public MapTile(MapTile mapTile) {
6362
this.bridgeTerrainType = mapTile.bridgeTerrainType;
6463
this.p = mapTile.p;
6564
this.index = mapTile.index;
65+
this.room = mapTile.room;
6666

6767
if (mapTile.selection != null && !mapTile.selection.isEmpty()) {
6868
this.selection = HashMap.newHashMap(4);

src/toniarts/openkeeper/game/controller/GameWorldController.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,7 @@ public void build(Vector2f start, Vector2f end, short playerId, short roomId) {
402402
substractGoldCapacityFromPlayer(firstInstance); // Important to update the gold here
403403
firstInstance.addCoordinates(instancePlots);
404404
for (Point p : instancePlots) {
405-
mapController.getRoomCoordinates().put(p, firstInstance);
405+
mapController.addRoomCoordinate(firstInstance, p);
406406
}
407407

408408
// Update the merged room
@@ -416,7 +416,7 @@ public void build(Vector2f start, Vector2f end, short playerId, short roomId) {
416416
updatableTiles.addAll(Arrays.asList(WorldUtils.getSurroundingTiles(mapController.getMapData(), p, true)));
417417
if (!firstInstance.equals(instance)) {
418418
firstInstance.addCoordinate(p);
419-
mapController.getRoomCoordinates().put(p, firstInstance);
419+
mapController.addRoomCoordinate(firstInstance, p);
420420
}
421421
}
422422
}
@@ -425,7 +425,7 @@ public void build(Vector2f start, Vector2f end, short playerId, short roomId) {
425425
}
426426

427427
// Update
428-
mapController.updateRooms(updatableTiles.toArray(new Point[0]));
428+
mapController.updateRooms(updatableTiles.toArray(Point[]::new));
429429

430430
// New room, calculate gold capacity
431431
RoomInstance instance = mapController.getRoomCoordinates().get(instancePlots.get(0));

src/toniarts/openkeeper/game/controller/IMapController.java

+8
Original file line numberDiff line numberDiff line change
@@ -218,4 +218,12 @@ public interface IMapController extends IMapInformation<IMapTileController>, IGa
218218
*/
219219
public int getPlayerSkeletonCapacity(short playerId);
220220

221+
/**
222+
* Add a coordinate to a room
223+
*
224+
* @param roomInstance roomInstance to add
225+
* @param point coordinate to add
226+
*/
227+
public void addRoomCoordinate(RoomInstance roomInstance, Point point);
228+
221229
}

src/toniarts/openkeeper/game/controller/MapController.java

+9-5
Original file line numberDiff line numberDiff line change
@@ -375,12 +375,10 @@ public void removeRoomInstances(RoomInstance... instances) {
375375
roomController.remove();
376376

377377
roomControllers.remove(instance);
378-
for (Point p : instance.getCoordinates()) {
379-
roomCoordinates.remove(p);
380-
}
381-
382-
// Remove room from the tiles
383378
for (Point roomCoordinate : instance.getCoordinates()) {
379+
roomCoordinates.remove(roomCoordinate);
380+
381+
// Remove room from the tile
384382
IMapTileController roomTile = mapData.getTile(roomCoordinate);
385383
if (roomTile.getRoomId().equals(roomController.getEntityId())) {
386384
roomTile.setRoomId(null);
@@ -831,4 +829,10 @@ public int getPlayerSkeletonCapacity(short playerId) {
831829
public boolean isSolid(Point p) {
832830
return mapInformation.isSolid(p);
833831
}
832+
833+
@Override
834+
public void addRoomCoordinate(RoomInstance roomInstance, Point point) {
835+
roomCoordinates.put(point, roomInstance);
836+
getMapData().getTile(point).setRoomId(getRoomController(roomInstance).getEntityId());
837+
}
834838
}

0 commit comments

Comments
 (0)