(Feat) Add mulitplayer

This commit is contained in:
2026-08-03 10:30:47 +02:00
parent 41d6e6a7f3
commit a4cc59a411
41 changed files with 3418 additions and 125 deletions
@@ -64,6 +64,19 @@ public:
virtual void Tick(float DeltaTime) override;
virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
/** Le couvercle vient de changer d'etat cote serveur : on joue l'animation. */
UFUNCTION()
void OnRep_Open();
/**
* Son et relance du tick d'animation. Partage par SetOpen (serveur) et
* OnRep_Open (clients) : deux copies finiraient par diverger, et le
* symptome serait un couvercle muet chez les invites.
*/
void ApplyOpenState();
// --- IInteractable ---
virtual FText GetInteractionPrompt_Implementation(AActor* Interactor) const override;
virtual void Interact_Implementation(AActor* Interactor) override;
@@ -87,6 +100,11 @@ public:
* parce qu'il s'est trop eloigne. Un coffre qui deciderait seul finirait
* ouvert dans la moitie de ces cas.
*/
/**
* Leve ou referme le couvercle. **Serveur uniquement** : le couvercle est
* un etat du MONDE, les quatre joueurs doivent le voir bouger. Un client
* qui l'appellerait verrait son coffre s'ouvrir tout seul chez lui.
*/
UFUNCTION(BlueprintCallable, Category = "Storage")
void SetOpen(bool bInOpen);
@@ -232,6 +250,11 @@ private:
/** Cale la boite sur le volume combine des deux meshes, couvercle ferme. */
void FitInteractionBox();
/**
* Repliqué à tout le monde : voir le couvercle d'un coffre se lever est le
* seul signe qu'un coéquipier est en train de fouiller dedans.
*/
UPROPERTY(ReplicatedUsing = OnRep_Open)
bool bOpen = false;
/** 0 = ferme, 1 = ouvert. Interpole, jamais pose directement. */