(Feat) Add Harvetable

This commit is contained in:
2026-08-16 19:35:27 +02:00
parent d6f46f32af
commit 2c272c11b9
41 changed files with 1759 additions and 71 deletions
+22 -7
View File
@@ -240,20 +240,35 @@ public:
// ------------------------------------------------------------------
// Outil
//
// Volontairement reduit au TYPE pour l'instant : la puissance de recolte et
// le cout en durabilite d'un coup n'ont pas encore de lecteur, et inventer
// leur forme avant d'ecrire les ressources recoltables serait deviner.
// L'usure passe par MaxUses / RemainingUses, comme une canette : un outil neuf
// part a MaxUses charges, l'inventaire les suit deja au sol comme dans un
// coffre, et WBP_ItemDetails affiche deja la barre correspondante. Un coup qui
// PORTE consomme une charge -- un coup dans le vide ou contre la mauvaise
// matiere n'use rien, voir UHarvestingComponent.
//
// L'usure, elle, est deja tranchee : ce sera MaxUses / RemainingUses, comme
// une canette. Un outil neuf part donc a MaxUses charges, l'inventaire les
// suit deja au sol comme dans un coffre, et WBP_ItemDetails affiche deja la
// barre correspondante -- rien a ajouter le jour venu.
// Corollaire a connaitre : un outil laisse a MaxUses = 1 casserait au premier
// coup. AFpsPlayer::PerformUseItem s'y refuse et le dit dans le log, plutot que
// de faire disparaitre la hache que le joueur vient de fabriquer.
// ------------------------------------------------------------------
/** Ce que cet objet sait recolter. None = ce n'est pas un outil. */
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Item|Tool")
EToolType ToolType = EToolType::None;
/**
* Points retires a une ressource par coup.
*
* A comparer au Health de UHarvestableDataAsset : 25 contre un arbre a 100
* donne quatre coups. C'est ce champ, et lui seul, qui fait la difference entre
* la hache de pierre et celle en fer -- la ressource, elle, ne change pas.
*
* Sans effet sur une ressource que ToolType n'autorise pas : une pioche a 100
* de puissance ne coupe toujours pas un arbre.
*/
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Item|Tool",
meta = (EditCondition = "ToolType != EToolType::None", ClampMin = "0"))
float HarvestPower = 25.f;
UFUNCTION(BlueprintPure, Category = "Item|Tool")
bool IsTool() const { return ToolType != EToolType::None; }