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