99
1010class MonsterHUD extends ChallengeTeamHUD ;
1111
12- #exec TEXTURE IMPORT NAME =HudIcon FILE =Textures \hudicon .PCX GROUP ="Hud " MIPS =OFF LODSET =0
13- #exec TEXTURE IMPORT NAME =BlackStuff FILE =Textures \BlackStuff .PCX GROUP ="Hud " MIPS =OFF LODSET =0
14- #exec TEXTURE IMPORT NAME =BlackStuff2 FILE =Textures \BlackStuff2 .PCX GROUP ="Hud " MIPS =OFF LODSET =0
12+ #exec TEXTURE IMPORT NAME =HudIcon FILE =Textures \HUDIcon .PCX GROUP =Hud MIPS =OFF LODSET =0
13+ #exec TEXTURE IMPORT NAME =BlackStuff FILE =Textures \BlackStuff .PCX GROUP =Hud MIPS =OFF LODSET =0
14+ #exec TEXTURE IMPORT NAME =BlackStuff2 FILE =Textures \BlackStuff2 .PCX GROUP =Hud MIPS =OFF LODSET =0
15+ #exec TEXTURE IMPORT NAME =ObjComplete FILE =Textures \ObjComplete .pcx GROUP =Hud MIPS =OFF LODSET =0
16+ #exec TEXTURE IMPORT NAME =ObjIncomplete FILE =Textures \ObjIncomplete .pcx GROUP =Hud MIPS =OFF LODSET =0
1517
1618var localized string TimeRemainingLabel ;
1719var localized string LivesRemainLabel ;
@@ -26,10 +28,13 @@ simulated function PostBeginPlay() {
2628}
2729
2830simulated function DrawGameSynopsis (Canvas Canvas ) {
29- local float XL , YL , YOffset ;
31+ local float XL , YL , YOffset , XOffset ;
3032 local string escapesString ;
3133 local MonsterReplicationInfo mri ;
32- local int Minutes , Seconds ;
34+ local int Minutes , Seconds , i ;
35+ local MonsterHuntObjective obj ;
36+
37+ XOffset = 10 ;
3338
3439 if ((PawnOwner .PlayerReplicationInfo == None ) || PawnOwner .PlayerReplicationInfo .bIsSpectator ) return ;
3540
@@ -48,17 +53,17 @@ simulated function DrawGameSynopsis(Canvas Canvas) {
4853 }
4954
5055 if (mri != None ) {
51- Canvas .SetPos (0 , YOffset );
52- Canvas .DrawText (" " $ MonstersRemainLabel $ ": " $ string (mri .Monsters ), False );
56+ Canvas .SetPos (XOffset , YOffset );
57+ Canvas .DrawText (MonstersRemainLabel $ ": " $ string(mri.Monsters), False);
5358 YOffset -= YL;
5459
55- Canvas .SetPos (0 , YOffset );
56- Canvas .DrawText (" " $ HuntersRemainLabel $ ": " $ string (mri .Hunters ), False );
60+ Canvas.SetPos(XOffset , YOffset);
61+ Canvas.DrawText(HuntersRemainLabel $ " : " $ string(mri.Hunters), False);
5762 YOffset -= YL;
5863
5964 if (Level.Game.IsA('MonsterHuntDefence')) {
60- Canvas .SetPos (0 , YOffset );
61- escapesString = " " $ EscapedMonstersLabel $ ": " $ string(mri.Escapees);
65+ Canvas.SetPos(XOffset , YOffset);
66+ escapesString = EscapedMonstersLabel $ " : " $ string(mri.Escapees);
6267 if (mri.MaxEscapees > 0) {
6368 escapesString = escapesString $ " /" $ string(mri.MaxEscapees);
6469 if (mri.MaxEscapees - mri.Escapees < 5) Canvas.DrawColor = RedColor;
@@ -72,20 +77,53 @@ simulated function DrawGameSynopsis(Canvas Canvas) {
7277 if (mri.bUseLives) {
7378 if (PawnOwner.PlayerReplicationInfo.Deaths < 3) Canvas.DrawColor = RedColor;
7479 else Canvas.DrawColor = WhiteColor;
75- Canvas.SetPos(0 , YOffset);
76- Canvas.DrawText(" " $ LivesRemainLabel $ " : " $ int(PawnOwner.PlayerReplicationInfo.Deaths), False);
80+ Canvas.SetPos(XOffset , YOffset);
81+ Canvas.DrawText(LivesRemainLabel $ " : " $ int(PawnOwner.PlayerReplicationInfo.Deaths), False);
7782 YOffset -= YL;
7883 }
7984
8085 if (mri.RemainingTime > 0) {
8186 if (mri.RemainingTime < 30) Canvas.DrawColor = RedColor;
8287 else Canvas.DrawColor = WhiteColor;
83- Canvas.SetPos(0 , YOffset);
88+ Canvas.SetPos(XOffset , YOffset);
8489 Minutes = mri.RemainingTime / 60;
8590 Seconds = mri.RemainingTime % 60;
86- Canvas.DrawText(" " $ TimeRemainingLabel $ " : " $ TwoDigitString(Minutes) $ " :" $ TwoDigitString(Seconds), true);
91+ Canvas.DrawText(TimeRemainingLabel $ " : " $ TwoDigitString(Minutes) $ " :" $ TwoDigitString(Seconds), true);
8792 YOffset -= YL;
8893 }
94+
95+ //
96+ // objectives rendering
97+ YOffset -= YL;
98+ for (i = 15; i >= 0; i--) { // backwards, since we're rendering hud elements from bottom up
99+ obj = mri.objectives[i];
100+ if (obj != None) {
101+ if (!obj.bActive && !obj.bAlwaysShown) {
102+ if (!obj.bCompleted || (obj.bCompleted && !obj.bShowWhenComplete)) continue;
103+ }
104+ if (!obj.bActive) {
105+ Canvas.Style = ERenderStyle.STY_Translucent;
106+ Canvas.DrawColor = WhiteColor * 0.5;
107+ } else {
108+ Canvas.DrawColor = GoldColor;
109+ }
110+
111+ Canvas.SetPos(XOffset + YL, YOffset);
112+ Canvas.DrawText(obj.message, False);
113+
114+ Canvas.Style = ERenderStyle.STY_Translucent;
115+ Canvas.SetPos(XOffset + 4, YOffset + 4);
116+ if (obj.bCompleted) {
117+ Canvas.DrawTile(Texture'{{package}}.Hud.ObjComplete', (YL - 8) * Scale, (YL - 8) * Scale, 0, 0, 32, 32);
118+ } else {
119+ Canvas.DrawTile(Texture'{{package}}.Hud.ObjIncomplete', (YL - 8) * Scale, (YL - 8) * Scale, 0, 0, 32, 32);
120+ }
121+
122+ Canvas.Style = Style;
123+
124+ YOffset -= YL;
125+ }
126+ }
89127 }
90128}
91129
0 commit comments