class SRTab_MidGameHelp extends SRTab_Base; var bool bReceivedGameClass; var automated GUISectionBackground sb_GameDesc, sb_Hints; var automated GUIScrollTextBox GameDescriptionBox, HintsBox; var automated GUILabel HintCountLabel; var automated GUIButton PrevHintButton, NextHintButton; var class GameClass; var array AllGameHints; var int CurrentHintIndex; function InitComponent(GUIController MyController, GUIComponent MyOwner) { // Init localized sb_GameDesc.Caption = Class'KFTab_MidGameHelp'.Default.sb_GameDesc.Caption; sb_Hints.Caption = Class'KFTab_MidGameHelp'.Default.sb_Hints.Caption; PrevHintButton.Caption = Class'KFTab_MidGameHelp'.Default.PrevHintButton.Caption; NextHintButton.Caption = Class'KFTab_MidGameHelp'.Default.NextHintButton.Caption; Super.Initcomponent(MyController, MyOwner); sb_GameDesc.ManageComponent(GameDescriptionBox); sb_Hints.ManageComponent(HintsBox); PrevHintButton.bBoundToParent=false; PrevHintButton.bScaleToParent=false; NextHintButton.bBoundToParent=false; NextHintButton.bScaleToParent=false; HintCountLabel.bBoundToParent=false; HintCountLabel.bScaleToParent=false; } function ShowPanel(bool bShow) { Super.ShowPanel(bShow); if (bShow && !bReceivedGameClass) { SetTimer(1.0, true); Timer(); } } function Timer() { local PlayerController PC; local int i; PC = PlayerOwner(); if (PC != None && PC.GameReplicationInfo != None && PC.GameReplicationInfo.GameClass != "") { GameClass = class(DynamicLoadObject(PC.GameReplicationInfo.GameClass, class'Class')); if (GameClass != None) { //get game description and hints from game class GameDescriptionBox.SetContent(GameClass.default.Description); AllGameHints = GameClass.static.GetAllLoadHints(); if (AllGameHints.length > 0) { for (i = 0; i < AllGameHints.length; i++) { AllGameHints[i] = GameClass.static.ParseLoadingHint(AllGameHints[i], PC, HintsBox.Style.FontColors[HintsBox.MenuState]); if (AllGameHints[i] == "") { AllGameHints.Remove(i, 1); i--; } } HintsBox.SetContent(AllGameHints[CurrentHintIndex]); HintCountLabel.Caption = string(CurrentHintIndex + 1) @ "/" @ string(AllGameHints.length); EnableComponent(PrevHintButton); EnableComponent(NextHintButton); } KillTimer(); bReceivedGameClass = true; } } } function bool ButtonClicked(GUIComponent Sender) { if (Sender == PrevHintButton) { CurrentHintIndex--; if (CurrentHintIndex < 0) CurrentHintIndex = AllGameHints.length - 1; } else if (Sender == NextHintButton) { CurrentHintIndex++; if (CurrentHintIndex >= AllGameHints.length) CurrentHintIndex = 0; } HintsBox.SetContent(AllGameHints[CurrentHintIndex]); HintCountLabel.Caption = string(CurrentHintIndex + 1) @ "/" @ string(AllGameHints.length); return true; } function bool FixUp(Canvas C) { local float t,h,l,w,xl; h = 20; t = sb_Hints.ActualTop() + sb_Hints.ActualHeight() - 27; PrevHintButton.WinLeft = sb_Hints.ActualLeft() + 40; PrevHintButton.WinTop = t; PrevHintButton.WinHeight=h; NextHintButton.WinLeft = sb_Hints.ActualLeft() + sb_Hints.ActualWidth() - 40 - NextHintButton.ActualWidth(); NextHintButton.WinTop = t; NextHintButton.WinHeight=h; l = PrevHintButton.ActualLeft() + PrevHintButton.ActualWidth(); w = NextHintButton.ActualLeft() - L; XL = HintCountLabel.ActualWidth(); l = l + (w/2) - (xl/2); HintCountLabel.WinLeft=l; HintCountLabel.WinTop=t; HintCountLabel.WinWidth = xl; HintCountLabel.WinHeight=h; return false; } defaultproperties { Begin Object Class=AltSectionBackground Name=sbGameDesc bFillClient=True WinTop=0.020438 WinLeft=0.023625 WinWidth=0.944875 WinHeight=0.455783 bBoundToParent=True bScaleToParent=True OnPreDraw=sbGameDesc.InternalPreDraw End Object sb_GameDesc=AltSectionBackground'ServerPerks.SRTab_MidGameHelp.sbGameDesc' Begin Object Class=AltSectionBackground Name=sbHints bFillClient=True WinTop=0.482921 WinLeft=0.023625 WinWidth=0.944875 WinHeight=0.390000 bBoundToParent=True bScaleToParent=True OnPreDraw=sbHints.InternalPreDraw End Object sb_Hints=AltSectionBackground'ServerPerks.SRTab_MidGameHelp.sbHints' Begin Object Class=GUIScrollTextBox Name=InfoText bNoTeletype=True CharDelay=0.002500 EOLDelay=0.000000 TextAlign=TXTA_Center OnCreateComponent=InfoText.InternalOnCreateComponent WinTop=0.203750 WinHeight=0.316016 bBoundToParent=True bScaleToParent=True bNeverFocus=True End Object GameDescriptionBox=GUIScrollTextBox'ServerPerks.SRTab_MidGameHelp.InfoText' Begin Object Class=GUIScrollTextBox Name=HintText bNoTeletype=True CharDelay=0.002500 EOLDelay=0.000000 TextAlign=TXTA_Center OnCreateComponent=HintText.InternalOnCreateComponent WinTop=0.653750 WinHeight=0.266016 bBoundToParent=True bScaleToParent=True bNeverFocus=True End Object HintsBox=GUIScrollTextBox'ServerPerks.SRTab_MidGameHelp.HintText' Begin Object Class=GUILabel Name=HintCount TextAlign=TXTA_Center TextColor=(B=255,G=255,R=255) WinTop=0.900000 WinLeft=0.300000 WinWidth=0.400000 WinHeight=32.000000 End Object HintCountLabel=GUILabel'ServerPerks.SRTab_MidGameHelp.HintCount' Begin Object Class=GUIButton Name=PrevHint bAutoSize=True WinTop=0.750000 WinLeft=0.131500 WinWidth=0.226801 WinHeight=0.042125 TabOrder=0 OnClick=SRTab_MidGameHelp.ButtonClicked OnKeyEvent=PrevHint.InternalOnKeyEvent End Object PrevHintButton=GUIButton'ServerPerks.SRTab_MidGameHelp.PrevHint' Begin Object Class=GUIButton Name=NextHint bAutoSize=True WinTop=0.750000 WinLeft=0.698425 WinWidth=0.159469 WinHeight=0.042125 TabOrder=1 OnClick=SRTab_MidGameHelp.ButtonClicked OnKeyEvent=NextHint.InternalOnKeyEvent End Object NextHintButton=GUIButton'ServerPerks.SRTab_MidGameHelp.NextHint' OnPreDraw=SRTab_MidGameHelp.FixUp }