Skip to content

Commit c8d787f

Browse files
committed
changed applying magazine upgrade to be inline with other inventory functions, no predction, confirmation from server on client
1 parent 7c38fd3 commit c8d787f

2 files changed

Lines changed: 19 additions & 11 deletions

File tree

Source/ActionRPGGame/Public/Weapons/ARWeaponInventoryComponent.cpp

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -648,9 +648,11 @@ void UARWeaponInventoryComponent::AddMagazineMod(int8 WeaponIdx, int8 MagazineMo
648648
if (GetOwnerRole() < ENetRole::ROLE_Authority)
649649
{
650650
ServerAddMagazineMod(WeaponIdx, MagazineModIndex);
651+
return;
651652
}
652-
653-
//Predictively apply mod on client, and show it on UI.
653+
}
654+
void UARWeaponInventoryComponent::ServerAddMagazineMod_Implementation(int8 WeaponIdx, int8 MagazineModIndex)
655+
{
654656
if (AARCharacter* Character = Cast<AARCharacter>(GetOwner()))
655657
{
656658
if (AARPlayerController* PC = Cast<AARPlayerController>(Character->Controller))
@@ -664,16 +666,18 @@ void UARWeaponInventoryComponent::AddMagazineMod(int8 WeaponIdx, int8 MagazineMo
664666
if (Weapon)
665667
{
666668
Weapon->AddMagazineUpgrade(Magazine);
667-
FARWeaponModInfo Info;
668-
Info.Icon = Magazine->Icon->GetPathName();
669-
Info.UpgradeType = EARWeaponUpgradeType::Magazine;
670-
Weapon->ClientOnMagazineAdded(Info);
669+
ClientAddMagazineMod(WeaponIdx, MagazineModIndex);
671670
}
672671
}
673672
}
674673
}
675674
}
676-
void UARWeaponInventoryComponent::ServerAddMagazineMod_Implementation(int8 WeaponIdx, int8 MagazineModIndex)
675+
bool UARWeaponInventoryComponent::ServerAddMagazineMod_Validate(int8 WeaponIdx, int8 MagazineModIndex)
676+
{
677+
return true;
678+
}
679+
680+
void UARWeaponInventoryComponent::ClientAddMagazineMod_Implementation(int8 WeaponIdx, int8 MagazineModIndex)
677681
{
678682
if (AARCharacter* Character = Cast<AARCharacter>(GetOwner()))
679683
{
@@ -688,13 +692,13 @@ void UARWeaponInventoryComponent::ServerAddMagazineMod_Implementation(int8 Weapo
688692
if (Weapon)
689693
{
690694
Weapon->AddMagazineUpgrade(Magazine);
695+
FARWeaponModInfo Info;
696+
Info.Icon = Magazine->Icon->GetPathName();
697+
Info.UpgradeType = EARWeaponUpgradeType::Magazine;
698+
Weapon->ClientOnMagazineAdded(Info);
691699
MainInventory->RemoveItem(MagazineModIndex);
692700
}
693701
}
694702
}
695703
}
696-
}
697-
bool UARWeaponInventoryComponent::ServerAddMagazineMod_Validate(int8 WeaponIdx, int8 MagazineModIndex)
698-
{
699-
return true;
700704
}

Source/ActionRPGGame/Public/Weapons/ARWeaponInventoryComponent.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,4 +184,8 @@ class ACTIONRPGGAME_API UARWeaponInventoryComponent : public UIFEquipmentCompone
184184
void ServerAddMagazineMod_Implementation(int8 WeaponIdx, int8 MagazineModIndex);
185185
bool ServerAddMagazineMod_Validate(int8 WeaponIdx, int8 MagazineModIndex);
186186

187+
UFUNCTION(Client, Reliable)
188+
void ClientAddMagazineMod(int8 WeaponIdx, int8 MagazineModIndex);
189+
void ClientAddMagazineMod_Implementation(int8 WeaponIdx, int8 MagazineModIndex);
190+
187191
};

0 commit comments

Comments
 (0)