mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 03:38:01 +00:00
CardDamageMap: add extra Table class for storeing the damage dealt by Card to GameEntity, might extended with extra functions
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -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/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/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/CardFactoryUtil.java svneol=native#text/plain
|
||||
forge-game/src/main/java/forge/game/card/CardLists.java svneol=native#text/plain
|
||||
|
||||
45
forge-game/src/main/java/forge/game/card/CardDamageMap.java
Normal file
45
forge-game/src/main/java/forge/game/card/CardDamageMap.java
Normal 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;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user