package net.demilich.metastone.game.cards.desc;
import java.util.Map;
import net.demilich.metastone.game.GameContext;
import net.demilich.metastone.game.Player;
import net.demilich.metastone.game.entities.Entity;
import net.demilich.metastone.game.spells.desc.valueprovider.ValueProvider;
public class Desc<T> {
protected final Map<T, Object> arguments;
public Desc(Map<T, Object> arguments) {
this.arguments = arguments;
}
public boolean contains(T arg) {
return arguments.containsKey(arg);
}
public Object get(T arg) {
return arguments.get(arg);
}
public boolean getBool(T arg) {
return arguments.containsKey(arg) ? (boolean) get(arg) : false;
}
public int getInt(T arg) {
return arguments.containsKey(arg) ? (int) get(arg) : 0;
}
public String getString(T arg) {
return arguments.containsKey(arg) ? (String) get(arg) : "";
}
public int getValue(T arg, GameContext context, Player player, Entity target, Entity host, int defaultValue) {
Object storedValue = arguments.get(arg);
if (storedValue == null) {
return defaultValue;
}
if (storedValue instanceof ValueProvider) {
ValueProvider valueProvider = (ValueProvider) storedValue;
return valueProvider.getValue(context, player, target, host);
}
return (int)storedValue;
}
}