package com.ftloverdrive.model.incident; import java.util.List; import com.ftloverdrive.core.OverdriveContext; import com.ftloverdrive.model.OVDModel; import com.ftloverdrive.model.incident.Consequence; import com.ftloverdrive.model.incident.PlotBranch; /** * What the original game referred to as an event. * * TODO: Retrofit code to use reference ids and OVDEvents. * * TODO: A DeferredIncidentModel class, which constructs a named Incident * at the last minute, probably from an IncidentBlueprint. That would make * event loops possible. */ public interface IncidentModel extends OVDModel { /** Returns a unique identifier for this Incident. */ public String getIncidentId(); /** Triggers Consequences and notifies the UI to represent this model, with a Window. */ public void execute( OverdriveContext context ); /** * Returns text to show when triggered, or null. * * TODO: Allow for context-aware text (e.g., inserting crew names). */ public String getText(); /** Returns a list of Consequences, all of which trigger at the start of this Incident. */ public List<Consequence> getConsequences(); public void addConsequence( Consequence cseq ); public void removeConsequence( Consequence cseq ); /** Returns choices which may lead to further Incidents. */ public List<PlotBranch> getPlotBranches(); public void addPlotBranch( PlotBranch branch ); public void removePlotBranch( PlotBranch branch ); }