diff options
Diffstat (limited to 'src/main/java/org/luxons')
3 files changed, 58 insertions, 0 deletions
diff --git a/src/main/java/org/luxons/sevenwonders/game/data/definitions/EffectsDefinition.java b/src/main/java/org/luxons/sevenwonders/game/data/definitions/EffectsDefinition.java index f7fe5573..d239318d 100644 --- a/src/main/java/org/luxons/sevenwonders/game/data/definitions/EffectsDefinition.java +++ b/src/main/java/org/luxons/sevenwonders/game/data/definitions/EffectsDefinition.java @@ -12,6 +12,8 @@ import org.luxons.sevenwonders.game.effects.MilitaryReinforcements; import org.luxons.sevenwonders.game.effects.ProductionIncrease; import org.luxons.sevenwonders.game.effects.RawPointsIncrease; import org.luxons.sevenwonders.game.effects.ScienceProgress; +import org.luxons.sevenwonders.game.effects.SpecialAction; +import org.luxons.sevenwonders.game.effects.SpecialActionTrigger; public class EffectsDefinition implements Definition<List<Effect>> { @@ -29,6 +31,8 @@ public class EffectsDefinition implements Definition<List<Effect>> { private RawPointsIncrease points; + private SpecialAction action; + @Override public List<Effect> create(Settings settings) { List<Effect> effects = new ArrayList<>(); @@ -53,6 +57,9 @@ public class EffectsDefinition implements Definition<List<Effect>> { if (points != null) { effects.add(points); } + if (action != null) { + effects.add(new SpecialActionTrigger(action)); + } return effects; } } diff --git a/src/main/java/org/luxons/sevenwonders/game/effects/SpecialAction.java b/src/main/java/org/luxons/sevenwonders/game/effects/SpecialAction.java new file mode 100644 index 00000000..83cc1956 --- /dev/null +++ b/src/main/java/org/luxons/sevenwonders/game/effects/SpecialAction.java @@ -0,0 +1,25 @@ +package org.luxons.sevenwonders.game.effects; + +public enum SpecialAction { + /** + * The player can play the last card of each age instead of discarding it. This card can be played by paying its + * cost, discarded to gain 3 coins or used in the construction of his or her Wonder. + */ + PLAY_LAST_CARD, + + /** + * Once per age, a player can construct a building from his or her hand for free. + */ + ONE_FREE, + + /** + * The player can look at all cards discarded since the beginning of the game, pick one and build it for free. + */ + PLAY_DISCARDED, + + /** + * The player can, at the end of the game, “copy” a Guild of his or her choice (purple card), built by one of his or + * her two neighboring cities. + */ + COPY_GUILD; +} diff --git a/src/main/java/org/luxons/sevenwonders/game/effects/SpecialActionTrigger.java b/src/main/java/org/luxons/sevenwonders/game/effects/SpecialActionTrigger.java new file mode 100644 index 00000000..aef06741 --- /dev/null +++ b/src/main/java/org/luxons/sevenwonders/game/effects/SpecialActionTrigger.java @@ -0,0 +1,26 @@ +package org.luxons.sevenwonders.game.effects; + +import org.luxons.sevenwonders.game.boards.Board; + +public class SpecialActionTrigger implements Effect { + + private final SpecialAction specialAction; + + public SpecialActionTrigger(SpecialAction specialAction) { + this.specialAction = specialAction; + } + + public SpecialAction getSpecialAction() { + return specialAction; + } + + @Override + public void apply(Board board, Board leftNeighbourBoard, Board rightNeighbourBoard) { + + } + + @Override + public int computePoints(Board board, Board leftNeighbourBoard, Board rightNeighbourBoard) { + return 0; + } +} |