113 - Reloading
This commit is contained in:
parent
2d10e1886d
commit
f630c5d6a2
|
@ -79,6 +79,7 @@ DoubleClickTime=0.200000
|
||||||
+ActionMappings=(ActionName="Crouch",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=LeftControl)
|
+ActionMappings=(ActionName="Crouch",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=LeftControl)
|
||||||
+ActionMappings=(ActionName="Aim",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=RightMouseButton)
|
+ActionMappings=(ActionName="Aim",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=RightMouseButton)
|
||||||
+ActionMappings=(ActionName="Fire",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=LeftMouseButton)
|
+ActionMappings=(ActionName="Fire",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=LeftMouseButton)
|
||||||
|
+ActionMappings=(ActionName="Reload",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=R)
|
||||||
+AxisMappings=(AxisName="MoveForward",Scale=1.000000,Key=W)
|
+AxisMappings=(AxisName="MoveForward",Scale=1.000000,Key=W)
|
||||||
+AxisMappings=(AxisName="MoveForward",Scale=-1.000000,Key=S)
|
+AxisMappings=(AxisName="MoveForward",Scale=-1.000000,Key=S)
|
||||||
+AxisMappings=(AxisName="MoveRight",Scale=1.000000,Key=D)
|
+AxisMappings=(AxisName="MoveRight",Scale=1.000000,Key=D)
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -116,6 +116,25 @@ void ABlasterCharacter::PlayFireMontage(bool bAiming)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ABlasterCharacter::PlayReloadMontage()
|
||||||
|
{
|
||||||
|
if (Combat == nullptr || Combat->EquippedWeapon == nullptr) return;
|
||||||
|
|
||||||
|
UAnimInstance* AnimInstance = GetMesh()->GetAnimInstance();
|
||||||
|
if (AnimInstance && ReloadMontage)
|
||||||
|
{
|
||||||
|
AnimInstance->Montage_Play(ReloadMontage);
|
||||||
|
FName SectionName;
|
||||||
|
switch (Combat->EquippedWeapon->GetWeaponType())
|
||||||
|
{
|
||||||
|
case EWeaponType::EWT_AssaultRifle:
|
||||||
|
SectionName = FName("Rifle");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
AnimInstance->Montage_JumpToSection(SectionName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ABlasterCharacter::PlayEliminatedMontage()
|
void ABlasterCharacter::PlayEliminatedMontage()
|
||||||
{
|
{
|
||||||
UAnimInstance* AnimInstance = GetMesh()->GetAnimInstance();
|
UAnimInstance* AnimInstance = GetMesh()->GetAnimInstance();
|
||||||
|
@ -266,6 +285,7 @@ void ABlasterCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputCo
|
||||||
|
|
||||||
PlayerInputComponent->BindAction("Jump", IE_Pressed, this, &ABlasterCharacter::Jump);
|
PlayerInputComponent->BindAction("Jump", IE_Pressed, this, &ABlasterCharacter::Jump);
|
||||||
PlayerInputComponent->BindAction("Equip", IE_Pressed, this, &ABlasterCharacter::EquipButtonPressed);
|
PlayerInputComponent->BindAction("Equip", IE_Pressed, this, &ABlasterCharacter::EquipButtonPressed);
|
||||||
|
PlayerInputComponent->BindAction("Reload", IE_Pressed, this, &ABlasterCharacter::ReloadButtonPressed);
|
||||||
PlayerInputComponent->BindAction("Crouch", IE_Pressed, this, &ABlasterCharacter::CrouchButtonPressed);
|
PlayerInputComponent->BindAction("Crouch", IE_Pressed, this, &ABlasterCharacter::CrouchButtonPressed);
|
||||||
PlayerInputComponent->BindAction("Aim", IE_Pressed, this, &ABlasterCharacter::AimButtonPressed);
|
PlayerInputComponent->BindAction("Aim", IE_Pressed, this, &ABlasterCharacter::AimButtonPressed);
|
||||||
PlayerInputComponent->BindAction("Aim", IE_Released, this, &ABlasterCharacter::AimButtonReleased);
|
PlayerInputComponent->BindAction("Aim", IE_Released, this, &ABlasterCharacter::AimButtonReleased);
|
||||||
|
@ -325,6 +345,14 @@ void ABlasterCharacter::EquipButtonPressed()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ABlasterCharacter::ReloadButtonPressed()
|
||||||
|
{
|
||||||
|
if (Combat)
|
||||||
|
{
|
||||||
|
Combat->Reload();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ABlasterCharacter::CrouchButtonPressed()
|
void ABlasterCharacter::CrouchButtonPressed()
|
||||||
{
|
{
|
||||||
if (bIsCrouched)
|
if (bIsCrouched)
|
||||||
|
|
|
@ -24,6 +24,7 @@ public:
|
||||||
virtual void OnRep_ReplicatedMovement() override;
|
virtual void OnRep_ReplicatedMovement() override;
|
||||||
virtual void Destroyed() override;
|
virtual void Destroyed() override;
|
||||||
void PlayFireMontage(bool bAiming);
|
void PlayFireMontage(bool bAiming);
|
||||||
|
void PlayReloadMontage();
|
||||||
void PlayEliminatedMontage();
|
void PlayEliminatedMontage();
|
||||||
|
|
||||||
void Eliminated();
|
void Eliminated();
|
||||||
|
@ -39,6 +40,7 @@ protected:
|
||||||
void Turn(float Value);
|
void Turn(float Value);
|
||||||
void LookUp(float Value);
|
void LookUp(float Value);
|
||||||
void EquipButtonPressed();
|
void EquipButtonPressed();
|
||||||
|
void ReloadButtonPressed();
|
||||||
void CrouchButtonPressed();
|
void CrouchButtonPressed();
|
||||||
void AimButtonPressed();
|
void AimButtonPressed();
|
||||||
void AimButtonReleased();
|
void AimButtonReleased();
|
||||||
|
@ -90,9 +92,14 @@ private:
|
||||||
ETurningInPlace TurningInPlace;
|
ETurningInPlace TurningInPlace;
|
||||||
void TurnInPlace(float DeltaTime);
|
void TurnInPlace(float DeltaTime);
|
||||||
|
|
||||||
|
// Animation montages
|
||||||
|
|
||||||
UPROPERTY(EditAnywhere, Category = Combat)
|
UPROPERTY(EditAnywhere, Category = Combat)
|
||||||
class UAnimMontage* FireWeaponMontage;
|
class UAnimMontage* FireWeaponMontage;
|
||||||
|
|
||||||
|
UPROPERTY(EditAnywhere, Category = Combat)
|
||||||
|
class UAnimMontage* ReloadMontage;
|
||||||
|
|
||||||
UPROPERTY(EditAnywhere, Category = Combat)
|
UPROPERTY(EditAnywhere, Category = Combat)
|
||||||
class UAnimMontage* HitReactMontage;
|
class UAnimMontage* HitReactMontage;
|
||||||
|
|
||||||
|
|
|
@ -329,6 +329,21 @@ void UCombatComponent::EquipWeapon(AWeapon* WeaponToEquip)
|
||||||
Character->bUseControllerRotationYaw = true;
|
Character->bUseControllerRotationYaw = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UCombatComponent::Reload()
|
||||||
|
{
|
||||||
|
if (CarriedAmmo > 0)
|
||||||
|
{
|
||||||
|
ServerReload();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void UCombatComponent::ServerReload_Implementation()
|
||||||
|
{
|
||||||
|
if (Character == nullptr) return;
|
||||||
|
|
||||||
|
Character->PlayReloadMontage();
|
||||||
|
}
|
||||||
|
|
||||||
void UCombatComponent::OnRep_EquippedWeapon()
|
void UCombatComponent::OnRep_EquippedWeapon()
|
||||||
{
|
{
|
||||||
if (EquippedWeapon && Character)
|
if (EquippedWeapon && Character)
|
||||||
|
|
|
@ -23,6 +23,7 @@ public:
|
||||||
virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
|
virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
|
||||||
|
|
||||||
void EquipWeapon(class AWeapon* WeaponToEquip);
|
void EquipWeapon(class AWeapon* WeaponToEquip);
|
||||||
|
void Reload();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void BeginPlay() override;
|
virtual void BeginPlay() override;
|
||||||
|
@ -47,6 +48,8 @@ protected:
|
||||||
|
|
||||||
void SetHUDCrosshairs(float DeltaTime);
|
void SetHUDCrosshairs(float DeltaTime);
|
||||||
|
|
||||||
|
UFUNCTION(Server, Reliable)
|
||||||
|
void ServerReload();
|
||||||
private:
|
private:
|
||||||
UPROPERTY()
|
UPROPERTY()
|
||||||
class ABlasterCharacter* Character;
|
class ABlasterCharacter* Character;
|
||||||
|
|
Loading…
Reference in New Issue