CardDamageMap: add extra Table class for storeing the damage dealt by Card to GameEntity, might extended with extra functions

This commit is contained in:
Hanmac
2016-12-30 08:08:18 +00:00
parent 71871686a4
commit 4aa68c3fa6
2 changed files with 46 additions and 0 deletions

1
.gitattributes vendored
View File

@@ -477,6 +477,7 @@ forge-game/src/main/java/forge/game/card/CardCollection.java -text
forge-game/src/main/java/forge/game/card/CardCollectionView.java -text forge-game/src/main/java/forge/game/card/CardCollectionView.java -text
forge-game/src/main/java/forge/game/card/CardColor.java svneol=native#text/plain forge-game/src/main/java/forge/game/card/CardColor.java svneol=native#text/plain
forge-game/src/main/java/forge/game/card/CardDamageHistory.java -text forge-game/src/main/java/forge/game/card/CardDamageHistory.java -text
forge-game/src/main/java/forge/game/card/CardDamageMap.java -text
forge-game/src/main/java/forge/game/card/CardFactory.java svneol=native#text/plain forge-game/src/main/java/forge/game/card/CardFactory.java svneol=native#text/plain
forge-game/src/main/java/forge/game/card/CardFactoryUtil.java svneol=native#text/plain forge-game/src/main/java/forge/game/card/CardFactoryUtil.java svneol=native#text/plain
forge-game/src/main/java/forge/game/card/CardLists.java svneol=native#text/plain forge-game/src/main/java/forge/game/card/CardLists.java svneol=native#text/plain

View File

@@ -0,0 +1,45 @@
/**
*
*/
package forge.game.card;
import java.util.Map;
import com.google.common.collect.ForwardingTable;
import com.google.common.collect.HashBasedTable;
import com.google.common.collect.Table;
import forge.game.GameEntity;
public class CardDamageMap extends ForwardingTable<Card, GameEntity, Integer> {
private Table<Card, GameEntity, Integer> dataMap = HashBasedTable.create();
// common function to gain life for lifelink
public void dealLifelinkDamage() {
for (Map.Entry<Card, Map<GameEntity, Integer>> e : this.rowMap().entrySet()) {
final Card sourceLKI = e.getKey();
int damageSum = 0;
for (final Integer i : e.getValue().values()) {
damageSum += i;
}
if (damageSum > 0 && sourceLKI.hasKeyword("Lifelink")) {
sourceLKI.getController().gainLife(damageSum, sourceLKI);
}
}
}
/**
* special put logic, sum the values
*/
@Override
public Integer put(Card rowKey, GameEntity columnKey, Integer value) {
Integer old = contains(rowKey, columnKey) ? get(rowKey, columnKey) : 0;
return dataMap.put(rowKey, columnKey, value + old);
}
@Override
protected Table<Card, GameEntity, Integer> delegate() {
return dataMap;
}
}