class HoloTableController extends MediaDeviceController
{

	public const override function GetPS() : HoloTableControllerPS
	{
		return ( ( HoloTableControllerPS )( GetBasePS() ) );
	}

}

class HoloTableControllerPS extends MediaDeviceControllerPS
{
	default m_deviceName = "LocKey#17851";
	default m_tweakDBRecord = T"Devices.HoloTable";
	default m_tweakDBDescriptionRecord = T"device_descriptions.HoloTable";

	protected event OnInstantiated()
	{
		super.OnInstantiated();
		if( !( IsStringValid( m_deviceName ) ) )
		{
			m_deviceName = "LocKey#17851";
		}
	}

	protected override function Initialize()
	{
		super.Initialize();
	}

	public function SetMeshesAmount( value : Int32 )
	{
		m_amountOfStations = value;
	}

	public override function GetActions( out actions : array< DeviceAction >, context : GetActionsContext ) : Bool
	{
		super.GetActions( actions, context );
		if( !( IsUserAuthorized( context.processInitiatorObject.GetEntityID() ) ) )
		{
			return false;
		}
		if( ToggleON.IsDefaultConditionMet( this, context ) )
		{
			actions.PushBack( ActionToggleON() );
		}
		SetActionIllegality( actions, m_illegalActions.regularActions );
		return true;
	}

	protected const override function CanCreateAnyQuickHackActions() : Bool
	{
		return true;
	}

	protected override function GetQuickHackActions( out actions : array< DeviceAction >, const context : ref< GetActionsContext > )
	{
		var currentAction : ScriptableDeviceAction;
		currentAction = ActionQuickHackDistraction();
		currentAction.SetObjectActionID( T"DeviceAction.MalfunctionClassHack" );
		currentAction.SetDurationValue( GetDistractionDuration( currentAction ) );
		currentAction.SetInactiveWithReason( QuickHackDistraction.IsDefaultConditionMet( this, context ), "LocKey#7003" );
		actions.PushBack( currentAction );
		FinalizeGetQuickHackActions( actions, context );
	}

	public override function OnNextStation( evt : NextStation ) : EntityNotificationType
	{
		super.OnNextStation( evt );
		return EntityNotificationType.SendThisEventToEntity;
	}

	public override function OnPreviousStation( evt : PreviousStation ) : EntityNotificationType
	{
		super.OnPreviousStation( evt );
		return EntityNotificationType.SendThisEventToEntity;
	}

}

