class BackdoorDataStreamController extends BackdoorInkGameController
{
	private editable var m_idleGroup : inkWidgetRef;
	private editable var m_idleVPanelC1 : inkWidgetRef;
	private editable var m_idleVPanelC2 : inkWidgetRef;
	private editable var m_idleVPanelC3 : inkWidgetRef;
	private editable var m_idleVPanelC4 : inkWidgetRef;
	private editable var m_hackedGroup : inkWidgetRef;
	private editable var m_idleCanvas1 : inkWidgetRef;
	private editable var m_idleCanvas2 : inkWidgetRef;
	private editable var m_idleCanvas3 : inkWidgetRef;
	private editable var m_idleCanvas4 : inkWidgetRef;
	private editable var m_canvasC1 : inkWidgetRef;
	private editable var m_canvasC2 : inkWidgetRef;
	private editable var m_canvasC3 : inkWidgetRef;
	private editable var m_canvasC4 : inkWidgetRef;

	protected override function StartGlitching()
	{
		inkWidgetRef.SetVisible( m_idleVPanelC1, true );
		inkWidgetRef.SetVisible( m_idleVPanelC2, true );
		inkWidgetRef.SetVisible( m_idleVPanelC3, true );
		inkWidgetRef.SetVisible( m_idleVPanelC4, true );
		PlayLibraryAnimation( 'glitchingModules' );
	}

	protected override function EnableHackedGroup() {}

	protected override function ShutdownModule( module : Int32 )
	{
		if( module == 0 )
		{
			PlayLibraryAnimation( 'shutdownModules' );
		}
	}

	protected override function BootModule( module : Int32 )
	{
		if( module == 0 )
		{
			PlayLibraryAnimation( 'bootModules' );
		}
	}

}

class TextSpawnerController extends inkLogicController
{
	private editable var amountOfRows : Int32;
	default amountOfRows = 6;
	private editable var lineTextWidgetID : CName;
	private var texts : array< weak< inkWidget > >;

	protected event OnInitialize()
	{
		var widget : weak< inkText >;
		var i : Int32;
		var text : String;
		for( i = 0; i < amountOfRows; i += 1 )
		{
			widget = ( ( inkText )( SpawnFromLocal( GetRootWidget(), lineTextWidgetID ) ) );
			widget.SetAnchor( inkEAnchor.CenterLeft );
			text = widget.GetText();
			widget.SetTextDirect( text );
			texts.PushBack( widget );
		}
	}

}

