- Resolve several issues in the Game State support for Mutate/merged cards.

This commit is contained in:
Michael Kamensky
2021-02-16 09:46:17 +03:00
parent de11dcd280
commit 7ef07fa681

View File

@@ -262,7 +262,12 @@ public abstract class GameState {
if (c.getPaperCard() == null) { if (c.getPaperCard() == null) {
return; return;
} }
if (c.getMergedCards().isEmpty()) {
newText.append(c.getPaperCard().getName()); newText.append(c.getPaperCard().getName());
} else {
// we have to go by the current top card name here
newText.append(c.getTopMergedCard().getPaperCard().getName());
}
} }
if (c.isCommander()) { if (c.isCommander()) {
newText.append("|IsCommander"); newText.append("|IsCommander");
@@ -369,10 +374,10 @@ public abstract class GameState {
if (!c.getMergedCards().isEmpty()) { if (!c.getMergedCards().isEmpty()) {
List<String> mergedCardNames = new ArrayList<>(); List<String> mergedCardNames = new ArrayList<>();
for (Card merged : c.getMergedCards()) { for (Card merged : c.getMergedCards()) {
if (merged.getId() == c.getId()) { if (c.getTopMergedCard() == merged) {
continue; continue;
} }
mergedCardNames.add(merged.getName()); mergedCardNames.add(merged.getPaperCard().getName().replace(",", "^"));
} }
newText.append("|MergedCards:").append(TextUtil.join(mergedCardNames, ",")); newText.append("|MergedCards:").append(TextUtil.join(mergedCardNames, ","));
} }
@@ -1131,7 +1136,7 @@ public abstract class GameState {
Card mergedTo = entry.getKey(); Card mergedTo = entry.getKey();
for(String mergedCardName : entry.getValue()) { for(String mergedCardName : entry.getValue()) {
Card c; Card c;
PaperCard pc = StaticData.instance().getCommonCards().getCard(mergedCardName); // FIXME: is set relevant here? PaperCard pc = StaticData.instance().getCommonCards().getCard(mergedCardName. replace("^", ","));
if (pc == null) { if (pc == null) {
System.err.println("ERROR: Tried to create a non-existent card named " + mergedCardName + " (as a merged card) when loading game state!"); System.err.println("ERROR: Tried to create a non-existent card named " + mergedCardName + " (as a merged card) when loading game state!");
continue; continue;