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
dependson(NicePack)
dependson(NiceAbilityManager);
#exec OBJ LOAD FILE=KillingFloorHUD.utx
#exec OBJ LOAD FILE=KillingFloor2HUD.utx
var NicePack NicePackMutator;
var Material bleedIcon, poisonIcon;
var Texture greenBar, redBar;
@ -33,7 +35,7 @@ function RegisterMutator(NicePack activePack)
NicePackMutator = activePack;
}
final private function bool bIsPoisoned(ScrnHumanPawn pwn)
final private function bool bIsPoisoned(NiceHumanPawn pwn)
{
local Inventory I;
@ -41,14 +43,14 @@ final private function bool bIsPoisoned(ScrnHumanPawn pwn)
{
for (I = pwn.Inventory; I != none; I = I.Inventory)
{
if (MeanPoisonInventory(I) != none)
if (I.IsA('MeanPoisonInventory'))
return true;
}
}
return false;
}
final private function bool bIsBleeding(ScrnHumanPawn pwn)
final private function bool bIsBleeding(NiceHumanPawn pwn)
{
local Inventory I;
@ -56,7 +58,7 @@ final private function bool bIsBleeding(ScrnHumanPawn pwn)
{
for (I = pwn.Inventory; I != none; I = I.Inventory)
{
if (MeanBleedInventory(I) != none)
if (I.IsA('MeanBleedInventory'))
return true;
}
}
@ -69,7 +71,10 @@ final private function UpdateNiceWeapProgressSet(NiceHumanPawn pwn)
local NiceWeapon niceWeap;
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)
{
@ -106,20 +111,20 @@ function PostRender(Canvas C)
// 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;
if(C.ViewPort.Actor.Pawn == none) return;
if (C == none || C.ViewPort == none || C.ViewPort.Actor == none || C.ViewPort.Actor.Pawn == none)
return;
nicePlayer = NicePlayerController(C.ViewPort.Actor.Pawn.Controller);
niceWeap = NiceWeapon(C.ViewPort.Actor.Pawn.Weapon);
if(nicePlayer == none)
if (nicePlayer == none)
return;
scrnHUDInstance = ScrnHUD(nicePlayer.myHUD);
nicePawn = NiceHumanPawn(nicePlayer.pawn);
//// Draw bleed and poison icons for OWNER
offset = 4;
// BLEED!!!
if (bIsBleeding(ScrnHumanPawn(C.ViewPort.Actor.Pawn)))
if (bIsBleeding(nicePawn))
{
x = C.ClipX * 0.007;
y = C.ClipY * 0.93 - size * offset;
@ -128,7 +133,7 @@ function PostRender(Canvas C)
}
offset++;
// POISON!!!
if (bIsPoisoned(ScrnHumanPawn(C.ViewPort.Actor.Pawn)))
if (bIsPoisoned(nicePawn))
{
x = C.ClipX * 0.007;
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());
}
// draw bleed and poison icons for TEAMMATES
// TODO draw bleed and poison icons for TEAMMATES
// C.GetCAmeraLocation(CamPos, CamRot);
// ViewDir = vector(CamRot);
// 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
// at first update weapon info
niceWeapProgressSet.Length = 0;
UpdateNiceWeapProgressSet(nicePawn);
if (nicePawn != none && class'NiceVeterancyTypes'.static.hasSkill(nicePlayer, class'NiceSkillEnforcerMultitasker')
@ -225,11 +199,26 @@ 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
if(nicePawn != none && nicePawn.invincibilityTimer != 0.0)
if (nicePawn != none && nicePawn.invincibilityTimer != 0.0)
{
C.SetDrawColor(255, 255, 255);
if(nicePawn.invincibilityTimer > 0)
if (nicePawn.invincibilityTimer > 0)
barTexture = greenBar;
else
barTexture = redBar;
@ -238,39 +227,56 @@ function PostRender(Canvas C)
barWidth = C.ClipX * 0.2;
niceVet = class'NiceVeterancyTypes'.static.
GetVeterancy(nicePawn.PlayerReplicationInfo);
if(niceVet != none){
if(nicePawn.invincibilityTimer > 0){
barWidth *= nicePawn.invincibilityTimer
/ niceVet.static.GetInvincibilityDuration(nicePawn.KFPRI);
}
else{
barWidth *= nicePawn.invincibilityTimer /
class'NiceSkillZerkGunzerker'.default.cooldown;
}
if (niceVet != none)
{
if (nicePawn.invincibilityTimer > 0)
barWidth *= nicePawn.invincibilityTimer / niceVet.static.GetInvincibilityDuration(nicePawn.KFPRI);
else
barWidth *= nicePawn.invincibilityTimer / class'NiceSkillZerkGunzerker'.default.cooldown;
}
else
barWidth = 0;
x = center - (barWidth / 2);
C.SetPos(x, y);
C.DrawTile(barTexture, barWidth, 32, 0, 0, barTexture.MaterialUSize(), barTexture.MaterialVSize());
if(nicePawn.safeMeleeMisses <= 0)
if (nicePawn.safeMeleeMisses <= 0)
return;
missesSpace = 10;//64x64 => 16x16
missesSpace = 10; // 64x64 => 16x16
missesHeight = 16;
missesWidth = nicePawn.safeMeleeMisses * 16
+ (nicePawn.safeMeleeMisses - 1) * missesSpace;
missesWidth = nicePawn.safeMeleeMisses * 16 + (nicePawn.safeMeleeMisses - 1) * missesSpace;
missesX = center - (missesWidth / 2);
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.DrawTile(shield, 16, 16, 0, 0, shield.MaterialUSize(), shield.MaterialVSize());
}
}
// Draw cooldowns
if(nicePlayer.abilityManager == none)
//// Draw cooldowns
if (nicePlayer.abilityManager == none)
return;
for(i = 0;i < nicePlayer.abilityManager.currentAbilitiesAmount;i ++)
for (i = 0; i < nicePlayer.abilityManager.currentAbilitiesAmount; 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){
@ -443,51 +449,59 @@ 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 string Alias, LeftPart, RigthPart;
local NiceWeapon niceWeap;
local NicePlayerController nicePlayer;
// Find controller and current weapon
nicePlayer = NicePlayerController(ViewportOwner.Actor);
if(nicePlayer == none)
if (nicePlayer == none)
return false;
if(nicePlayer.Pawn != none)
if (nicePlayer.Pawn != none)
niceWeap = NiceWeapon(nicePlayer.Pawn.Weapon);
// If this is a button press - detect alias
if(Action == IST_Press){
if (Action == IST_Press)
{
// Check for reload command
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;
if(Divide(Alias, " ", LeftPart, RigthPart))
if (Divide(Alias, " ", LeftPart, RigthPart))
Alias = LeftPart;
if(Key == IK_MouseWheelUp || Key == IK_MouseWheelDown){
if (Key == IK_MouseWheelUp || Key == IK_MouseWheelDown)
{
nicePlayer.UpdateSelectors();
if(nicePlayer.hasZeroSelector && nicePlayer.bUsesMouseWheel && nicePlayer.bNiceWeaponManagement){
if (nicePlayer.hasZeroSelector && nicePlayer.bUsesMouseWheel && nicePlayer.bNiceWeaponManagement)
{
nicePlayer.ScrollSelector(0, nicePlayer.bMouseWheelLoops, Key == IK_MouseWheelUp);
return true;
}
}
}
// Open trader on movement
if(Alias ~= "MoveForward" || Alias ~= "MoveBackward" || Alias ~= "TurnLeft" || Alias ~= "TurnRight"
|| Alias ~= "StrafeLeft" || Alias ~= "StrafeRight" || Alias ~= "Axis"){
// Open trader on movement
if (Alias ~= "MoveForward" || Alias ~= "MoveBackward" || Alias ~= "TurnLeft" || Alias ~= "TurnRight"
|| Alias ~= "StrafeLeft" || Alias ~= "StrafeRight" || Alias ~= "Axis")
{
// 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.bOpenedInitTrader = true;
return true;
}
//nicePlayer.ClientOpenMenu("NicePack.NiceGUIBuyMenu",,"Test stuff",string(15));
// nicePlayer.ClientOpenMenu("NicePack.NiceGUIBuyMenu",,"Test stuff",string(15));
}
// Reload if we've detected a reload alias in this button's command
if(niceWeap != none && !nicePlayer.bUseServerReload &&
if (niceWeap != none && !nicePlayer.bUseServerReload &&
(bNeedsReload || Alias ~= "ReloadMeNow" || Alias ~= "ReloadWeapon"))
niceWeap.ClientReloadMeNow();
return false;
}
defaultproperties
{
bleedIcon=Texture'NicePackT.MeanZeds.bleedIcon'