mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 18:58:00 +00:00
ExtraTurn in PlayerView
This commit is contained in:
@@ -219,7 +219,7 @@ public class CombatUtil {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "CARDNAME can't attack during extra turns.":
|
case "CARDNAME can't attack during extra turns.":
|
||||||
if (game.getPhaseHandler().getPlayerTurn().isPlayingExtraTurn()) {
|
if (game.getPhaseHandler().getPlayerTurn().isExtraTurn()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -800,6 +800,11 @@ public class PhaseHandler implements java.io.Serializable {
|
|||||||
ExtraTurn extraTurn = !extraTurns.isEmpty() ? extraTurns.pop() : null;
|
ExtraTurn extraTurn = !extraTurns.isEmpty() ? extraTurns.pop() : null;
|
||||||
Player nextPlayer = extraTurn != null ? extraTurn.getPlayer() : game.getNextPlayerAfter(playerTurn);
|
Player nextPlayer = extraTurn != null ? extraTurn.getPlayer() : game.getNextPlayerAfter(playerTurn);
|
||||||
|
|
||||||
|
// update ExtraTurn Count for all players
|
||||||
|
for (final Player p : game.getPlayers()) {
|
||||||
|
p.setExtraTurnCount(getExtraTurnForPlayer(p));
|
||||||
|
}
|
||||||
|
|
||||||
if (extraTurn != null) {
|
if (extraTurn != null) {
|
||||||
// The bottom of the extra turn stack is the normal turn
|
// The bottom of the extra turn stack is the normal turn
|
||||||
nextPlayer.setExtraTurn(!extraTurns.isEmpty());
|
nextPlayer.setExtraTurn(!extraTurns.isEmpty());
|
||||||
@@ -873,7 +878,13 @@ public class PhaseHandler implements java.io.Serializable {
|
|||||||
if (extraTurns.isEmpty()) {
|
if (extraTurns.isEmpty()) {
|
||||||
extraTurns.push(new ExtraTurn(game.getNextPlayerAfter(playerTurn)));
|
extraTurns.push(new ExtraTurn(game.getNextPlayerAfter(playerTurn)));
|
||||||
}
|
}
|
||||||
return extraTurns.push(new ExtraTurn(player));
|
|
||||||
|
ExtraTurn result = extraTurns.push(new ExtraTurn(player));
|
||||||
|
// update Extra Turn for all players
|
||||||
|
for (final Player p : game.getPlayers()) {
|
||||||
|
p.setExtraTurnCount(getExtraTurnForPlayer(p));
|
||||||
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void addExtraPhase(final PhaseType afterPhase, final PhaseType extraPhase) {
|
public final void addExtraPhase(final PhaseType afterPhase, final PhaseType extraPhase) {
|
||||||
@@ -1128,4 +1139,25 @@ public class PhaseHandler implements java.io.Serializable {
|
|||||||
public void setCombat(Combat combat) {
|
public void setCombat(Combat combat) {
|
||||||
this.combat = combat;
|
this.combat = combat;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* returns the continuous extra turn count
|
||||||
|
* @param PLayer p
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public int getExtraTurnForPlayer(final Player p) {
|
||||||
|
if (this.extraTurns.isEmpty() || this.extraTurns.size() < 2) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int count = 0;
|
||||||
|
// skip the first element
|
||||||
|
for (final ExtraTurn et : extraTurns.subList(1, extraTurns.size())) {
|
||||||
|
if (!et.getPlayer().equals(p)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
count += 1;
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -144,7 +144,6 @@ public class Player extends GameEntity implements Comparable<Player> {
|
|||||||
private Map<Card, Integer> commanderCast = Maps.newHashMap();
|
private Map<Card, Integer> commanderCast = Maps.newHashMap();
|
||||||
private final Game game;
|
private final Game game;
|
||||||
private boolean triedToDrawFromEmptyLibrary = false;
|
private boolean triedToDrawFromEmptyLibrary = false;
|
||||||
private boolean isPlayingExtraTrun = false;
|
|
||||||
private CardCollection lostOwnership = new CardCollection();
|
private CardCollection lostOwnership = new CardCollection();
|
||||||
private CardCollection gainedOwnership = new CardCollection();
|
private CardCollection gainedOwnership = new CardCollection();
|
||||||
private int numManaConversion = 0;
|
private int numManaConversion = 0;
|
||||||
@@ -2673,11 +2672,18 @@ public class Player extends GameEntity implements Comparable<Player> {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isPlayingExtraTurn() {
|
public boolean isExtraTurn() {
|
||||||
return isPlayingExtraTrun;
|
return view.getIsExtraTurn();
|
||||||
}
|
}
|
||||||
public void setExtraTurn(boolean b) {
|
public void setExtraTurn(boolean b) {
|
||||||
isPlayingExtraTrun = b;
|
view.setIsExtraTurn(b);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getExtraTurnCount() {
|
||||||
|
return view.getExtraTurnCount();
|
||||||
|
}
|
||||||
|
public void setExtraTurnCount(final int val) {
|
||||||
|
view.setExtraTurnCount(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void initVariantsZones(RegisteredPlayer registeredPlayer) {
|
public void initVariantsZones(RegisteredPlayer registeredPlayer) {
|
||||||
|
|||||||
@@ -189,6 +189,22 @@ public class PlayerView extends GameEntityView {
|
|||||||
set(TrackableProperty.Counters, p.getCounters());
|
set(TrackableProperty.Counters, p.getCounters());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean getIsExtraTurn() {
|
||||||
|
return get(TrackableProperty.IsExtraTurn);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIsExtraTurn(final boolean val) {
|
||||||
|
set(TrackableProperty.IsExtraTurn, val);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getExtraTurnCount() {
|
||||||
|
return get(TrackableProperty.ExtraTurnCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setExtraTurnCount(final int val) {
|
||||||
|
set(TrackableProperty.ExtraTurnCount, val);
|
||||||
|
}
|
||||||
|
|
||||||
public int getMaxHandSize() {
|
public int getMaxHandSize() {
|
||||||
return get(TrackableProperty.MaxHandSize);
|
return get(TrackableProperty.MaxHandSize);
|
||||||
}
|
}
|
||||||
@@ -422,6 +438,11 @@ public class PlayerView extends GameEntityView {
|
|||||||
details.add(TextUtil.concatNoSpace("Cards in hand: ", TextUtil.addSuffix(String.valueOf(getHandSize()),"/"), getMaxHandString()));
|
details.add(TextUtil.concatNoSpace("Cards in hand: ", TextUtil.addSuffix(String.valueOf(getHandSize()),"/"), getMaxHandString()));
|
||||||
details.add(TextUtil.concatWithSpace("Cards drawn this turn:", String.valueOf(getNumDrawnThisTurn())));
|
details.add(TextUtil.concatWithSpace("Cards drawn this turn:", String.valueOf(getNumDrawnThisTurn())));
|
||||||
details.add(TextUtil.concatWithSpace("Damage prevention:", String.valueOf(getPreventNextDamage())));
|
details.add(TextUtil.concatWithSpace("Damage prevention:", String.valueOf(getPreventNextDamage())));
|
||||||
|
|
||||||
|
if (getIsExtraTurn()) {
|
||||||
|
details.add("Extra Turn: Yes");
|
||||||
|
}
|
||||||
|
details.add(TextUtil.concatWithSpace("Extra Turn Count:", String.valueOf(getExtraTurnCount())));
|
||||||
final String keywords = Lang.joinHomogenous(getDisplayableKeywords());
|
final String keywords = Lang.joinHomogenous(getDisplayableKeywords());
|
||||||
if (!keywords.isEmpty()) {
|
if (!keywords.isEmpty()) {
|
||||||
details.add(keywords);
|
details.add(keywords);
|
||||||
|
|||||||
@@ -113,6 +113,8 @@ public enum TrackableProperty {
|
|||||||
Hand(TrackableTypes.CardViewCollectionType, FreezeMode.IgnoresFreeze),
|
Hand(TrackableTypes.CardViewCollectionType, FreezeMode.IgnoresFreeze),
|
||||||
Library(TrackableTypes.CardViewCollectionType, FreezeMode.IgnoresFreeze),
|
Library(TrackableTypes.CardViewCollectionType, FreezeMode.IgnoresFreeze),
|
||||||
Mana(TrackableTypes.ManaMapType, FreezeMode.IgnoresFreeze),
|
Mana(TrackableTypes.ManaMapType, FreezeMode.IgnoresFreeze),
|
||||||
|
IsExtraTurn(TrackableTypes.BooleanType),
|
||||||
|
ExtraTurnCount(TrackableTypes.IntegerType),
|
||||||
|
|
||||||
//SpellAbility
|
//SpellAbility
|
||||||
HostCard(TrackableTypes.CardViewType),
|
HostCard(TrackableTypes.CardViewType),
|
||||||
|
|||||||
Reference in New Issue
Block a user