// ==================================================================== // (C) 2002, Epic Games // ==================================================================== class UT2k4ModelSelect extends LockedFloatingWindow; // ifndef _RO_ //#EXEC OBJ LOAD FILE=2K4Menus.utx // ifndef _RO_ //#exec obj load file=PlayerPictures.utx var Material LockedImage; var automated GUIVertImageListBox CharList; var automated MoComboBox co_Race; var automated GUIImage i_bk; var() array PlayerList; var UT2K4Tab_PlayerSettings MyTab; // Used for the callback var SpinnyWeap SpinnyDude; // MUST be set to null when you leave the window var (SpinnyDude) vector SpinnyDudeOffset; var int nfov; var() int YawValue; var() private string InvalidTypes, IgnoredTypes; function InitComponent(GUIController MyController, GUIComponent MyOwner) { Super.Initcomponent(MyController, MyOwner); sb_Main.SetPosition(0.040000,0.075000,0.680742,0.555859); sb_Main.RightPadding = 0.5; sb_Main.ManageComponent(CharList); class'xUtil'.static.GetPlayerList(PlayerList); RefreshCharacterList(InvalidTypes); co_Race.MyComboBox.List.bInitializeList = True; co_Race.ReadOnly(True); co_Race.AddItem("All"); PopulateRaces(); RaceChange(none); co_Race.OnChange=RaceChange; // Spawn spinning character actor if ( SpinnyDude == None ) SpinnyDude = PlayerOwner().spawn(class'XInterface.SpinnyWeap'); SpinnyDude.SetDrawType(DT_Mesh); SpinnyDude.SetDrawScale(0.9); SpinnyDude.SpinRate = 0; } event Opened( GUIComponent Sender ) { local rotator R; super.Opened(Sender); if ( SpinnyDude != None ) { R.Yaw = 32768; SpinnyDude.SetRotation( R + PlayerOwner().Rotation ); } } function PopulateRaces() { local int i; local string specName; for(i=0; i Excluded; local bool blocked; // Prevent list from calling OnChange events CharList.List.bNotify = False; CharList.Clear(); Split(ExcludedChars, ";", Excluded); for(i=0; i= 0 && Elem.Item < Playerlist.Length ) { if ( Elem.Locked==1 ) b_Ok.DisableMe(); else b_Ok.EnableMe(); sb_Main.Caption = PlayerList[Elem.Item].DefaultName; if (sb_Main.Caption ~= "Mr.Crow") PlayerOwner().ClientPlaySound(sound(DynamicLoadObject("AnnouncerNames.Mr_Crow", class'Sound')),,,SLOT_Interface); } else sb_Main.Caption = ""; UpdateSpinnyDude(); } function RaceChange(GUIComponent Sender) { local string specName; specName = co_Race.GetText(); if (specName=="All") specName=""; RefreshCharacterList(InvalidTypes, specName); } function UpdateSpinnyDude() { local int idx; local xUtil.PlayerRecord Rec; local Mesh PlayerMesh; local Material BodySkin, HeadSkin; local string BodySkinName, HeadSkinName, TeamSuffix; idx = CharList.List.GetItem(); if ( idx < 0 || idx >= Playerlist.Length ) return; Rec = PlayerList[idx]; if (Rec.Race ~= "Juggernaut" || Rec.DefaultName~="Axon" || Rec.DefaultName~="Cyclops" || Rec.DefaultName ~="Virus" ) SpinnyDudeOffset=vect(250.0,1.00,-14.00); else SpinnyDudeOffset=vect(250.0,1.00,-24.00); PlayerMesh = Mesh(DynamicLoadObject(Rec.MeshName, class'Mesh')); if(PlayerMesh == None) { Log("Could not load mesh: "$Rec.MeshName$" For player: "$Rec.DefaultName); return; } // Get the body skin BodySkinName = Rec.BodySkinName; // Get the head skin HeadSkinName = Rec.FaceSkinName; if ( Rec.TeamFace ) HeadSkinName $= TeamSuffix; BodySkin = Material(DynamicLoadObject(BodySkinName, class'Material')); if(BodySkin == None) { Log("Could not load body material: "$Rec.BodySkinName$" For player: "$Rec.DefaultName); return; } HeadSkin = Material(DynamicLoadObject(HeadSkinName, class'Material')); if(HeadSkin == None) { Log("Could not load head material: "$HeadSkinName$" For player: "$Rec.DefaultName); return; } SpinnyDude.LinkMesh(PlayerMesh); SpinnyDude.Skins[0] = BodySkin; SpinnyDude.Skins[1] = HeadSkin; SpinnyDude.LoopAnim( 'Idle_Rest', 1.0/SpinnyDude.Level.TimeDilation ); } function bool InternalOnDraw(canvas Canvas) { local vector CamPos, X, Y, Z; local rotator CamRot; local float oOrgX, oOrgY; local float oClipX, oClipY; oOrgX = Canvas.OrgX; oOrgY = Canvas.OrgY; oClipX = Canvas.ClipX; oClipY = Canvas.ClipY; Canvas.OrgX = i_bk.ActualLeft(); Canvas.OrgY = i_bk.ActualTop(); Canvas.ClipX = i_bk.ActualWidth(); Canvas.ClipY = i_bk.ActualHeight(); canvas.GetCameraLocation(CamPos, CamRot); GetAxes(CamRot, X, Y, Z); SpinnyDude.SetLocation(CamPos + (SpinnyDudeOffset.X * X) + (SpinnyDudeOffset.Y * Y) + (SpinnyDudeOffset.Z * Z)); canvas.DrawActorClipped(SpinnyDude, false, i_bk.ActualLeft(), i_bk.ActualTop(), i_bk.ActualWidth(), i_bk.ActualHeight(), true, nFOV); Canvas.OrgX = oOrgX; Canvas.OrgY = oOrgY; Canvas.ClipX = oClipX; Canvas.ClipY = oClipY; return true; } function Free() { Super.Free(); if ( SpinnyDude != None ) SpinnyDude.Destroy(); SpinnyDude = None; } function HandleParameters( string Who, string Team ) { local int i; if (Team!="") co_Race.Find(team); for (i=0;i= PlayerList.Length ) return ""; return PlayerList[idx].DefaultName; } function bool IsHiddenCharacter( string CharacterMenuString ) { local int i; local array RecordFilters; if ( CharacterMenuString == "" ) return false; Split(CharacterMenuString, ";", RecordFilters); // Remove any exclusivity filters (filters not related to locked/unlocked characters) for ( i = RecordFilters.Length - 1; i >= 0; i-- ) { if ( InStr(";" $ IgnoredTypes $ ";", ";" $ RecordFilters[i] $ ";") != -1 ) { RecordFilters.Remove(i,1); continue; } } return RecordFilters.Length > 0; } function bool IsUnlocked( xUtil.PlayerRecord Test ) { // If character has no menu filter, just return true if ( !IsHiddenCharacter(Test.Menu) ) return true; return class'UT2K4MainPage'.static.IsUnlocked(Test.Menu); } defaultproperties { // OnKeyEvent=CoolOnKeyEvent InvalidTypes="DUP" IgnoredTypes="SP" Begin Object class=GUIVertImageListBox name=vil_CharList bScaleToParent=true bBoundToParent=true WinWidth=0.403407 WinHeight=0.658125 WinLeft=0.102888 WinTop=0.185119 CellStyle=Cell_FixedCount NoVisibleRows=3 NoVisibleCols=4 TabOrder=0 OnChange=ListChange End Object CharList=vil_CharList Begin Object Class=moComboBox Name=CharRace bScaleToParent=true bBoundToParent=true WinWidth=0.388155 WinHeight=0.042857 WinLeft=0.052733 WinTop=0.880000 Caption="Race" Hint="Filter the available characters by race." CaptionWidth=0.25 bAutoSizeCaption=True ComponentJustification=TXTA_Left TabOrder=4 bReadOnly=True End Object co_Race=CharRace Begin Object class=GUIImage Name=iBK bScaleToParent=true bBoundToParent=true WinWidth=0.368945 WinHeight=0.812500 WinLeft=0.530206 WinTop=0.007507 Image=Texture'InterfaceArt_tex.Menu.changeme_texture' //Material'2K4Menus.Controls.buttonSquare_b' ImageColor=(R=255,G=255,B=255,A=128) ImageRenderStyle=MSTY_Alpha ImageStyle=ISTY_Stretched RenderWeight=0.52 DropShadow=Texture'InterfaceArt_tex.Menu.changeme_texture' //Material'2K4Menus.Controls.shadow' DropShadowX=4 DropShadowY=4 OnDraw=InternalOnDraw End Object i_Bk=ibk bCaptureInput=True WindowName="Select Character" nFOV=15 SpinnyDudeOffset=(X=250.0,Y=1.00,Z=-14.00) // ifndef _RO_ //LockedImage=Material'PlayerPictures.cDefault' }