diff --git a/sources/GUI/NiceInteraction.uc b/sources/GUI/NiceInteraction.uc index c9d5f9d..c40256e 100644 --- a/sources/GUI/NiceInteraction.uc +++ b/sources/GUI/NiceInteraction.uc @@ -12,11 +12,15 @@ var float size; var float InventoryBoxWidth; var float InventoryBoxHeight; var float BorderSize; -event NotifyLevelChange(){ - Master.RemoveInteraction(self); + +event NotifyLevelChange() +{ + Master.RemoveInteraction(self); } -function RegisterMutator(NicePack activePack){ - NicePackMutator = activePack; + +function RegisterMutator(NicePack activePack) +{ + NicePackMutator = activePack; } final private function bool bIsPoisoned(ScrnHumanPawn pwn) @@ -58,10 +62,16 @@ function PostRender(Canvas C) local NiceWeapon niceWeap; local NicePlayerController nicePlayer; local ScrnHUD scrnHUDInstance; + // TODO maybe use scrnhud? + local HUDKillingFloor kfHud; local Texture barTexture; local int x, y, center, barWidth, offset; local int missesWidth, missesHeight, missesSpace; local int missesX, missesY; + local Vector CamPos, ViewDir; + local Rotator CamRot; + local float OffsetX, BarLength, BarHeight, XL, YL, posY; + if(C == none) return; if(C.ViewPort == none) return; if(C.ViewPort.Actor == none) return; @@ -72,7 +82,7 @@ function PostRender(Canvas C) return; scrnHUDInstance = ScrnHUD(nicePlayer.myHUD); - //// Draw bleed and poison icons + //// Draw bleed and poison icons for OWNER offset = 4; // BLEED!!! if (bIsBleeding(ScrnHumanPawn(C.ViewPort.Actor.Pawn))) @@ -92,8 +102,49 @@ function PostRender(Canvas C) C.DrawTile(poisonIcon, size, size, 0, 0, poisonIcon.MaterialUSize(), poisonIcon.MaterialVSize()); } + // draw bleed and poison icons for TEAMMATES + C.GetCAmeraLocation(CamPos, CamRot); + ViewDir = vector(CamRot); + kfHud = HUDKillingFloor(ViewportOwner.Actor.myHUD); + OffsetX = (36.f * kfHud.default.VeterancyMatScaleFactor * 0.6) - (kfHud.default.HealthIconSize + 2.0); + BarLength = FMin(kfHud.default.BarLength * (float(C.SizeX) / 1024.f), kfHud.default.BarLength); + BarHeight = FMin(kfHud.default.BarHeight * (float(C.SizeX) / 1024.f), kfHud.default.BarHeight); + for (i = 0; i < kfHUD.PlayerInfoPawns.Length; i++) + { + if (kfHUD.PlayerInfoPawns[i].Pawn != none && kfHUD.PlayerInfoPawns[i].Pawn.Health > 0 && + (kfHUD.PlayerInfoPawns[i].Pawn.Location - kfHUD.PawnOwner.Location) dot ViewDir > 0.8 && + kfHUD.PlayerInfoPawns[i].RendTime > ViewportOwner.Actor.Level.TimeSeconds) + { + C.StrLen(Left(kfHUD.PlayerInfoPawns[i].Pawn.PlayerReplicationInfo.PlayerName, 16), XL, YL); + if (kfHUD.PlayerInfoPawns[i].Pawn.ShieldStrength <= 0) + { + posY = (kfHUD.PlayerInfoPawns[i].PlayerInfoScreenPosY - YL) - 2.75 * BarHeight - + kfHUD.default.ArmorIconSize * 0.5; + } + else + { + posY = (kfHUD.PlayerInfoPawns[i].PlayerInfoScreenPosY - YL) - 3.8 * BarHeight - + kfHUD.default.ArmorIconSize * 0.5; + } + offset = 0; - if(niceWeap != none && niceWeap.bShowSecondaryCharge && scrnHUDInstance != none){ + if (bIsBleeding(ScrnHumanPawn(C.ViewPort.Actor.Pawn))) + { + C.SetPos(kfHUD.PlayerInfoPawns[i].PlayerInfoScreenPosX - OffsetX - 0.15 * BarLength - + kfHUD.default.ArmorIconSize - 2.0, posY); + C.DrawTileScaled(bleedIcon, 0.1875, 0.1875); + } + if (bIsPoisoned(ScrnHumanPawn(C.ViewPort.Actor.Pawn))) + { + C.SetPos(kfHUD.PlayerInfoPawns[i].PlayerInfoScreenPosX - OffsetX + 0.15 * BarLength - + kfHUD.default.ArmorIconSize - 2.0, posY); + C.DrawTileScaled(poisonIcon, 0.1875, 0.1875); + } + } + } + + if (niceWeap != none && niceWeap.bShowSecondaryCharge && scrnHUDInstance != none) + { C.ColorModulate.X = 1; C.ColorModulate.Y = 1; C.ColorModulate.Z = 1; @@ -104,11 +155,13 @@ function PostRender(Canvas C) scrnHUDInstance.SecondaryClipsDigits.value = niceWeap.secondaryCharge; scrnHUDInstance.DrawNumericWidget(C, scrnHUDInstance.SecondaryClipsDigits, scrnHUDInstance.DigitsSmall); } + niceMutator = class'NicePack'.static.Myself(C.ViewPort.Actor.Pawn.Level); - if(niceMutator == none) + if (niceMutator == none) return; //// Draw counters - if(nicePlayer != none && nicePlayer.bFlagDisplayCounters){ + if(nicePlayer != none && nicePlayer.bFlagDisplayCounters) + { x = C.ClipX * 0.5 - (64 + 2) * niceMutator.GetVisibleCountersAmount(); y = C.ClipY * 0.01; for(i = 0;i < niceMutator.niceCounterSet.Length;i ++) @@ -118,7 +171,8 @@ function PostRender(Canvas C) } } //// Draw weapons progress bars - if(nicePlayer != none && nicePlayer.bFlagDisplayWeaponProgress){ + if(nicePlayer != none && nicePlayer.bFlagDisplayWeaponProgress) + { x = C.ClipX - InventoryBoxWidth * C.ClipX - 5; y = C.ClipY * 0.5 - 0.5 * (InventoryBoxHeight * C.ClipX + 4) * niceMutator.niceWeapProgressSet.Length; for(i = 0;i < niceMutator.niceWeapProgressSet.Length;i ++){ @@ -129,7 +183,8 @@ function PostRender(Canvas C) } //// Draw invincibility bar nicePawn = NiceHumanPawn(nicePlayer.pawn); - if(nicePawn != none && nicePawn.invincibilityTimer != 0.0){ + if(nicePawn != none && nicePawn.invincibilityTimer != 0.0) + { C.SetDrawColor(255, 255, 255); if(nicePawn.invincibilityTimer > 0) barTexture = greenBar; @@ -174,6 +229,7 @@ function PostRender(Canvas C) for(i = 0;i < nicePlayer.abilityManager.currentAbilitiesAmount;i ++) DrawAbilityCooldown(C, i); } + function DrawCounter(Canvas C, NicePack.CounterDisplay counter, int x, int y, TeamInfo team){ local float borderSpace; local Texture textureToDraw;