class SecuritySystem extends DeviceSystemBase
{
	default m_controllerTypeName = 'SecuritySystemController';
	private var m_savedOutputCache : array< OutputValidationDataStruct >;

	protected event OnTakeControl( ri : EntityResolveComponentsInterface )
	{
		super.OnTakeControl( ri );
		m_controller = ( ( SecuritySystemController )( EntityResolveComponentsInterface.GetComponent( ri, 'controller' ) ) );
	}

	public const override function GetDefaultHighlight() : FocusForcedHighlightData
	{
		return NULL;
	}

	public const override function GetDevicePS() : SecuritySystemControllerPS
	{
		return GetController().GetPS();
	}

	private const override function GetController() : SecuritySystemController
	{
		return ( ( SecuritySystemController )( m_controller ) );
	}

	protected event OnSlaveStateChanged( evt : PSDeviceChangedEvent )
	{
		return false;
	}

	protected event OnQuestIllegalActionNotification( evt : QuestIllegalActionNotification )
	{
		GetDevicePS().QuestIllegalActionNotification( evt );
	}

	protected event OnQuestCombatActionNotification( evt : QuestCombatActionNotification )
	{
		GetDevicePS().QuestCombatActionNotification( evt );
	}

	protected event OnSetSecuritySystemState( evt : SetSecuritySystemState )
	{
		GetDevicePS().QuestChangeSecuritySystemState( evt );
	}

	protected event OnQuestAuthorizePlayer( evt : AuthorizePlayerInSecuritySystem )
	{
		GetDevicePS().QuestAuthorizePlayer( evt );
	}

	protected event OnQuestBlackListPlayer( evt : BlacklistPlayer )
	{
		GetDevicePS().QuestBlacklistPlayer( evt );
	}

	protected event OnQuestExclusiveQuestControl( evt : SuppressSecuritySystemStateChange )
	{
		GetDevicePS().QuestSuppressSecuritySystem( evt );
	}

	protected event OnQuestChangeSecuritySystemAttitudeGroup( evt : QuestChangeSecuritySystemAttitudeGroup )
	{
		GetDevicePS().QuestChangeSecuritySystemAttitudeGroup( evt );
	}

	public override function OnMaraudersMapDeviceDebug( sink : MaraudersMapDevicesSink ) {}
}

