Import initial du projet Survival (UE 5.8)
Boucle de jeu complète : récolte, inventaire, consommation, stats de survie, mort et respawn. Gameplay en C++, Blueprints réservés au câblage d'assets. Assets binaires (.uasset, .umap, textures, audio) suivis via Git LFS. Binaries/, Intermediate/, Saved/ et DerivedDataCache/ sont ignorés : régénérés au build, ils pèsent 3 Go pour 1,3 Go de contenu utile. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
// Fill out your copyright notice in the Description page of Project Settings.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "UObject/Interface.h"
|
||||
#include "Interactable.generated.h"
|
||||
|
||||
/**
|
||||
* Classe technique requise par Unreal. On ne la manipule jamais directement,
|
||||
* elle sert uniquement au systeme de reflection : c'est elle qu'on passe a
|
||||
* Implements<UInteractable>() et a Execute_XXX().
|
||||
*/
|
||||
UINTERFACE(MinimalAPI, BlueprintType)
|
||||
class UInteractable : public UInterface
|
||||
{
|
||||
GENERATED_BODY()
|
||||
};
|
||||
|
||||
/**
|
||||
* A implementer par tout ce avec quoi le joueur peut interagir : objets a
|
||||
* ramasser, portes, coffres, etablis, plantes a recolter.
|
||||
*
|
||||
* Les fonctions sont des BlueprintNativeEvent : une classe C++ surcharge
|
||||
* XXX_Implementation(), un Blueprint surcharge l'evenement du meme nom.
|
||||
* Les deux fonctionnent, et l'appelant n'a pas a savoir lequel des deux
|
||||
* il a en face -- c'est tout l'interet de passer par une interface.
|
||||
*
|
||||
* IMPORTANT : pour appeler ces fonctions depuis l'exterieur, utilise
|
||||
* IInteractable::Execute_Interact(Actor, Interactor) et jamais
|
||||
* Actor->Interact() directement. Seul le wrapper Execute_ sait router
|
||||
* l'appel vers une implementation Blueprint.
|
||||
*/
|
||||
class SURVIVAL_PROJET_API IInteractable
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
/**
|
||||
* Texte affiche au joueur quand il vise l'objet ("Ramasser", "Ouvrir"...).
|
||||
* Renvoie du FText et non du FString : c'est le type localisable d'Unreal,
|
||||
* indispensable si tu traduis le jeu un jour.
|
||||
*/
|
||||
UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "Interaction")
|
||||
FText GetInteractionPrompt() const;
|
||||
virtual FText GetInteractionPrompt_Implementation() const { return FText::GetEmpty(); }
|
||||
|
||||
/**
|
||||
* Permet de refuser l'interaction selon le contexte : porte verrouillee,
|
||||
* inventaire plein, competence manquante. Renvoyer false empeche l'objet
|
||||
* d'etre meme selectionne par le composant d'interaction.
|
||||
*/
|
||||
UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "Interaction")
|
||||
bool CanInteract(AActor* Interactor) const;
|
||||
virtual bool CanInteract_Implementation(AActor* Interactor) const { return true; }
|
||||
|
||||
/** L'interaction elle-meme. Interactor est le pawn du joueur. */
|
||||
UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "Interaction")
|
||||
void Interact(AActor* Interactor);
|
||||
virtual void Interact_Implementation(AActor* Interactor) {}
|
||||
|
||||
/** Le joueur commence a viser l'objet : surbrillance, son, animation. */
|
||||
UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "Interaction")
|
||||
void OnBeginFocus();
|
||||
virtual void OnBeginFocus_Implementation() {}
|
||||
|
||||
/** Le joueur ne vise plus l'objet. */
|
||||
UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "Interaction")
|
||||
void OnEndFocus();
|
||||
virtual void OnEndFocus_Implementation() {}
|
||||
};
|
||||
Reference in New Issue
Block a user