Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/main/java/ti4/game/persistence/GameSaveService.java
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ private static boolean save(Game game) {
}

private static void updateBeforeSave(Game game) {
TransientGameInfoUpdater.removePlanetsMissingFromTheGame(game);
TransientGameInfoUpdater.update(game);

// Ugly fix to update seen tiles data for fog since doing it in
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ class TransientGameInfoUpdater {

static void update(Game game) {
try {
removePlanetsMissingFromTheGame(game);
ButtonHelperFactionSpecific.checkIihqAttachment(game);
DiscordantStarsHelper.checkGardenWorlds(game);
DiscordantStarsHelper.checkTFTerraform(game);
Expand All @@ -46,7 +45,7 @@ static void update(Game game) {
}
}

private static void removePlanetsMissingFromTheGame(Game game) {
static void removePlanetsMissingFromTheGame(Game game) {
Set<String> knownPlanets = game.getPlanetsInfo().keySet();
for (Player player : game.getPlayers().values()) {
for (String planet : new ArrayList<>(player.getPlanets())) {
Expand Down
7 changes: 1 addition & 6 deletions src/main/java/ti4/image/playerarea/PlanetCard.java
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,7 @@ static int draw(PlayerAreaContext ctx, Player player, String planetName, int x,
List<String> exhaustedPlanetsAbilities = player.getExhaustedPlanetsAbilities();
try {
Planet planet = game.getPlanetsInfo().get(planetName);
if (planet == null) {
BotLogger.warning(
new LogOrigin(player),
"Planet " + planetName + " not found in game " + game.getName() + ". Skipping its card.");
return deltaX;
}
if (planet == null) return deltaX;
PlanetModel planetModel = planet.getPlanetModel();
if (planetModel == null) return deltaX;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;

import java.io.StringWriter;
import java.util.HashSet;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
Expand Down Expand Up @@ -30,13 +31,26 @@ void setUp() {
}

@Test
void planetsThatAreNotInTheGameAreRemovedFromThePlayersWhenTheGameIsUpdated() {
void planetsThatAreNotInTheGameAreRemovedFromThePlayers() {
holder.addPlanet("quann");
holder.addPlanet("nosuchplanet");

TransientGameInfoUpdater.update(game);
TransientGameInfoUpdater.removePlanetsMissingFromTheGame(game);

assertTrue(holder.getPlanets().contains("quann"));
assertFalse(holder.getPlanets().contains("nosuchplanet"));
}

// Loading runs on every read, including the copy each queued render takes, so it must leave the repair to the
// save; otherwise an ended game nobody saves logs the same removal on every load.
@Test
void loadingAGameKeepsPlanetsThatAreNotInTheGame() throws Exception {
holder.addPlanet("nosuchplanet");
StringWriter saved = new StringWriter();
GameSaveService.writeGame(game, saved);

Game loaded = GameLoadService.readGame(saved.toString().lines().toList());

assertTrue(loaded.getPlayer("111").getPlanets().contains("nosuchplanet"));
}
}
Loading