Class KFGUI_FloatingWindow extends KFGUI_Page abstract; `include(Build.uci) `include(Logger.uci) var() string WindowTitle; // Title of this window. var float DragOffset[2], OpenAnimSpeed; var KFGUI_FloatingWindowHeader HeaderComp; var bool bDragWindow,bUseAnimation; var float WindowFadeInTime; var transient float OpenStartTime,OpenEndTime; function InitMenu() { Super.InitMenu(); HeaderComp = new (Self) class'KFGUI_FloatingWindowHeader'; AddComponent(HeaderComp); } function ShowMenu() { Super.ShowMenu(); OpenStartTime = GetPlayer().WorldInfo.RealTimeSeconds; OpenEndTime = GetPlayer().WorldInfo.RealTimeSeconds + OpenAnimSpeed; } function DrawMenu() { local float TempSize; if( bUseAnimation ) { TempSize = `TimeSinceEx(GetPlayer(), OpenStartTime); if ( WindowFadeInTime - TempSize > 0 && FrameOpacity != default.FrameOpacity ) FrameOpacity = (1.f - ((WindowFadeInTime - TempSize) / WindowFadeInTime)) * default.FrameOpacity; } Owner.CurrentStyle.RenderFramedWindow(Self); if( HeaderComp!=None ) { HeaderComp.CompPos[3] = Owner.CurrentStyle.DefaultHeight; HeaderComp.YSize = HeaderComp.CompPos[3] / CompPos[3]; // Keep header height fit the window height. } } function SetWindowDrag( bool bDrag ) { bDragWindow = bDrag; if( bDrag ) { DragOffset[0] = Owner.MousePosition.X-CompPos[0]; DragOffset[1] = Owner.MousePosition.Y-CompPos[1]; } } function bool CaptureMouse() { local int i; if( bDragWindow && HeaderComp!=None ) // Always keep focus on window frame now! { MouseArea = HeaderComp; return true; } for( i=0; i