using System;
using Framework.Services;
namespace Framework.State {
/// Manages the game object currently being controlled by the player
[
ServiceScope(Scope.Scene),
DefaultBinding(typeof(ControlManager))
]
public interface IControlManager {
/// Called when the player switches control to another controllable
/// >
/// First argument is the player index, second argument is the controllable
/// that player has assumed control of.
///
event Action ControlSwitched;
/// Lets a player assume control of the specified controllable
/// Index of the player that will assume control
/// Controllable the player will be controlling
void AssumeControl(int playerIndex, IControllable controllable);
/// Gets the controllable currently active for the specified player
///
/// Index of the player whose active controllable will be returned
///
/// The controllable currently active for the specified player
IControllable GetControllable(int playerIndex);
}
} // namespace Framework.State