From 835069d36234f0c18c2aded8f98ca0ca2f55238d Mon Sep 17 00:00:00 2001 From: Kingsmedia Date: Sat, 7 May 2022 13:03:19 +0200 Subject: [PATCH] 97 - Damage --- .../Blueprints/Weapon/BP_AssaultRifle.uasset | Bin 31983 -> 32009 bytes .../Projectiles/BP_ProjectileBullet.uasset | Bin 0 -> 23200 bytes Source/Blaster/Character/BlasterCharacter.cpp | 32 +++++++++++++----- Source/Blaster/Character/BlasterCharacter.h | 7 ++-- Source/Blaster/Weapon/Projectile.cpp | 4 --- Source/Blaster/Weapon/Projectile.h | 3 ++ Source/Blaster/Weapon/ProjectileBullet.cpp | 22 ++++++++++++ Source/Blaster/Weapon/ProjectileBullet.h | 21 ++++++++++++ 8 files changed, 73 insertions(+), 16 deletions(-) create mode 100644 Content/Blueprints/Weapon/Projectiles/BP_ProjectileBullet.uasset create mode 100644 Source/Blaster/Weapon/ProjectileBullet.cpp create mode 100644 Source/Blaster/Weapon/ProjectileBullet.h diff --git a/Content/Blueprints/Weapon/BP_AssaultRifle.uasset b/Content/Blueprints/Weapon/BP_AssaultRifle.uasset index dd3fde496eb7627fe2968fceee0a978efd49e0e1..fad8d436ba9db7aaa057c8846cea13b58591ebea 100644 GIT binary patch delta 5614 zcmcIoe_WDR+dqK6vead?Qv6Y-1}^OvifJlOr3Q)$=xR2XSr)V)f18$pxoVNx6xxi` zm;&k=^|V-8Hs`9Dx@rn$&BW}{wajUcOD{M=VAN2W=l0gaYB)=8sU1MV;dp ztBdJ{d7b9lOKM}JDY!lME7l@pngcUueExtBaqGojaV@iPzS4LrlGI>jH+xc9MwrZHd#jXn5e^)zn**r zy77N@-JMO$@v~!Uwe)WOrkwwyVi(lf# zE(W<|;Th@F@$ET%bgPPwi^Wc5l#Y&p2nAklpmcN&(C4TsipBG@J7nJuMk??Uvch73 z!YAYSgJZk>iVhATPa>N>N2u*eO;@+!q#yY$5RogyZWX8M#@p-0+Xw>%9q_9YTeK+5 z*c^eAOh81(b!Fi}%b7IiSd`;^g(D2q66!U`&5fbWW^1#f2%9v4@({CN_ddGK)H-c= zPW0(uQZQOo{&hw{rA{7UZHfXVJNpJh`sjpoWtC0I4&9KG47ElNMu@rsC^oIW3UhXN zcMcCO-0d+|XoUGvvodXzNgB3Ls0xJ!dlC`%o+^~H+@LV6kdSc&oy8}w=%Vmksm9GC zU18oHOhg4^tX1U?)AVEnGw@7!GfOa3q?*R1&k80+5u_?VIoJzvw?M-{#%X12y2$!H z?RbK*stt$D$dLF*(uv4WA@$!!9N(T!MMA2ODvKhB4K04EfoFS*t2$cl5v^#QM5U7K>*m@y*;EoqC#vR(PQe~ zw?18|Fzx1Ij~p#{#vM=y`rGTG2-V7N zayJ<#<6g4&u}9cW+^^I9_kp!plLI7;$jzU0nRuFoz>1Z86=AQt*m3GlO@&8JMcjFm z%h0wFcvS+bfQq`nq;JBZo{HRBPoIq$jHGdU3*H8QGF!)~0tW&2vM^Y|DP)v-s#e(D z*ptB3Hu#!}T`E2yCWu{CmMn&e?YkQ<+)$MjB7&>@XKC?Lil{iZCCb72w>smwz%V=4 zvirIAZ#IALkVARbk{EOR!zIU(lpi~$#tex22O`wxndykw35{ANN+fEd@aJQ5Rvt74 ziY;MtcG_{aR{um{CJ2-%dgJvq1sz~Zn^>AnY$6dUg##h_0Vd`Gx7E4NjaB+BD&+NO zP!#fLFuX$SUPvpuv>|^u+aq5Zd;a~jv=>)PE;T&}|1hZB!_hfL%6zAMVM0;=wa3Bc zgb@wd*s^PrwE0qPy!rR`V)MXqZOI!04c49B8#}|^r>&%o)V5wt?;qK+dY_X%(sHkH z^H|?+?=A_d`CWWB>p)zN=hrf?{=@>*TQu~$D0%ZH+Pwu1r)+Mm`RRN|dy8!b6w4KRa|&e$nj~?oyN8Z>!rl z_-l-{7nhxIe{8I86?+PIu zuW=aP^>X)?uY~)*eBRP^`N`F{d2==&vfff8U*}mPactF@EzK)DbYw1Z=cew^MV88u zF9NOC4Blqc@@^*h+s6m=FHUXz*<3@LLrTdn%{<%2A8EaC5uaj~^*_}rHa_c^I5pqs zIDngDB}*E-QA&8?;gBdw+8ymstgA^_MdWN;x%lOP!X=neo~^I0C;|MGVOFt>9%L}f zc(_q^Fj|tM53j0S&u+u(IDkqzxaA4ah9RK%O@LuDS}gPJK?dFQokPQ$=icC~uwK!c z9kV-nkUo!k?hll8?Di@N8QtmG=W9HBfx#P@C!z`-3!38%PmjaO%DYWv#}d=Gx7loC zOQj6Dddb^8cLo#Ia(n02%g?(XY>l};?`!8fwZ)6)Ul=@`{|8#ODZnS@4vw&9KG|Yh z?I*V<>K?Rwuk!qcbKQ~tO-*3C*R}d9Mqj(26S3zEtQEErvik4fC<1ikwBgV9ROuIJ zrh?0*LfI8Sh6^V%PG|*0T~ZPmH_8QKz_Msk?N07vl8Q#*E_{P%5>!wIk>4DF)0)tu0>bIijX};6b&?lKuob@ z5kTyp#9)#J2TFvuZq5F!3&jG`EHv;bTQqKncovAruZ{4eLV`jj)Ri@pA>rmpl%b)f zf~MkPv16Ssw_eJsI&V;zO!Gr(Z7!p(&A`{f9GPRcy}-k$Fr6Mtu9dTzN*{`V#(+R3 zdE^0*sh_X-Tt0 z>8~sv@^Bxh109=g1LoeHRuzQ&iM}w?I(jr#Pf?=?L+~*84hltvr7xFVL-v`DrA9m6nEy@kA zS{jRBY-+f1MGF7HVJnak8059rWp|`$Q9a9D&jHocl_R4317VypR)GAcG0!q&SSFy> zzzM)OnZSR12J@f#qZ-mtO=vJ$`%#FgyMACDb_zanR+SF)f(s^J{&ztZ5uxo$`BTh< za%hu?!Va6lR=+85h4VMV96==DBHugdxbbgTJPXV%tLYRwgOI_~4Aj>B0JRDe6-06| zKsLVQ;XXYG;x;_SYnb$yX>5U;2;|Qvn!u8;_@fA$VE{lX3q~}a@=lLwV2Oc+NCl(< zHzMk#rSQ7QAlM*+|3S(kV*YN@&Fcn&G&Rp8{v}A!Z45LdD6UCnb)DLUp$%(#T~MT_ z3%~^81<4A)45kRkW44y9s z%FNI`@l_-EQ`kS-wQcC@>@zHofY@^&0+ zT95Y+yT^x4KHd=PSXSCN_wtI~UH6m6MaCBk*6m2R;gxk~<#?1yG^e;Uw>0k_nAG9# zX;j6>5)?BSS$*$Wv~2QpZ&&FG)MtXxYW}Fo1eX_~rir*<>i}MN0ACh`FRE9OB2^xM zXb|V--*wJ_fmIT8a;{oXRFe^a&zGNC{PD)b=lXum>}umr^0=Vr)8V^#w(ediFu|;E z+XwzL6hUW9`YY(5dH^kgL7&%{+`A9U|aoO?* zM&7LtL}xz`67rwl94EZ<%f5?jc^iGX>Id6+Q`a47-gyDtU-VuqEovD)s20<_y!L1( z(!ypRFG@K_y48)(cd}S`C+DeESX@KHfylKN>z=(O?7J}f`HC!)U*2{rUv|bbY}e)9 zC=-c3lFWBo_E6z%dgqz%kKZ|1N9sf+i5Wrr^3wr*clRvgP&35K_AT`N$!Qe#?hoNv+y03=b0&X+v*DINDRypXHRP=Ro!VK< zh(7C+lG<6(m71SQw>{UKcj&>fg?*|Go1HoY9!bd&1vry4tzuH~nkN+WxT+8hUoG8X zc|vHo>5wO){=5L=q@@?4cJ7uhmVcX49|)?RM9f>Yx0dBH>h|@JOY?RH=eA zPzh)g3t^rZkR3H6EVSs$W!&#G6NSgj|FHyRl#f~@ z+~_~^$w@nErE0Tn-MY)Y#y;t<#_BCKiUbVFe*7=2BWlsvu^OYjv1Tf__5g$zO$s+V zNCiXMS+04xuhReVHU!$JQRwhG$M1Tb;lE1oSIKN6tN^|N=PS{bBfcij`58b767)4C z`ck~>+dEkbLNQ~{UB|!){8k)DiUI>$OO;5qkp7L;HrAlGGbVjD)eFgZ154sRa z8?WFUXaoRkrlgm;(VRtL!EVSO6Jww#gj9v_@#)C-WC*K%V1g~<-;mIgG(MOH%&X61 z0o0-T=`o*Q7B$Ro(i`IP&HW(<`nTn&kZ1pOdf)x$)n zB4~g+BJT`?TA|NkM0D|B&gisw17?rACWR^il5vKxG62LQ%Y3gHu!P7FOfDqu%ESXs z`|~UL3LMzG#H@$q_2?BD5URmtDFq$+r#=wWkZb%kEu1no+*}TMe763{WbMX}8OuZ- z!4qHp7ipV%7?oHWIu06qZi8r``YEQmr-Eq~r1@|aN{|#1(vKL;>W<@MJX}2spgB;2 zcrQY!^@qKoYJ?%q`sPM86ps*$O%2B{TtgkYc4R_*if%KB>%0A8QJh-JuYvRpt0#z8 z@H;SEasIqdku}?XF6iRTjrq#n|*3YCr1@vU# i4o0f6e
    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 BhvfhO diff --git a/Content/Blueprints/Weapon/Projectiles/BP_ProjectileBullet.uasset b/Content/Blueprints/Weapon/Projectiles/BP_ProjectileBullet.uasset new file mode 100644 index 0000000000000000000000000000000000000000..367e585e8aef06e55824a23bf6536cb83f4d43e2 GIT binary patch literal 23200 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 F{ePsBw(Controller); - if (BlasterPlayerController) + UpdateHUDHealth(); + if (HasAuthority()) { - BlasterPlayerController->SetHUDHealth(Health, MaxHealth); + OnTakeAnyDamage.AddDynamic(this, &ABlasterCharacter::ReceiveDamage); } } @@ -112,6 +112,15 @@ void ABlasterCharacter::PlayHitReactMontage() } } +void ABlasterCharacter::ReceiveDamage(AActor* DamagedActor, float Damage, const UDamageType* DamageType, AController* InstigatorController, + AActor* DamageCauser) +{ + Health = FMath::Clamp(Health - Damage, 0.f, MaxHealth); + + UpdateHUDHealth(); + PlayHitReactMontage(); +} + void ABlasterCharacter::Tick(float DeltaTime) { Super::Tick(DeltaTime); @@ -376,11 +385,6 @@ void ABlasterCharacter::TurnInPlace(float DeltaTime) } } -void ABlasterCharacter::MulticastHit_Implementation() -{ - PlayHitReactMontage(); -} - void ABlasterCharacter::HideCameraIfCharacterClose() { if (!IsLocallyControlled()) return; @@ -411,7 +415,17 @@ float ABlasterCharacter::CalculateSpeed() void ABlasterCharacter::OnRep_Health() { - + UpdateHUDHealth(); + PlayHitReactMontage(); +} + +void ABlasterCharacter::UpdateHUDHealth() +{ + BlasterPlayerController = BlasterPlayerController == nullptr ?Cast(Controller) : BlasterPlayerController; + if (BlasterPlayerController) + { + BlasterPlayerController->SetHUDHealth(Health, MaxHealth); + } } void ABlasterCharacter::SetOverlappingWeapon(AWeapon* Weapon) diff --git a/Source/Blaster/Character/BlasterCharacter.h b/Source/Blaster/Character/BlasterCharacter.h index 0e552a8..8230de3 100644 --- a/Source/Blaster/Character/BlasterCharacter.h +++ b/Source/Blaster/Character/BlasterCharacter.h @@ -21,9 +21,6 @@ public: virtual void PostInitializeComponents() override; virtual void OnRep_ReplicatedMovement() override; void PlayFireMontage(bool bAiming); - - UFUNCTION(NetMulticast, Unreliable) - void MulticastHit(); protected: virtual void BeginPlay() override; @@ -44,6 +41,10 @@ protected: void FireButtonReleased(); void PlayHitReactMontage(); + UFUNCTION() + void ReceiveDamage(AActor* DamagedActor, float Damage, const UDamageType* DamageType, class AController* InstigatorController, AActor* DamageCauser); + void UpdateHUDHealth(); + private: UPROPERTY(VisibleAnywhere, Category="Camera") class USpringArmComponent* CameraBoom; diff --git a/Source/Blaster/Weapon/Projectile.cpp b/Source/Blaster/Weapon/Projectile.cpp index 7d2ba97..ed3ecfe 100644 --- a/Source/Blaster/Weapon/Projectile.cpp +++ b/Source/Blaster/Weapon/Projectile.cpp @@ -52,10 +52,6 @@ void AProjectile::BeginPlay() void AProjectile::OnHit(UPrimitiveComponent* HitComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector NormalImpulse, const FHitResult& Hit) { - if (ABlasterCharacter* BlasterCharacter = Cast(OtherActor)) - { - BlasterCharacter->MulticastHit(); - } Destroy(); } diff --git a/Source/Blaster/Weapon/Projectile.h b/Source/Blaster/Weapon/Projectile.h index 53aebe2..4e7c5ed 100644 --- a/Source/Blaster/Weapon/Projectile.h +++ b/Source/Blaster/Weapon/Projectile.h @@ -22,6 +22,9 @@ protected: UFUNCTION() virtual void OnHit(UPrimitiveComponent* HitComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector NormalImpulse, const FHitResult& Hit); virtual void Destroyed() override; + + UPROPERTY(EditAnywhere) + float Damage = 20.f; private: diff --git a/Source/Blaster/Weapon/ProjectileBullet.cpp b/Source/Blaster/Weapon/ProjectileBullet.cpp new file mode 100644 index 0000000..0cb814d --- /dev/null +++ b/Source/Blaster/Weapon/ProjectileBullet.cpp @@ -0,0 +1,22 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "ProjectileBullet.h" + +#include "GameFramework/Character.h" +#include "Kismet/GameplayStatics.h" + +void AProjectileBullet::OnHit(UPrimitiveComponent* HitComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector NormalImpulse, const FHitResult& Hit) +{ + ACharacter* OwnerCharacter = Cast(GetOwner()); + if (OwnerCharacter) + { + AController* OwnerController = OwnerCharacter->Controller; + if (OwnerController) + { + UGameplayStatics::ApplyDamage(OtherActor, Damage, OwnerController, this, UDamageType::StaticClass()); + } + } + + Super::OnHit(HitComp, OtherActor, OtherComp, NormalImpulse, Hit); +} diff --git a/Source/Blaster/Weapon/ProjectileBullet.h b/Source/Blaster/Weapon/ProjectileBullet.h new file mode 100644 index 0000000..8e3e8d7 --- /dev/null +++ b/Source/Blaster/Weapon/ProjectileBullet.h @@ -0,0 +1,21 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Projectile.h" +#include "ProjectileBullet.generated.h" + +/** + * + */ +UCLASS() +class BLASTER_API AProjectileBullet : public AProjectile +{ + GENERATED_BODY() + +protected: + + virtual void OnHit(UPrimitiveComponent* HitComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector NormalImpulse, const FHitResult& Hit) override; + +};