rott/kf_sources/ServerPerks/Classes/SRTab_MidGameHelp.uc
2026-07-14 20:27:09 +07:00

218 lines
6.5 KiB
Ucode

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<GameInfo> GameClass;
var array<string> 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<GameInfo>(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
}