Tokens and command objects reworked (part 1 of 2):

- fixed that copy effect doesn't restore original image after effect's end;
 - removed outdated availableImageSetCodes (all images auto-selected from tokens database now, related to #10139);
 - refactor command objects to use CommandObjectImpl;
 - refactor planes/emblems/etc objects to use MageObjectImpl, added copyable support;
 - refactor another game objects to remove some duplicated fields;
This commit is contained in:
Oleg Agafonov 2023-05-08 02:15:07 +04:00
parent 46f6593da8
commit 5f55c7c667
45 changed files with 517 additions and 477 deletions

View file

@ -35,7 +35,7 @@ import java.util.*;
/**
* @author TheElk801
*/
public class Dungeon implements CommandObject {
public class Dungeon extends CommandObjectImpl {
private static final Set<String> dungeonNames = new HashSet<>();
@ -49,31 +49,24 @@ public class Dungeon implements CommandObject {
private static final ObjectColor emptyColor = new ObjectColor();
private static final ManaCosts<ManaCost> emptyCost = new ManaCostsImpl<>();
private final String name;
private UUID id;
private UUID controllerId;
private boolean copy;
private MageObject copyFrom; // copied card INFO (used to call original adjusters)
private FrameStyle frameStyle;
private final Abilities<Ability> abilites = new AbilitiesImpl<>();
private String expansionSetCodeForImage;
private final List<DungeonRoom> dungeonRooms = new ArrayList<>();
private DungeonRoom currentRoom = null;
public Dungeon(String name, String expansionSetCodeForImage) {
this.id = UUID.randomUUID();
this.name = name;
this.expansionSetCodeForImage = expansionSetCodeForImage;
public Dungeon(String name) {
super(name);
}
public Dungeon(final Dungeon dungeon) {
this.id = dungeon.id;
this.name = dungeon.name;
super(dungeon);
this.frameStyle = dungeon.frameStyle;
this.controllerId = dungeon.controllerId;
this.copy = dungeon.copy;
this.copyFrom = (dungeon.copyFrom != null ? dungeon.copyFrom : null);
this.expansionSetCodeForImage = dungeon.expansionSetCodeForImage;
this.copyRooms(dungeon);
}
@ -91,7 +84,7 @@ public class Dungeon implements CommandObject {
public void addRoom(DungeonRoom room) {
this.dungeonRooms.add(room);
room.getRoomTriggeredAbility().setSourceId(id);
room.getRoomTriggeredAbility().setSourceId(this.getId());
this.abilites.add(room.getRoomTriggeredAbility());
}
@ -173,11 +166,6 @@ public class Dungeon implements CommandObject {
return frameStyle;
}
@Override
public void assignNewId() {
this.id = UUID.randomUUID();
}
@Override
public MageObject getSourceObject() {
return null;
@ -214,30 +202,6 @@ public class Dungeon implements CommandObject {
return this.copyFrom;
}
@Override
public String getName() {
return name;
}
@Override
public String getIdName() {
return getName() + " [" + getId().toString().substring(0, 3) + ']';
}
@Override
public String getLogName() {
return GameLog.getColoredObjectIdName(this);
}
@Override
public String getImageName() {
return this.name;
}
@Override
public void setName(String name) {
}
@Override
public List<CardType> getCardType(Game game) {
return emptyList;
@ -326,26 +290,11 @@ public class Dungeon implements CommandObject {
public void setStartingDefense(int startingDefense) {
}
@Override
public UUID getId() {
return this.id;
}
@Override
public Dungeon copy() {
return new Dungeon(this);
}
@Override
public String getExpansionSetCodeForImage() {
return expansionSetCodeForImage;
}
@Override
public void setExpansionSetCodeForImage(String expansionSetCodeForImage) {
this.expansionSetCodeForImage = expansionSetCodeForImage;
}
@Override
public int getZoneChangeCounter(Game game) {
return 1;