package com.cardshifter.modapi.actions;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import com.cardshifter.modapi.base.Component;
import com.cardshifter.modapi.base.CopyableComponent;
import com.cardshifter.modapi.base.Entity;
public class ActionComponent extends Component implements CopyableComponent {
private final Map<String, ECSAction> actions = new HashMap<>();
public ActionComponent() {
}
public ActionComponent addAction(ECSAction action) {
this.actions.put(action.getName(), action);
return this;
}
public Set<String> getActions() {
return actions.keySet();
}
public ECSAction getAction(String key) {
return this.actions.get(key);
}
public Collection<ECSAction> getECSActions() {
return new ArrayList<>(actions.values());
}
public boolean removeAction(String actionName) {
return actions.remove(actionName) != null;
}
@Override
public Component copy(Entity copyTo) {
ActionComponent copy = new ActionComponent();
for (Entry<String, ECSAction> entry : actions.entrySet()) {
copy.addAction(entry.getValue().copy(copyTo));
}
return copy;
}
@Override
public String toString() {
return "ActionComponent [actions=" + actions + "]";
}
}