(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
+30 -3
View File
@@ -367,6 +367,8 @@ private:
* foyer. Se base sur le point de vue reel du pawn, donc sur ce qu'il voit a
* l'ecran, et non sur la position de son corps.
*/
virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
int32 ResolveAimedSlot(const AActor* Interactor) const;
/** Decide ce que ferait un appui sur Interagir, sans rien modifier. */
@@ -455,8 +457,17 @@ private:
/** Inventaire du pawn qui interagit, ou nullptr. */
static UInventoryComponent* GetInventoryOf(AActor* Interactor);
/** Etat courant de chaque emplacement de cuisson. Toujours dimensionne a MaxCookingSlots. */
UPROPERTY(Transient)
/**
* Etat courant de chaque emplacement de cuisson. Toujours dimensionne a
* MaxCookingSlots.
*
* Replique : c'est ce qui fait changer le mesh de la nourriture sous les
* yeux de tous. Le FTimerHandle que porte chaque slot n'est pas une
* UPROPERTY et ne part donc pas sur le reseau -- c'est voulu, la cuisson se
* compte uniquement sur le serveur et les clients n'en voient que le
* resultat.
*/
UPROPERTY(Transient, ReplicatedUsing = OnRep_Slots)
TArray<FCookingSlotState> Slots;
/**
@@ -464,7 +475,12 @@ private:
* qui brule ; quand il est consomme, tout le monde avance d'un cran et la
* derniere buche disparait du foyer.
*/
UPROPERTY(Transient)
/**
* Replique : le nombre de buches visibles EST la jauge de carburant, c'est
* la seule facon pour un joueur de savoir combien il reste de feu. Les
* secondes restantes partent avec, mais seul le serveur les decompte.
*/
UPROPERTY(Transient, ReplicatedUsing = OnRep_Fuel)
TArray<FFuelSlotState> Fuel;
FTimerHandle FuelTimer;
@@ -477,5 +493,16 @@ private:
UPROPERTY(Transient)
TArray<TObjectPtr<UStaticMeshComponent>> FuelIndicators;
UPROPERTY(ReplicatedUsing = OnRep_IsLit)
bool bIsLit = false;
/** Le contenu du grill a change cote serveur : on repose tous les meshes. */
UFUNCTION()
void OnRep_Slots();
UFUNCTION()
void OnRep_Fuel();
UFUNCTION()
void OnRep_IsLit();
};