package mage.abilities;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.UUID;
/**
* Special actions to activate at any priority time (GUI has special button to show a special commands list)
*
* Two types of action:
* - mana actions (auto-generated on each mana pay cycle, auto-clean)
* - another actions (manual added, manual removed - like one short effects)
*
* @author BetaSteward_at_googlemail.com
*/
public class SpecialActions extends AbilitiesImpl {
public SpecialActions() {
}
protected SpecialActions(final SpecialActions actions) {
super(actions);
}
/**
* @param controllerId
* @param manaAction true = if mana actions should get returned
* false = only non mana actions get returned
* @return
*/
public Map getControlledBy(UUID controllerId, boolean manaAction) {
LinkedHashMap controlledBy = new LinkedHashMap<>();
for (SpecialAction action : this) {
if (action.isControlledBy(controllerId) && action.isManaAction() == manaAction) {
controlledBy.put(action.id, action);
}
}
return controlledBy;
}
@Override
public SpecialActions copy() {
return new SpecialActions(this);
}
public void removeManaActions() {
this.removeIf(SpecialAction::isManaAction);
}
}