This commit is contained in:
Shtoyan 2022-07-19 20:02:55 +04:00
parent 605d020251
commit 46216c87f4
2 changed files with 137 additions and 123 deletions

View File

@ -1,8 +1,10 @@
class NiceInteraction extends Interaction class NiceInteraction extends Interaction
dependson(NicePack) dependson(NicePack)
dependson(NiceAbilityManager); dependson(NiceAbilityManager);
#exec OBJ LOAD FILE=KillingFloorHUD.utx #exec OBJ LOAD FILE=KillingFloorHUD.utx
#exec OBJ LOAD FILE=KillingFloor2HUD.utx #exec OBJ LOAD FILE=KillingFloor2HUD.utx
var NicePack NicePackMutator; var NicePack NicePackMutator;
var Material bleedIcon, poisonIcon; var Material bleedIcon, poisonIcon;
var Texture greenBar, redBar; var Texture greenBar, redBar;
@ -33,7 +35,7 @@ function RegisterMutator(NicePack activePack)
NicePackMutator = activePack; NicePackMutator = activePack;
} }
final private function bool bIsPoisoned(ScrnHumanPawn pwn) final private function bool bIsPoisoned(NiceHumanPawn pwn)
{ {
local Inventory I; local Inventory I;
@ -41,14 +43,14 @@ final private function bool bIsPoisoned(ScrnHumanPawn pwn)
{ {
for (I = pwn.Inventory; I != none; I = I.Inventory) for (I = pwn.Inventory; I != none; I = I.Inventory)
{ {
if (MeanPoisonInventory(I) != none) if (I.IsA('MeanPoisonInventory'))
return true; return true;
} }
} }
return false; return false;
} }
final private function bool bIsBleeding(ScrnHumanPawn pwn) final private function bool bIsBleeding(NiceHumanPawn pwn)
{ {
local Inventory I; local Inventory I;
@ -56,7 +58,7 @@ final private function bool bIsBleeding(ScrnHumanPawn pwn)
{ {
for (I = pwn.Inventory; I != none; I = I.Inventory) for (I = pwn.Inventory; I != none; I = I.Inventory)
{ {
if (MeanBleedInventory(I) != none) if (I.IsA('MeanBleedInventory'))
return true; return true;
} }
} }
@ -69,7 +71,10 @@ final private function UpdateNiceWeapProgressSet(NiceHumanPawn pwn)
local NiceWeapon niceWeap; local NiceWeapon niceWeap;
local WeaponProgressDisplay newProgress; local WeaponProgressDisplay newProgress;
if (pwn != none && pwn.Inventory != none) // clean this!
niceWeapProgressSet.Length = 0;
if (pwn.Inventory != none)
{ {
for (I = pwn.Inventory; I != none; I = I.Inventory) for (I = pwn.Inventory; I != none; I = I.Inventory)
{ {
@ -106,20 +111,20 @@ function PostRender(Canvas C)
// local Rotator CamRot; // local Rotator CamRot;
// local float OffsetX, BarLength, BarHeight, XL, YL, posY; // local float OffsetX, BarLength, BarHeight, XL, YL, posY;
if(C == none) return; if (C == none || C.ViewPort == none || C.ViewPort.Actor == none || C.ViewPort.Actor.Pawn == none)
if(C.ViewPort == none) return; return;
if(C.ViewPort.Actor == none) return;
if(C.ViewPort.Actor.Pawn == none) return;
nicePlayer = NicePlayerController(C.ViewPort.Actor.Pawn.Controller); nicePlayer = NicePlayerController(C.ViewPort.Actor.Pawn.Controller);
niceWeap = NiceWeapon(C.ViewPort.Actor.Pawn.Weapon); niceWeap = NiceWeapon(C.ViewPort.Actor.Pawn.Weapon);
if (nicePlayer == none) if (nicePlayer == none)
return; return;
scrnHUDInstance = ScrnHUD(nicePlayer.myHUD);
nicePawn = NiceHumanPawn(nicePlayer.pawn);
//// Draw bleed and poison icons for OWNER //// Draw bleed and poison icons for OWNER
offset = 4; offset = 4;
// BLEED!!! // BLEED!!!
if (bIsBleeding(ScrnHumanPawn(C.ViewPort.Actor.Pawn))) if (bIsBleeding(nicePawn))
{ {
x = C.ClipX * 0.007; x = C.ClipX * 0.007;
y = C.ClipY * 0.93 - size * offset; y = C.ClipY * 0.93 - size * offset;
@ -128,7 +133,7 @@ function PostRender(Canvas C)
} }
offset++; offset++;
// POISON!!! // POISON!!!
if (bIsPoisoned(ScrnHumanPawn(C.ViewPort.Actor.Pawn))) if (bIsPoisoned(nicePawn))
{ {
x = C.ClipX * 0.007; x = C.ClipX * 0.007;
y = C.ClipY * 0.93 - size * offset; y = C.ClipY * 0.93 - size * offset;
@ -136,7 +141,7 @@ function PostRender(Canvas C)
C.DrawTile(poisonIcon, size, size, 0, 0, poisonIcon.MaterialUSize(), poisonIcon.MaterialVSize()); C.DrawTile(poisonIcon, size, size, 0, 0, poisonIcon.MaterialUSize(), poisonIcon.MaterialVSize());
} }
// draw bleed and poison icons for TEAMMATES // TODO draw bleed and poison icons for TEAMMATES
// C.GetCAmeraLocation(CamPos, CamRot); // C.GetCAmeraLocation(CamPos, CamRot);
// ViewDir = vector(CamRot); // ViewDir = vector(CamRot);
// kfHud = HUDKillingFloor(ViewportOwner.Actor.myHUD); // kfHud = HUDKillingFloor(ViewportOwner.Actor.myHUD);
@ -177,39 +182,8 @@ function PostRender(Canvas C)
// } // }
// } // }
if (niceWeap != none && niceWeap.bShowSecondaryCharge && scrnHUDInstance != none)
{
C.ColorModulate.X = 1;
C.ColorModulate.Y = 1;
C.ColorModulate.Z = 1;
C.ColorModulate.W = scrnHUDInstance.HudOpacity / 255;
if(!scrnHUDInstance.bLightHud)
scrnHUDInstance.DrawSpriteWidget(C, scrnHUDInstance.SecondaryClipsBG);
scrnHUDInstance.DrawSpriteWidget(C, scrnHUDInstance.SecondaryClipsIcon);
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)
return;
//// Draw counters
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 ++)
if(niceMutator.niceCounterSet[i].value != 0 || niceMutator.niceCounterSet[i].bShowZeroValue){
DrawCounter(C, niceMutator.niceCounterSet[i], x, y, C.ViewPort.Actor.Pawn.PlayerReplicationInfo.Team);
x += 128 + 4;
}
}
nicePawn = NiceHumanPawn(nicePlayer.pawn);
//// Draw weapons progress bars //// Draw weapons progress bars
// at first update weapon info // at first update weapon info
niceWeapProgressSet.Length = 0;
UpdateNiceWeapProgressSet(nicePawn); UpdateNiceWeapProgressSet(nicePawn);
if (nicePawn != none && class'NiceVeterancyTypes'.static.hasSkill(nicePlayer, class'NiceSkillEnforcerMultitasker') if (nicePawn != none && class'NiceVeterancyTypes'.static.hasSkill(nicePlayer, class'NiceSkillEnforcerMultitasker')
@ -225,6 +199,21 @@ function PostRender(Canvas C)
} }
} }
scrnHUDInstance = ScrnHUD(nicePlayer.myHUD);
if (niceWeap != none && niceWeap.bShowSecondaryCharge && scrnHUDInstance != none)
{
C.ColorModulate.X = 1;
C.ColorModulate.Y = 1;
C.ColorModulate.Z = 1;
C.ColorModulate.W = scrnHUDInstance.HudOpacity / 255;
if (!scrnHUDInstance.bLightHud)
scrnHUDInstance.DrawSpriteWidget(C, scrnHUDInstance.SecondaryClipsBG);
scrnHUDInstance.DrawSpriteWidget(C, scrnHUDInstance.SecondaryClipsIcon);
scrnHUDInstance.SecondaryClipsDigits.value = niceWeap.secondaryCharge;
scrnHUDInstance.DrawNumericWidget(C, scrnHUDInstance.SecondaryClipsDigits, scrnHUDInstance.DigitsSmall);
}
//// Draw invincibility bar //// Draw invincibility bar
if (nicePawn != none && nicePawn.invincibilityTimer != 0.0) if (nicePawn != none && nicePawn.invincibilityTimer != 0.0)
{ {
@ -238,18 +227,16 @@ function PostRender(Canvas C)
barWidth = C.ClipX * 0.2; barWidth = C.ClipX * 0.2;
niceVet = class'NiceVeterancyTypes'.static. niceVet = class'NiceVeterancyTypes'.static.
GetVeterancy(nicePawn.PlayerReplicationInfo); GetVeterancy(nicePawn.PlayerReplicationInfo);
if(niceVet != none){ if (niceVet != none)
if(nicePawn.invincibilityTimer > 0){ {
barWidth *= nicePawn.invincibilityTimer if (nicePawn.invincibilityTimer > 0)
/ niceVet.static.GetInvincibilityDuration(nicePawn.KFPRI); barWidth *= nicePawn.invincibilityTimer / niceVet.static.GetInvincibilityDuration(nicePawn.KFPRI);
} else
else{ barWidth *= nicePawn.invincibilityTimer / class'NiceSkillZerkGunzerker'.default.cooldown;
barWidth *= nicePawn.invincibilityTimer /
class'NiceSkillZerkGunzerker'.default.cooldown;
}
} }
else else
barWidth = 0; barWidth = 0;
x = center - (barWidth / 2); x = center - (barWidth / 2);
C.SetPos(x, y); C.SetPos(x, y);
C.DrawTile(barTexture, barWidth, 32, 0, 0, barTexture.MaterialUSize(), barTexture.MaterialVSize()); C.DrawTile(barTexture, barWidth, 32, 0, 0, barTexture.MaterialUSize(), barTexture.MaterialVSize());
@ -257,20 +244,39 @@ function PostRender(Canvas C)
return; return;
missesSpace = 10; // 64x64 => 16x16 missesSpace = 10; // 64x64 => 16x16
missesHeight = 16; missesHeight = 16;
missesWidth = nicePawn.safeMeleeMisses * 16 missesWidth = nicePawn.safeMeleeMisses * 16 + (nicePawn.safeMeleeMisses - 1) * missesSpace;
+ (nicePawn.safeMeleeMisses - 1) * missesSpace;
missesX = center - (missesWidth / 2); missesX = center - (missesWidth / 2);
missesY = y + (32 - missesHeight) * 0.5; missesY = y + (32 - missesHeight) * 0.5;
for(i = 0;i < nicePawn.safeMeleeMisses;i ++){
for (i = 0; i < nicePawn.safeMeleeMisses; i++)
{
C.SetPos(missesX + i * (16 + missesSpace), missesY); C.SetPos(missesX + i * (16 + missesSpace), missesY);
C.DrawTile(shield, 16, 16, 0, 0, shield.MaterialUSize(), shield.MaterialVSize()); C.DrawTile(shield, 16, 16, 0, 0, shield.MaterialUSize(), shield.MaterialVSize());
} }
} }
// Draw cooldowns
//// Draw cooldowns
if (nicePlayer.abilityManager == none) if (nicePlayer.abilityManager == none)
return; return;
for (i = 0; i < nicePlayer.abilityManager.currentAbilitiesAmount; i++) for (i = 0; i < nicePlayer.abilityManager.currentAbilitiesAmount; i++)
DrawAbilityCooldown(C, i); DrawAbilityCooldown(C, i);
//// Draw counters
niceMutator = class'NicePack'.static.Myself(nicePawn.Level);
if (niceMutator != none && 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++)
{
if (niceMutator.niceCounterSet[i].value != 0 || niceMutator.niceCounterSet[i].bShowZeroValue)
{
DrawCounter(C, niceMutator.niceCounterSet[i], x, y, C.ViewPort.Actor.Pawn.PlayerReplicationInfo.Team);
x += 128 + 4;
}
}
}
} }
function DrawCounter(Canvas C, NicePack.CounterDisplay counter, int x, int y, TeamInfo team){ function DrawCounter(Canvas C, NicePack.CounterDisplay counter, int x, int y, TeamInfo team){
@ -443,11 +449,13 @@ function DrawWeaponProgress(Canvas C, WeaponProgressDisplay weapProgress, int x,
} }
} }
function bool KeyEvent(EInputKey Key, EInputAction Action, float Delta){ function bool KeyEvent(EInputKey Key, EInputAction Action, float Delta)
{
local bool bNeedsReload; local bool bNeedsReload;
local string Alias, LeftPart, RigthPart; local string Alias, LeftPart, RigthPart;
local NiceWeapon niceWeap; local NiceWeapon niceWeap;
local NicePlayerController nicePlayer; local NicePlayerController nicePlayer;
// Find controller and current weapon // Find controller and current weapon
nicePlayer = NicePlayerController(ViewportOwner.Actor); nicePlayer = NicePlayerController(ViewportOwner.Actor);
if (nicePlayer == none) if (nicePlayer == none)
@ -455,27 +463,32 @@ function bool KeyEvent(EInputKey Key, EInputAction Action, float Delta){
if (nicePlayer.Pawn != none) if (nicePlayer.Pawn != none)
niceWeap = NiceWeapon(nicePlayer.Pawn.Weapon); niceWeap = NiceWeapon(nicePlayer.Pawn.Weapon);
// If this is a button press - detect alias // If this is a button press - detect alias
if(Action == IST_Press){ if (Action == IST_Press)
{
// Check for reload command // Check for reload command
Alias = nicePlayer.ConsoleCommand("KEYBINDING" @ nicePlayer.ConsoleCommand("KEYNAME" @ Key)); Alias = nicePlayer.ConsoleCommand("KEYBINDING" @ nicePlayer.ConsoleCommand("KEYNAME" @ Key));
if (nicePlayer.bAdvReloadCheck) if (nicePlayer.bAdvReloadCheck)
bNeedsReload = InStr(Caps(Alias), "RELOADMENOW") > -1 || InStr(Caps(Alias), "RELOADWEAPON") > -1; bNeedsReload = InStr(Caps(Alias), "RELOADMENOW") > -1 || InStr(Caps(Alias), "RELOADWEAPON") > -1;
if (Divide(Alias, " ", LeftPart, RigthPart)) if (Divide(Alias, " ", LeftPart, RigthPart))
Alias = LeftPart; Alias = LeftPart;
if(Key == IK_MouseWheelUp || Key == IK_MouseWheelDown){ if (Key == IK_MouseWheelUp || Key == IK_MouseWheelDown)
{
nicePlayer.UpdateSelectors(); nicePlayer.UpdateSelectors();
if(nicePlayer.hasZeroSelector && nicePlayer.bUsesMouseWheel && nicePlayer.bNiceWeaponManagement){ if (nicePlayer.hasZeroSelector && nicePlayer.bUsesMouseWheel && nicePlayer.bNiceWeaponManagement)
{
nicePlayer.ScrollSelector(0, nicePlayer.bMouseWheelLoops, Key == IK_MouseWheelUp); nicePlayer.ScrollSelector(0, nicePlayer.bMouseWheelLoops, Key == IK_MouseWheelUp);
return true; return true;
} }
} }
} }
// Open trader on movement // Open trader on movement
if (Alias ~= "MoveForward" || Alias ~= "MoveBackward" || Alias ~= "TurnLeft" || Alias ~= "TurnRight" if (Alias ~= "MoveForward" || Alias ~= "MoveBackward" || Alias ~= "TurnLeft" || Alias ~= "TurnRight"
|| Alias ~= "StrafeLeft" || Alias ~= "StrafeRight" || Alias ~= "Axis"){ || Alias ~= "StrafeLeft" || Alias ~= "StrafeRight" || Alias ~= "Axis")
{
// Open trader if it's a pre-game // Open trader if it's a pre-game
if(NicePackMutator.bIsPreGame && NicePackMutator.bInitialTrader && (NicePackMutator.bStillDuringInitTrader || !nicePlayer.bOpenedInitTrader) && nicePlayer.Pawn != none){ if (NicePackMutator.bIsPreGame && NicePackMutator.bInitialTrader && (NicePackMutator.bStillDuringInitTrader || !nicePlayer.bOpenedInitTrader) && nicePlayer.Pawn != none)
{
nicePlayer.ShowBuyMenu("Initial trader", KFHumanPawn(nicePlayer.Pawn).MaxCarryWeight); nicePlayer.ShowBuyMenu("Initial trader", KFHumanPawn(nicePlayer.Pawn).MaxCarryWeight);
nicePlayer.bOpenedInitTrader = true; nicePlayer.bOpenedInitTrader = true;
return true; return true;
@ -488,6 +501,7 @@ function bool KeyEvent(EInputKey Key, EInputAction Action, float Delta){
niceWeap.ClientReloadMeNow(); niceWeap.ClientReloadMeNow();
return false; return false;
} }
defaultproperties defaultproperties
{ {
bleedIcon=Texture'NicePackT.MeanZeds.bleedIcon' bleedIcon=Texture'NicePackT.MeanZeds.bleedIcon'