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;
}
}