using System; namespace Jovian.EncounterSystem { /// /// Marker interface for designer-authored dialog option side effects. Events carry data only; /// behaviour is registered on and dispatched by concrete type. /// Add a new event by creating a new implementation and registering /// a handler for it with the resolver. /// public interface IEncounterEvent { } /// Transitions the flow to another encounter identified by . [Serializable] public class ChainToEncounterEvent : IEncounterEvent { public string nextEncounterId; } /// Starts a combat encounter by id. Intended to be handled by the combat play mode. [Serializable] public class StartCombatEvent : IEncounterEvent { public string combatEncounterId; } /// Writes a line to whatever log sink the resolver's handler is configured with. Useful for debugging. [Serializable] public class LogEvent : IEncounterEvent { public string message; } /// /// Grants the referenced asset to the party. The actual application is /// handled by a game-side delegate registered on . Add multiple /// s to a dialog option's event list to grant multiple rewards. /// [Serializable] public class GiveRewardEvent : IEncounterEvent { public Reward reward; } }