NicePack/sources/Weapons/Playable/SMG/M7A3/NiceM7A3MMedicGun.uc
2022-01-21 14:25:59 +04:00

174 lines
6.1 KiB
Ucode

class NiceM7A3MMedicGun extends NiceMedicGun;
var localized string ReloadMessage;
var localized string EmptyMessage;
var Material ScopeGreen;
var Material ScopeRed;
var ScriptedTexture MyScriptedTexture;
var string MyMessage;
var Font MyFont;
var Font MyFont2;
var Font SmallMyFont;
var color MyFontColor;
var color MyFontColor2;
var int OldValue;
static function PreloadAssets(Inventory Inv, optional bool bSkipRefCount)
{
if(default.ScopeGreen == none)
default.ScopeGreen = Material(DynamicLoadObject("KF_Weapons5_Scopes_Trip_T.M7A3.Scope_Finall", class'Material', true));
if(default.ScopeRed == none)
default.ScopeRed = Material(DynamicLoadObject("KF_Weapons5_Scopes_Trip_T.M7A3.ScopeRed_Shader", class'Material', true));
if(default.MyScriptedTexture == none)
default.MyScriptedTexture = ScriptedTexture(DynamicLoadObject("KF_Weapons5_Scopes_Trip_T.M7A3_Ammo_Script.AmmoNumber", class'ScriptedTexture', true));
if(default.MyFont == none)
default.MyFont = Font(DynamicLoadObject("IJCFonts.DigitalBig", class'Font', true));
if(default.MyFont2 == none)
default.MyFont2 = Font(DynamicLoadObject("IJCFonts.DigitalBig", class'Font', true));
if(default.SmallMyFont == none)
default.SmallMyFont = Font(DynamicLoadObject("IJCFonts.DigitalMed", class'Font', true));
if(M7A3MMedicGun(Inv) != none){
M7A3MMedicGun(Inv).ScopeGreen = default.ScopeGreen;
M7A3MMedicGun(Inv).ScopeRed = default.ScopeRed;
M7A3MMedicGun(Inv).MyScriptedTexture = default.MyScriptedTexture;
M7A3MMedicGun(Inv).MyFont = default.MyFont;
M7A3MMedicGun(Inv).MyFont2 = default.MyFont2;
M7A3MMedicGun(Inv).SmallMyFont = default.SmallMyFont;
}
super.PreloadAssets(Inv, bSkipRefCount);
}
static function bool UnloadAssets(){
if(super.UnloadAssets()){
default.ScopeGreen = none;
default.ScopeRed = none;
default.MyScriptedTexture = none;
default.MyFont = none;
default.MyFont2 = none;
default.SmallMyFont = none;
return true;
}
return false;
}
simulated final function SetTextColor(byte R, byte G, byte B){
MyFontColor.R = R;
MyFontColor.G = G;
MyFontColor.B = B;
MyFontColor.A = 255;
}
simulated final function SetTextColor2(byte R, byte G, byte B){
MyFontColor2.R = R;
MyFontColor2.G = G;
MyFontColor2.B = B;
MyFontColor2.A = 255;
}
simulated function RenderOverlays(Canvas Canvas){
if(medicCharge >= 50){
SetTextColor2(76,148,177);
MyScriptedTexture.Revision ++;
}
else{
SetTextColor2(218,18,18);
MyScriptedTexture.Revision ++;
}
if(AmmoAmount(0) <= 0){
if(OldValue != -5){
OldValue = -5;
Skins[2] = ScopeRed;
MyFont = SmallMyFont;
SetTextColor(218,18,18);
MyMessage = EmptyMessage;
MyScriptedTexture.Revision ++;
}
}
else if(bIsReloading){
if(OldValue != -4){
OldValue = -4;
MyFont = SmallMyFont;
SetTextColor(32,187,112);
MyMessage = ReloadMessage;
++MyScriptedTexture.Revision;
}
}
else if(OldValue != (MagAmmoRemaining + 1)){
OldValue = MagAmmoRemaining+1;
Skins[2] = ScopeGreen;
MyFont = Default.MyFont;
if(MagAmmoRemaining <= (MagCapacity/2))
SetTextColor(32,187,112);
if(MagAmmoRemaining <= (MagCapacity / 3)){
SetTextColor(218,18,18);
Skins[2] = ScopeRed;
}
if(MagAmmoRemaining >= (MagCapacity/2))
SetTextColor(76,148,177);
MyMessage = String(MagAmmoRemaining);
MyScriptedTexture.Revision ++;
}
MyScriptedTexture.Client = Self;
Super.RenderOverlays(Canvas);
MyScriptedTexture.Client = None;
}
simulated function RenderTexture(ScriptedTexture Tex){
local int w, h;
// Ammo
Tex.TextSize( MyMessage, MyFont, w, h );
Tex.DrawText( ( Tex.USize / 2 ) - ( w / 2 ), ( Tex.VSize / 2 ) - ( h / 1.2 ),MyMessage, MyFont, MyFontColor );
// Health
Tex.TextSize( int(medicCharge), MyFont2, w, h );
Tex.DrawText( ( Tex.USize / 2 ) - ( w / 2 ), ( Tex.VSize / 2 ) - 8, int(medicCharge), MyFont2, MyFontColor2 );
}
defaultproperties
{
ReloadMessage="REL"
EmptyMessage="Empty"
MyFontColor=(B=177,G=148,R=76,A=255)
MyFontColor2=(B=177,G=148,R=76,A=255)
reloadPreEndFrame=0.148000
reloadEndFrame=0.519000
reloadChargeEndFrame=0.740000
reloadMagStartFrame=0.222000
reloadChargeStartFrame=0.531000
MagCapacity=30
ReloadRate=3.066000
ReloadAnim="Reload"
ReloadAnimRate=1.000000
WeaponReloadAnim="Reload_M7A3"
Weight=5.000000
bHasAimingMode=True
IdleAimAnim="Idle_Iron"
StandardDisplayFOV=55.000000
SleeveNum=3
TraderInfoTexture=Texture'KillingFloor2HUD.Trader_Weapon_Icons.Trader_M7A3'
bIsTier3Weapon=True
MeshRef="KF_Wep_M7A3.M7A3"
SkinRefs(0)="KF_Weapons5_Trip_T.Weapons.M7A3_cmb"
SkinRefs(1)="KF_Weapons5_Scopes_Trip_T.M7A3_Ammo_Script.AmmoShader"
SkinRefs(2)="KF_Weapons5_Scopes_Trip_T.M7A3.Scope_Finall"
SelectSoundRef="KF_M7A3Snd.M7A3_Select"
HudImageRef="KillingFloor2HUD.WeaponSelect.M7A3_unselected"
SelectedHudImageRef="KillingFloor2HUD.WeaponSelect.M7A3"
PlayerIronSightFOV=65.000000
ZoomedDisplayFOV=45.000000
FireModeClass(0)=class'NiceM7A3MFire'
FireModeClass(1)=class'NiceM7A3MAltFire'
PutDownAnim="PutDown"
SelectForce="SwitchToAssaultRifle"
AIRating=0.550000
CurrentRating=0.550000
bShowChargingBar=True
Description="An advanced Horzine prototype assault rifle. Modified to fire healing darts."
EffectOffset=(X=100.000000,Y=25.000000,Z=-10.000000)
DisplayFOV=55.000000
Priority=100
InventoryGroup=4
GroupOffset=13
PickupClass=class'NiceM7A3MPickup'
PlayerViewOffset=(X=20.000000,Y=15.000000,Z=-5.000000)
BobDamping=6.000000
AttachmentClass=class'NiceM7A3MAttachment'
IconCoords=(X1=245,Y1=39,X2=329,Y2=79)
ItemName="M7A3 Medic Gun"
TransientSoundVolume=1.250000
}