// base class, not vanilla
class HideMainMenu extends UT2K4GUIPage;


#exec OBJ LOAD FILE=InterfaceContent.utx
#exec OBJ LOAD FIlE=2K4Menus.utx
// #exec OBJ LOAD FIlE=2K4MenuSounds.uax

#exec OBJ LOAD FIlE=2K4Menus.utx
#exec OBJ LOAD FIlE=PatchTex.utx
#exec OBJ LOAD FIlE=KF_DLC.utx

#exec OBJ LOAD FIlE=KillingFloorHUD_SUMMER.utx
#exec OBJ LOAD FIlE=KillingFloorHUD_HALLOWEEN.utx
#exec OBJ LOAD FIlE=KillingFloorHUD_XMAS.utx

//=============================================================================
//                              VARIABLES
//=============================================================================
//var KFDataObject SPAmmo;
var bool bOpenAlready;
var bool bMovingOnTraining, bMovingOnResume, bMovingOnSP;

var automated FloatingImage KFBackground;
var automated FloatingImage KFBackgroundOverlay;
var automated GUIImage      KFLogoBit;
var automated GUILabel      KFVersionNum;   // Keep track of updates from now on ! :D
var automated GUILabel      KFWorkshopDownload;

// Variable Name Legend

// l_  GUILabel            lb_ GUIListBox
// i_  GUIImage            li_ GUIList
// b_  GUIButton           tp_ GUITabPanel
// t_  GUITitleBar         sp_ GUISplitter
// c_  GUITabControl
// p_  GUIPanel

// ch_ moCheckBox
// co_ moComboBox
// nu_ moNumericEdit
// ed_ moEditBox
// fl_ moFloatEdit
// sl_ moSlider


var automated BackgroundImage   i_BkChar,
                                i_Background;
var automated GUIImage          i_UT2Logo,
                                i_PanHuge,
                                i_PanBig,
                                i_PanSmall,
                                i_UT2Shader,
                                i_TV;
var automated GUIButton         b_SinglePlayer,
                                b_MultiPlayer, b_Host,
                                b_InstantAction,
                                b_ModsAndDemo,
                                b_Profile,
                                b_JoinLH,
                                b_Workshop,
                                b_Settings,
                                b_Quit;

var bool bAllowClose;

var array<material> CharShots;

var float CharFade, DesiredCharFade, CharFadeTime;

var GUIButton Selected;
var() bool    bNoInitDelay;

var() config string MenuSong;

var bool  bNewNews;
var float FadeTime;
var bool  FadeOut;

var localized string  NewNewsMsg,
                      FireWallTitle,
                      FireWallMsg,
                      SteamMustBeRunningText,
                      UnknownSteamErrorText,
                      DownloadingText,
                      DownloadedText;


//=============================================================================
//                              LOGIC
//=============================================================================

// DISABLED
function OnClose(optional Bool bCancelled){}


// remove NEWS tab and all logs spam / lags caused by it
event Opened(GUIComponent Sender)
{
  super(GUIMultiComponent).Opened(Sender);

  class'KFServerBrowser'.default.PanelClass[0] = "none";
}


function InitComponent(GUIController MyController, GUIComponent MyOwner)
{
  local byte SpecialEventType;

  super.InitComponent(MyController, MyOwner);

  Background = none;
  i_BkChar.Image = CharShots[rand(CharShots.Length)];

  SpecialEventType = class'KFGameType'.static.GetSpecialEventType();

  if (SpecialEventType == 1)
  {
    KFBackground.Image = MaterialSequence'KillingFloorHUD_SUMMER.MainMenu.kf_menu_seq';
    KFLogoBit.Image = FinalBlend'KillingFloorHUD_SUMMER.KFLogoFB';
  }    
  else if (SpecialEventType == 2)
  {
    KFBackground.Image = MaterialSequence'KillingFloorHUD_HALLOWEEN.MainMenu.kf_menu_seq_HALLOWEEN';
    KFLogoBit.Image = FinalBlend'KillingFloorHUD_HALLOWEEN.KFLogoFB_halloween';
  }
  else if (SpecialEventType == 3)
  {
    KFBackground.Image = MaterialSequence'KillingFloorHUD_XMAS.MainMenu.kf_menu_seq_XMAS';
    KFLogoBit.Image = FinalBlend'KillingFloorHUD_XMAS.KFLogoFB_XMAS';
  }
}


function InternalOnOpen()
{
  if (bNoInitDelay)
    Timer();
  else
    SetTimer(4.5, false);

  Controller.PerformRestore();

  // if ( !PlayerOwner().level.game.IsA('KFCinematicGame') )
  // {
  //   bOpenAlready = True;
  //   PlayerOwner().ConsoleCommand("OPEN Entry?Game=KFMod.KFCinematicGame");
  //   PlayerOwner().ClientSetInitialMusic(MenuSong,MTRAN_Segue);
  // }

  PlayerOwner().ClientSetInitialMusic(MenuSong,MTRAN_Segue);

  // Begin Syncing Subscribed Steam Workshop Files(if necessary)
  PlayerOwner().SyncSteamWorkshop();
}


function bool MyOnDraw(Canvas Canvas)
{
  local GUIButton FButton;
  local int i,x2;
  local float XL,YL;
  local float DeltaTime;
  local int percentage;

  if (PlayerOwner().SubscribedFileDownloadTitle != "")
  {
    if (PlayerOwner().SubscribedFileDownloadIndex != -1)
    {
        percentage = int(PlayerOwner().DownloadFileProgress * 100);
      KFWorkshopDownload.Caption = DownloadingText @ "|" @ PlayerOwner().SubscribedFileDownloadTitle @  "|" @percentage $ "%";
    }
    else
    {
      KFWorkshopDownload.Caption = PlayerOwner().SubscribedFileDownloadTitle @ "|" @ DownloadedText;
    }
  }


    if ( bAnimating || !Controller.bCurMenuInitialized )
    {
      return false;
  }

    DeltaTime = Controller.RenderDelta;

    for ( i = 0; i < Controls.Length; i++ )
    {
        if ( GUIButton(Controls[i]) != none )
        {
            FButton = GUIButton(Controls[i]);

      if ( FButton.Tag > 0 && FButton.MenuState != MSAT_Focused )
            {
                FButton.Tag -= 784 * DeltaTime;

        if ( FButton.Tag < 0 )
        {
                    FButton.Tag = 0;
                }
            }
            else if ( FButton.MenuState == MSAT_Focused )
            {
                FButton.Tag = 200;
            }

            if ( FButton.Tag > 0 )
            {
                fButton.Style.TextSize(Canvas, MSAT_Focused, FButton.Caption, XL, YL, FButton.FontScale);
                x2 = FButton.ActualLeft() + XL + 16;
                Canvas.Style = 5;
                Canvas.SetDrawColor(150, 25, 25, FButton.Tag);
                Canvas.SetPos(0, fButton.ActualTop());
                Canvas.DrawTilePartialStretched(material'Highlight', x2, FButton.ActualHeight());
            }
        }
    }

    return false;
}


event Timer()
{
  if (!bMovingOnTraining && !bMovingOnResume && !bMovingOnSP)
  {
    bNoInitDelay = true;

    if (!Controller.bQuietMenu)
    {
      PlayerOwner().PlaySound(SlideInSound,SLOT_None);
    }
    i_TV.Animate(-0.000977, 0.332292, 0.35);
    i_UT2Logo.Animate(0.007226,0.016926,0.35);
    i_UT2Shader.Animate(0.249023,0.180988,0.35);
    i_TV.OnEndAnimation = MenuIn_OnArrival;
    i_UT2Logo.OnEndAnimation = MenuIn_OnArrival;
    i_UT2Shader.OnEndAnimation = MenuIn_OnArrival;
  }
  else
  {
    if (bMovingOnResume)
    {
      bMovingOnResume = false;
      Controller.ConsoleCommand("OPEN KFS-RESUMEGAME?Game=KFmod.KFSPGameType");
    }

    if (bMovingOnTraining)
    {
      bMovingOnTraining = false;
      Controller.ConsoleCommand("OPEN KF-MANOR?Game=KFmod.KFGameType");
    }

    if (bMovingOnSP)
    {
      bMovingOnSP = false;
      Controller.ConsoleCommand("OPEN KF-G-BIOTICSLAB?Game=KFmod.KFGameType");
    }
  }
}


function MoveOn()
{
  local int i;
  local bool bShowPerkInfo;

  switch (Selected)
  {
    case b_SinglePlayer:
      return;

    case b_MultiPlayer:
      if (!Controller.CheckSteam())
      {
        Controller.OpenMenu(Controller.QuestionMenuClass);
        GUIQuestionPage(Controller.TopPage()).SetupQuestion(SteamMustBeRunningText, QBTN_Ok, QBTN_Ok);
        return;
      }
      Profile("ServerBrowser");
      Controller.OpenMenu("KFGUI.KFServerBrowser");
      Profile("ServerBrowser");
      return;

    case b_Host:
      if (!Controller.CheckSteam())
      {
        Controller.OpenMenu(Controller.QuestionMenuClass);
        GUIQuestionPage(Controller.TopPage()).SetupQuestion(SteamMustBeRunningText, QBTN_Ok, QBTN_Ok);
        return;
      }
      Profile("MPHost");
      if (PlayerOwner() != none)
      {
        PlayerOwner().OpenUPNPPorts();
      }
      Controller.OpenMenu("KFGUI.KFGamePageMP");
      Profile("MPHost");
      return;

    case b_InstantAction:
      Profile("InstantAction");
      Controller.OpenMenu("KFGUI.KFGamePageSP");
      Profile("InstantAction");
      return;

    case b_Profile:
      if (!Controller.CheckSteam())
      {
        Controller.OpenMenu(Controller.QuestionMenuClass);
        GUIQuestionPage(Controller.TopPage()).SetupQuestion(SteamMustBeRunningText, QBTN_Ok, QBTN_Ok);
        return;
      }
      if (PlayerOwner() != none)
      {
        if (PlayerOwner().SteamStatsAndAchievements == none)
        {
          PlayerOwner().SteamStatsAndAchievements = PlayerOwner().Spawn(PlayerOwner().default.SteamStatsAndAchievementsClass, PlayerOwner());
          if (!PlayerOwner().SteamStatsAndAchievements.Initialize(PlayerOwner()))
          {
            Controller.OpenMenu(Controller.QuestionMenuClass);
            GUIQuestionPage(Controller.TopPage()).SetupQuestion(UnknownSteamErrorText, QBTN_Ok, QBTN_Ok);
            PlayerOwner().SteamStatsAndAchievements.Destroy();
            PlayerOwner().SteamStatsAndAchievements = none;
          }
          else
          {
            PlayerOwner().SteamStatsAndAchievements.OnDataInitialized = OnSteamStatsAndAchievementsReady;
          }
          return;
        }
        else if (!PlayerOwner().SteamStatsAndAchievements.bInitialized)
        {
          PlayerOwner().SteamStatsAndAchievements.OnDataInitialized = OnSteamStatsAndAchievementsReady;
          PlayerOwner().SteamStatsAndAchievements.GetStatsAndAchievements();
          return;
        }
        for (i = 0; i < class'KFGameType'.default.LoadedSkills.Length; i++)
        {
          if (KFSteamStatsAndAchievements(PlayerOwner().SteamStatsAndAchievements).GetPerkProgress(i) < 0.0)
          {
            Controller.OpenMenu(Controller.QuestionMenuClass);
            GUIQuestionPage(Controller.TopPage()).SetupQuestion(class'HideMainMenu'.default.UnknownSteamErrorText, QBTN_Ok, QBTN_Ok);
            PlayerOwner().SteamStatsAndAchievements.OnDataInitialized = OnSteamStatsAndAchievementsReady;
            PlayerOwner().SteamStatsAndAchievements.GetStatsAndAchievements();
            return;
          }
        }
        if (class'KFPlayerController'.default.SelectedVeterancy == none)
        {
          bShowPerkInfo = true;
        }
        Profile("Profile");
        Controller.OpenMenu("KFGUI.KFProfileAndAchievements");
        Profile("Profile");
        if (bShowPerkInfo)
        {
          Controller.OpenMenu(Controller.QuestionMenuClass);
          GUIQuestionPage(Controller.TopPage()).SetupQuestion(class'LobbyMenu'.default.SelectPerkInformationString, QBTN_Ok, QBTN_Ok);
        }
      }
      return;

    case b_JoinLH:
      Controller.ViewportOwner.Console.ConsoleCommand("open 127.0.0.1");
      return;

    case b_Workshop:
      PlayerOwner().SteamStatsAndAchievements.ShowWorkshopContent();
      return;

    case b_ModsAndDemo:
      Profile("ModsandDemos");
      Controller.ViewportOwner.Console.ConsoleCommand("OPEN KF-Intro?Game=unrealgame.cinematicgame");
      Controller.CloseAll(True);
      SetTimer(0.5,false);
      Profile("ModsandDemos");
      return;

    case b_Settings:
      Profile("Settings");
      Controller.OpenMenu("KFGUI.KFSettingsPage");
      Profile("Settings");
      return;

    case b_Quit:
      Profile("Quit");
      Controller.OpenMenu(Controller.GetQuitPage());
      Profile("Quit");
      return;

    default:
      StopWatch(True);
      break;
  }
}


function MenuIn_OnArrival(GUIComponent Sender, EAnimationType Type)
{
  Sender.OnArrival = none;
  if (bAnimating)
    return;

  i_UT2Shader.OnDraw = MyOnDraw;
  DesiredCharFade=255;
  CharFadeTime = 0.75;

  if (!Controller.bQuietMenu)
    PlayerOwner().PlaySound(FadeInSound);
}


function MainReopened()
{
  if (!PlayerOwner().Level.IsPendingConnection())
  {
    i_BkChar.Image = CharShots[rand(CharShots.Length)];
    Opened(none);
    Timer();
  }
}


function bool MyKeyEvent(out byte Key,out byte State,float delta)
{
  // Escape pressed
  if (Key == 0x1B && state == 1)
    bAllowClose = true;

  return false;
}


function bool CanClose(optional bool bCancelled)
{
  if (bAllowClose)
    ButtonClick(b_Quit);

  bAllowClose = false;
  return PlayerOwner().Level.IsPendingConnection();
}


function PlayPopSound(GUIComponent Sender, EAnimationType Type)
{
  if (!Controller.bQuietMenu)
    PlayerOwner().PlaySound(PopInSound);
}


function MenuIn_Done(GUIComponent Sender, EAnimationType Type)
{
  Sender.OnArrival = none;
  PlayPopSound(Sender,Type);
}


function bool ButtonClick(GUIComponent Sender)
{
  Selected = GUIButton(Sender);
  if (Selected == none)
    return false;

  DesiredCharFade=0;
  CharFadeTime = 0.35;

  MoveOn();

  return true;
}


function MenuOut_Done(GUIComponent Sender, EAnimationType Type)
{
  Sender.OnArrival = none;
  if (bAnimating)
    return;

  MoveOn();
}


event bool NotifyLevelChange()
{
  if (bDebugging)
    log(Name@"NotifyLevelChange  PendingConnection:"$PlayerOwner().Level.IsPendingConnection());

  return PlayerOwner().Level.IsPendingConnection();
}


function bool CommunityDraw(canvas c)
{
  local float x,y,xl,yl,a;

  if (bNewNews)
  {
    a = 255.0 * (FadeTime/1.0);
    if (FadeOut)
      a = 255 - a;

    FadeTime += Controller.RenderDelta;
    if (FadeTime>=1.0)
    {
      FadeTime = 0;
      FadeOut = !FadeOut;
    }

    a = fclamp(a,1.0,254.0);
    x = b_ModsAndDemo.ActualLeft();
    y = b_Settings.ActualTop();
    C.Font = Controller.GetMenuFont("UT2MenuFont").GetFont(C.ClipX);
    C.Strlen("Qz,q",xl,yl);
    y -= yl - 5;
    C.Style=5;
    C.SetPos(x+1,y+1);
    C.SetDrawColor(0,0,0,A);
    C.DrawText(NewNewsMsg);

    C.SetPos(x,y);
    C.SetDrawColor(207,185,103,A);
    C.DrawText(NewNewsMsg);
  }

  return false;
}


function OnSteamStatsAndAchievementsReady()
{
  Profile("Profile");
  Controller.OpenMenu("KFGUI.KFProfileAndAchievements");
  Profile("Profile");
}


//=============================================================================
//                              DEFAULTPROPERTIES
//=============================================================================

defaultproperties
{
     Begin Object Class=FloatingImage Name=FloatingBackground
         Image=MaterialSequence'KillingFloorHUD.MainMenu.kf_menu_seq'
         DropShadow=None
         ImageStyle=ISTY_Scaled
         WinTop=0.136089
         WinLeft=0.273078
         WinWidth=0.802660
         WinHeight=1.080918
         RenderWeight=0.000003
     End Object
     KFBackground=FloatingImage'HideMut.HideMainMenu.FloatingBackground'

     Begin Object Class=FloatingImage Name=FloatingBackgroundOverlay
         Image=FinalBlend'InterfaceArt2_tex.filmgrain.FilmgrainOverlayFB'
         DropShadow=None
         ImageStyle=ISTY_Scaled
         WinTop=0.000000
         WinLeft=0.000000
         WinWidth=1.000000
         WinHeight=1.000000
         RenderWeight=0.900000
     End Object
     KFBackgroundOverlay=FloatingImage'HideMut.HideMainMenu.FloatingBackgroundOverlay'

     Begin Object Class=GUIImage Name=KFMenuLogo
         Image=FinalBlend'KillingFloorHUD.KFLogoFB'
         ImageStyle=ISTY_Scaled
         WinTop=0.012000
         WinLeft=0.008000
         WinWidth=0.620000
         WinHeight=0.300000
         RenderWeight=0.050000
     End Object
     KFLogoBit=GUIImage'HideMut.HideMainMenu.KFMenuLogo'

     Begin Object Class=GUILabel Name=WorkshopDownloadLabel
         TextAlign=TXTA_Right
         TextColor=(B=200,G=200,R=200)
         bMultiLine=True
         FontScale=FNS_Small
         WinTop=0.050000
         WinLeft=0.600000
         WinWidth=0.390000
         WinHeight=0.150000
         RenderWeight=0.950000
     End Object
     KFWorkshopDownload=GUILabel'HideMut.HideMainMenu.WorkshopDownloadLabel'

     Begin Object Class=BackgroundImage Name=ImgBkChar
         ImageColor=(A=160)
         ImageRenderStyle=MSTY_Alpha
         X1=0
         Y1=0
         X2=1024
         Y2=768
         RenderWeight=0.040000
         Tag=0
     End Object
     i_bkChar=BackgroundImage'HideMut.HideMainMenu.ImgBkChar'

     Begin Object Class=BackgroundImage Name=PageBackground
         ImageStyle=ISTY_Scaled
         ImageRenderStyle=MSTY_Alpha
         X1=0
         Y1=0
         X2=1024
         Y2=768
     End Object
     i_Background=BackgroundImage'HideMut.HideMainMenu.PageBackground'

     Begin Object Class=GUIImage Name=ImgUT2Logo
     End Object
     i_UT2Logo=GUIImage'HideMut.HideMainMenu.ImgUT2Logo'

     Begin Object Class=GUIImage Name=iPanHuge
     End Object
     i_PanHuge=GUIImage'HideMut.HideMainMenu.iPanHuge'

     Begin Object Class=GUIImage Name=iPanBig
     End Object
     i_PanBig=GUIImage'HideMut.HideMainMenu.iPanBig'

     Begin Object Class=GUIImage Name=iPanSmall
     End Object
     i_PanSmall=GUIImage'HideMut.HideMainMenu.iPanSmall'

     Begin Object Class=GUIImage Name=ImgUT2Shader
     End Object
     i_UT2Shader=GUIImage'HideMut.HideMainMenu.ImgUT2Shader'

     Begin Object Class=GUIImage Name=ImgTV
     End Object
     i_TV=GUIImage'HideMut.HideMainMenu.ImgTV'

     Begin Object Class=GUIButton Name=MultiplayerButton
         CaptionAlign=TXTA_Left
         CaptionEffectStyleName="TextButtonEffect"
         Caption="Multiplayer"
         StyleName="ListSelection"
         Hint="All hell breaks loose..."
         WinTop=0.290000
         WinLeft=0.050000
         WinWidth=0.200000
         WinHeight=0.035000
         TabOrder=1
         bFocusOnWatch=True
         OnClick=HideMainMenu.ButtonClick
         OnKeyEvent=MultiplayerButton.InternalOnKeyEvent
     End Object
     b_MultiPlayer=GUIButton'HideMut.HideMainMenu.MultiplayerButton'

     Begin Object Class=GUIButton Name=HostButton
         CaptionAlign=TXTA_Left
         CaptionEffectStyleName="TextButtonEffect"
         Caption="Host Game"
         StyleName="ListSelection"
         Hint="Start a server and invite others to join your game"
         WinTop=0.325000
         WinLeft=0.050000
         WinWidth=0.200000
         WinHeight=0.035000
         TabOrder=2
         bFocusOnWatch=True
         OnClick=HideMainMenu.ButtonClick
         OnKeyEvent=HostButton.InternalOnKeyEvent
     End Object
     b_Host=GUIButton'HideMut.HideMainMenu.HostButton'

     Begin Object Class=GUIButton Name=InstantActionButton
         CaptionAlign=TXTA_Left
         CaptionEffectStyleName="TextButtonEffect"
         Caption="Solo"
         StyleName="ListSelection"
         Hint="Play Killing Floor Solo Mode"
         WinTop=0.360000
         WinLeft=0.050000
         WinWidth=0.200000
         TabOrder=3
         bFocusOnWatch=True
         OnClick=HideMainMenu.ButtonClick
         OnKeyEvent=InstantActionButton.InternalOnKeyEvent
     End Object
     b_InstantAction=GUIButton'HideMut.HideMainMenu.InstantActionButton'

     Begin Object Class=GUIButton Name=ProfileButton
         CaptionAlign=TXTA_Left
         CaptionEffectStyleName="TextButtonEffect"
         Caption="Profile and Achievements"
         StyleName="ListSelection"
         Hint="Your profile and achievements"
         WinTop=0.420000
         WinLeft=0.050000
         WinWidth=0.220000
         TabOrder=4
         bFocusOnWatch=True
         OnDraw=HideMainMenu.CommunityDraw
         OnClick=HideMainMenu.ButtonClick
         OnKeyEvent=ModsAndDemosButton.InternalOnKeyEvent
     End Object
     b_Profile=GUIButton'HideMut.HideMainMenu.ProfileButton'

     Begin Object Class=GUIButton Name=JoinLHButton
         CaptionAlign=TXTA_Left
         CaptionEffectStyleName="TextButtonEffect"
         Caption="Join Local Host"
         StyleName="ListSelection"
         Hint="Joins local host server."
         WinTop=0.455000
         WinLeft=0.050000
         WinWidth=0.220000
         TabOrder=4
         bFocusOnWatch=True
         OnClick=HideMainMenu.ButtonClick
         OnKeyEvent=ModsAndDemosButton.InternalOnKeyEvent
     End Object
     b_JoinLH=GUIButton'HideMut.HideMainMenu.JoinLHButton'

     Begin Object Class=GUIButton Name=WorkshopButton
         CaptionAlign=TXTA_Left
         CaptionEffectStyleName="TextButtonEffect"
         Caption="Steam Workshop Content"
         StyleName="ListSelection"
         Hint="Custom Content in the Steam Workshop"
         WinTop=0.490000
         WinLeft=0.050000
         WinWidth=0.220000
         TabOrder=4
         bFocusOnWatch=True
         OnClick=HideMainMenu.ButtonClick
         OnKeyEvent=ModsAndDemosButton.InternalOnKeyEvent
     End Object
     b_Workshop=GUIButton'HideMut.HideMainMenu.WorkshopButton'

     Begin Object Class=GUIButton Name=SettingsButton
         CaptionAlign=TXTA_Left
         CaptionEffectStyleName="TextButtonEffect"
         Caption="Settings"
         StyleName="ListSelection"
         Hint="Change your controls and settings"
         WinTop=0.550000
         WinLeft=0.050000
         WinWidth=0.200000
         WinHeight=0.035000
         TabOrder=6
         bFocusOnWatch=True
         OnClick=HideMainMenu.ButtonClick
         OnKeyEvent=SettingsButton.InternalOnKeyEvent
     End Object
     b_Settings=GUIButton'HideMut.HideMainMenu.SettingsButton'

     Begin Object Class=GUIButton Name=QuitButton
         CaptionAlign=TXTA_Left
         CaptionEffectStyleName="TextButtonEffect"
         Caption="Exit"
         StyleName="ListSelection"
         Hint="Leave this loose game"
         WinTop=0.585000
         WinLeft=0.050000
         WinWidth=0.200000
         WinHeight=0.035000
         TabOrder=7
         bFocusOnWatch=True
         OnClick=HideMainMenu.ButtonClick
         OnKeyEvent=QuitButton.InternalOnKeyEvent
     End Object
     b_Quit=GUIButton'HideMut.HideMainMenu.QuitButton'

     MenuSong="KFMenu"
     SteamMustBeRunningText="Steam must be running and you must have an active internet connection to access this"
     UnknownSteamErrorText="Unknown Steam error prevented access to this"
     PopInSound=Sound'PatchSounds.slide1-1'
     SlideInSound=Sound'PatchSounds.slide1-1'
     BeepSound=Sound'KFWeaponSound.bullethitmetal3'
     bRenderWorld=True
     bPersistent=True
     OnOpen=HideMainMenu.InternalOnOpen
     OnReOpen=HideMainMenu.MainReopened
     OnCanClose=HideMainMenu.CanClose
     WinTop=0.000000
     WinHeight=1.000000
     OnKeyEvent=HideMainMenu.MyKeyEvent
}
