ProjectAres/PGM/src/main/java/tc/oc/pgm/goals/OwnableGoalDefinition.java

22 lines
664 B
Java

package tc.oc.pgm.goals;
import java.util.Optional;
import javax.annotation.Nullable;
import tc.oc.pgm.teams.TeamFactory;
/**
* Definition of a goal that may be "owned" by a particular team. The ramifications of
* ownership depend entirely on the type of goal. Some goals are pursued by their
* owner, some are defended by their owner. The only thing the base class does with
* the owner is store it and use it as part of the default ID.
*/
public interface OwnableGoalDefinition<G extends Goal<?>> extends GoalDefinition<G> {
Optional<TeamFactory> owner();
default @Nullable TeamFactory getOwner() {
return owner().orElse(null);
}
}