package net.sf.openrocket.simulation.listeners; import net.sf.openrocket.motor.MotorId; import net.sf.openrocket.motor.MotorInstance; import net.sf.openrocket.rocketcomponent.MotorMount; import net.sf.openrocket.rocketcomponent.RecoveryDevice; import net.sf.openrocket.simulation.FlightEvent; import net.sf.openrocket.simulation.SimulationStatus; import net.sf.openrocket.simulation.exception.SimulationException; public interface SimulationEventListener { /** * Called before adding a flight event to the event queue. * * @param status the simulation status * @param event the event that is being added * @return <code>true</code> to add the event, * <code>false</code> to abort adding event to event queue */ public boolean addFlightEvent(SimulationStatus status, FlightEvent event) throws SimulationException; /** * Called before handling a flight event. * * @param status the simulation status * @param event the event that is taking place * @return <code>true</code> to continue handling the event, * <code>false</code> to abort handling */ public boolean handleFlightEvent(SimulationStatus status, FlightEvent event) throws SimulationException; /** * Motor ignition event. * * @param status the simulation status * @param motorId the motor id in the MotorInstanceConfiguration * @param mount the motor mount containing the motor * @param instance the motor instance being ignited * @return <code>true</code> to ignite the motor, <code>false</code> to abort ignition */ public boolean motorIgnition(SimulationStatus status, MotorId motorId, MotorMount mount, MotorInstance instance) throws SimulationException; /** * Recovery device deployment. * * @param status the simulation status * @param recoveryDevice the recovery device that is being deployed. * @return <code>true</code> to deploy the recovery device, <code>false</code> to abort deployment */ public boolean recoveryDeviceDeployment(SimulationStatus status, RecoveryDevice recoveryDevice) throws SimulationException; }