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

253 lines
6.9 KiB
Ucode

//====================================================================
// xVoting.MapInfoPage
// Map Information Page
//
// Written by Bruce Bickar
// (c) 2003, Epic Games, Inc. All Rights Reserved
// ====================================================================
class MapInfoPage extends LockedFloatingWindow;
var automated GUISectionBackground sb_Info;
var automated GUIScrollTextBox lb_MapDesc;
var automated GUIImage i_MapImage;
var automated GUILabel l_MapAuthor, l_MapPlayers, l_NoPreview;
var array<CacheManager.MapRecord> Maps;
var localized string MessageNoInfo, AuthorText, PlayerText, lmsgLevelPreviewUnavailable;
//------------------------------------------------------------------------------------------------
function InitComponent(GUIController MyController, GUIComponent MyOwner)
{
Super.Initcomponent(MyController, MyOwner);
b_Cancel.SetVisibility(false);
sb_Main.SetPosition(0.042302,0.043286,0.917083,0.451979);
sb_Main.bBoundToParent=true;
sb_Main.bScaletoParent=true;
sb_Main.ManageComponent(i_MapImage);
sb_Info.Managecomponent(lb_MapDesc);
sb_Info.bBoundToParent=true;
sb_Info.bScaletoParent=true;
class'CacheManager'.static.GetMapList( Maps );
}
//------------------------------------------------------------------------------------------------
function HandleParameters(string Param1, string Param2)
{
ReadMapInfo(Param1);
}
//------------------------------------------------------------------------------------------------
function ReadMapInfo(string MapName)
{
local DecoText DText;
local string mDesc;
local int Index, i;
local Material Screenie;
local string Package, Item;
if(MapName == "")
return;
if (!Controller.bCurMenuInitialized)
return;
MapName = StripMapName(MapName);
Index = FindCacheRecordIndex(MapName);
if (Maps[Index].FriendlyName != "")
sb_Main.Caption = Maps[Index].FriendlyName;
else
sb_Main.Caption = MapName;
if ( Maps[Index].ScreenshotRef != "" )
Screenie = Material(DynamicLoadObject(Maps[Index].ScreenshotRef, class'Material'));
i_MapImage.Image = Screenie;
l_NoPreview.SetVisibility( Screenie == None );
i_MapImage.SetVisibility( Screenie != None );
l_MapPlayers.Caption = Maps[Index].PlayerCountMin@"-"@Maps[Index].PlayerCountMax@PlayerText;
if ( class'CacheManager'.static.Is2003Content(Maps[Index].MapName) )
{
if ( Maps[i].TextName != "" )
{
if ( !Divide(Maps[Index].TextName, ".", Package, Item) )
{
Package = "XMaps";
Item = Maps[Index].TextName;
}
DText = class'xUtil'.static.LoadDecoText( Package, Item );
}
}
if (DText != None)
{
for (i = 0; i < DText.Rows.Length; i++)
{
if (mDesc != "")
mDesc $= "|";
mDesc $= DText.Rows[i];
}
}
else mDesc = Maps[Index].Description;
if (mDesc == "")
mDesc = MessageNoInfo;
lb_MapDesc.SetContent( mDesc );
if (Maps[Index].Author != "")
l_MapAuthor.Caption = AuthorText$":"@Maps[Index].Author;
else l_MapAuthor.Caption = "";
}
//------------------------------------------------------------------------------------------------
// Remove any additional text from the map's name
// Used for getting just the mapname
function string StripMapName( string FullMapName )
{
local int pos;
pos = InStr(FullMapName, " ");
if ( pos != -1 )
FullMapName = Left(FullMapName, pos);
return FullMapName;
}
//------------------------------------------------------------------------------------------------
function int FindCacheRecordIndex(string MapName)
{
local int i;
for (i = 0; i < Maps.Length; i++)
if (Maps[i].MapName == MapName)
return i;
return -1;
}
//------------------------------------------------------------------------------------------------
function bool ReturnButtonOnClick(GUIComponent Sender)
{
Controller.CloseMenu(true);
return true;
}
//------------------------------------------------------------------------------------------------
function SetVisibility(bool bIsVisible)
{
Super.SetVisibility(bIsVisible);
l_NoPreview.SetVisibility( i_MapImage.Image == None );
i_MapImage.SetVisibility( i_MapImage.Image != None );
}
defaultproperties
{
Begin Object Class=GUISectionBackground Name=sbInfo
WinWidth=0.918322
WinHeight=0.374167
WinLeft=0.045305
WinTop=0.514698
bFillClient=true
End Object
sb_Info=sbInfo
Begin Object Class=GUIImage Name=MapImage
WinWidth=0.917083
WinHeight=0.451979
WinLeft=0.281885
WinTop=0.173177
ImageColor=(R=255,G=255,B=255,A=255)
ImageStyle=ISTY_Scaled
ImageRenderStyle=MSTY_Normal
RenderWeight=0.2
bScaleToParent=True
End Object
i_MapImage=MapImage
Begin Object Class=GUILabel Name=NoPreview
WinWidth=0.917083
WinHeight=0.451979
WinLeft=0.281885
WinTop=0.173177
TextFont="UT2HeaderFont"
TextAlign=TXTA_Center
VertAlign=TXTA_Center
bMultiline=True
bTransparent=False
TextColor=(R=247,G=255,B=0,A=255)
Caption="No Preview Available"
bScaleToParent=True
End Object
l_NoPreview=NoPreview
Begin Object class=GUILabel Name=MapAuthorLabel
Caption="MapAuthor"
TextAlign=TXTA_Center
TextFont="UT2ServerListFont"
TextColor=(R=255,G=255,B=255,A=255)
WinWidth=0.915313
WinHeight=0.049359
WinLeft=0.042804
WinTop=0.366257
RenderWeight=0.3
bScaleToParent=True
End Object
l_MapAuthor=MapAuthorLabel
Begin Object class=GUILabel Name=MapPlayersLabel
Caption="Players"
TextAlign=TXTA_Center
TextFont="UT2ServerListFont"
TextColor=(R=255,G=255,B=255,A=255)
WinWidth=0.915313
WinHeight=0.049359
WinLeft=0.042804
WinTop=0.397652
RenderWeight=0.3
bScaleToParent=True
End Object
l_MapPlayers=MapPlayersLabel
Begin Object Class=GUIScrollTextBox Name=MapInfoList
WinWidth=0.918322
WinHeight=0.207500
WinLeft=0.284888
WinTop=0.620235
CharDelay=0.0025
EOLDelay=0.5
bNeverFocus=true
StyleName="NoBackground"
bTabStop=False
bBoundToParent=false
bVisibleWhenEmpty=true
bNoTeletype=false
bStripColors=false
bScaleToParent=True
End Object
lb_MapDesc = MapInfoList
Background=None
WinWidth=0.468750
WinHeight=0.801954
WinLeft=0.264063
WinTop=0.077213
DefaultWidth=0.468750
DefaultHeight=0.801954
DefaultLeft=0.264063
DefaultTop=0.077213
bRenderWorld=true
bRequire640x480=false
bAllowedAsLast=true
MessageNoInfo="No information available!"
AuthorText="Author"
PlayerText="players"
lmsgLevelPreviewUnavailable="Level Preview Unavailable"
}