using System; using Framework.Services; namespace Framework.State { /// Can be implemented by a component to make it user-controllable public interface IControllable { /// Triggered when control of the game object is being taken event Action ControlTaken; /// Triggered when control of the game object has been released event Action ControlReleased; /// Called when the player takes control of the controllable /// Index of the player that has taken control void OnTakeControl(int playerIndex); /// Called when the player releases control of the controllable /// Index of the player that has released control void OnReleaseControl(int playerIndex); /// Index of the player currently in control, -1 for none int ControllingPlayerIndex { get; } } } // namespace Framework.State