// A component to have multiple "pages" of different components. Class KFGUI_SwitchComponent extends KFGUI_MultiComponent; var protected int CurrentComponent; function PreDraw() { local byte j; ComputeCoords(); if( CurrentComponent<0 || CurrentComponent>=Components.Length ) return; Components[CurrentComponent].Canvas = Canvas; for( j=0; j<4; ++j ) Components[CurrentComponent].InputPos[j] = CompPos[j]; Components[CurrentComponent].PreDraw(); } function bool CaptureMouse() { if( (CurrentComponent>=0 || CurrentComponent<Components.Length) && Components[CurrentComponent].CaptureMouse() ) { MouseArea = Components[CurrentComponent]; return true; } MouseArea = None; return Super(KFGUI_Base).CaptureMouse(); // check with frame itself. } final function int GetSelectedPage() { return CurrentComponent; } final function name GetSelectedPageID() { if( CurrentComponent<Components.Length ) return Components[CurrentComponent].ID; return ''; } final function bool SelectPageID( name PageID ) { local int i; if( Components[CurrentComponent].ID==PageID ) return false; for( i=0; i<Components.Length; ++i ) if( Components[i].ID==PageID ) { Components[CurrentComponent].CloseMenu(); CurrentComponent = i; Components[CurrentComponent].ShowMenu(); return true; } return false; } final function bool SelectPageIndex( int Num ) { if( CurrentComponent==Num ) return false; if( Num>=0 && Num<Components.Length ) { Components[CurrentComponent].CloseMenu(); CurrentComponent = Num; Components[CurrentComponent].ShowMenu(); return true; } return false; } function ShowMenu() { if( CurrentComponent<Components.Length ) Components[CurrentComponent].ShowMenu(); } function CloseMenu() { if( CurrentComponent<Components.Length ) Components[CurrentComponent].CloseMenu(); }