// 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(); }