Actions can now work or fail...

This commit is contained in:
marcins78@gmail.com
2011-11-01 11:03:40 +00:00
parent e58f9e092c
commit edfb4e8e3d
9 changed files with 113 additions and 2 deletions

View File

@@ -114,4 +114,14 @@ public class PlayEventAction extends AbstractCostToEffectAction {
return null;
}
@Override
public boolean wasSuccessful() {
return _cardPlayed && _playCardEffect.wasSuccessful() && !_playCardEffect.getPlayEventResult().isEventCancelled();
}
@Override
public boolean wasCarriedOut() {
return _cardPlayed && _playCardEffect.wasCarriedOut() && !_playCardEffect.getPlayEventResult().isEventCancelled();
}
}

View File

@@ -103,4 +103,14 @@ public class PlayPermanentAction extends AbstractCostToEffectAction {
return null;
}
@Override
public boolean wasSuccessful() {
return _cardPlayed && _playCardEffect.wasSuccessful();
}
@Override
public boolean wasCarriedOut() {
return _cardPlayed && _playCardEffect.wasCarriedOut();
}
}

View File

@@ -11,6 +11,7 @@ public abstract class AbstractCostToEffectAction implements CostToEffectAction {
private LinkedList<Effect> _processedCosts = new LinkedList<Effect>();
private LinkedList<Effect> _effects = new LinkedList<Effect>();
private LinkedList<Effect> _processedEffects = new LinkedList<Effect>();
private Phase _actionTimeword;
private String _performingPlayer;
@@ -71,6 +72,24 @@ public abstract class AbstractCostToEffectAction implements CostToEffectAction {
}
protected final Effect getNextEffect() {
return _effects.poll();
final Effect effect = _effects.poll();
if (effect != null)
_processedEffects.add(effect);
return effect;
}
@Override
public boolean wasSuccessful() {
for (Effect processedCost : _processedCosts) {
if (!processedCost.wasSuccessful())
return false;
}
return true;
}
@Override
public boolean wasCarriedOut() {
return wasSuccessful();
}
}

View File

@@ -11,6 +11,7 @@ import java.util.LinkedList;
public class SubAction implements Action {
private Action _action;
private LinkedList<Effect> _effects = new LinkedList<Effect>();
private LinkedList<Effect> _processedEffects = new LinkedList<Effect>();
public SubAction(Action action) {
_action = action;
@@ -57,6 +58,33 @@ public class SubAction implements Action {
@Override
public Effect nextEffect(LotroGame game) {
return _effects.poll();
final Effect effect = _effects.poll();
if (effect != null)
_processedEffects.add(effect);
return effect;
}
@Override
public boolean wasSuccessful() {
if (!_effects.isEmpty())
return false;
for (Effect effect : _processedEffects) {
if (!effect.wasSuccessful())
return false;
}
return true;
}
@Override
public boolean wasCarriedOut() {
if (!_effects.isEmpty())
return false;
for (Effect effect : _processedEffects) {
if (!effect.wasCarriedOut())
return false;
}
return true;
}
}

View File

@@ -20,4 +20,8 @@ public interface Action {
public String getText(LotroGame game);
public Effect nextEffect(LotroGame game);
public boolean wasSuccessful();
public boolean wasCarriedOut();
}

View File

@@ -99,4 +99,14 @@ public class PlayerReconcilesAction implements Action {
return _effectQueue.poll();
}
@Override
public boolean wasCarriedOut() {
return true;
}
@Override
public boolean wasSuccessful() {
return true;
}
}

View File

@@ -116,4 +116,14 @@ public class ResolveSkirmishAction implements Action {
else
return Collections.emptyList();
}
@Override
public boolean wasCarriedOut() {
return true;
}
@Override
public boolean wasSuccessful() {
return true;
}
}

View File

@@ -54,4 +54,14 @@ public class SimpleEffectAction implements Action {
_effect = null;
return result;
}
@Override
public boolean wasCarriedOut() {
return true;
}
@Override
public boolean wasSuccessful() {
return true;
}
}

View File

@@ -38,4 +38,14 @@ public abstract class SystemAction implements Action {
public String getText(LotroGame game) {
throw new UnsupportedOperationException("System action has no text");
}
@Override
public boolean wasCarriedOut() {
return true;
}
@Override
public boolean wasSuccessful() {
return true;
}
}