ComboInput/Source/ComboInput/Public/Interfaces/ComboActionGraphManagerInterface.h
2023-09-27 00:21:59 -04:00

234 lines
8.5 KiB
C++

// ©2023 Batty Bovine Productions, LLC. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Data/ComboActionGraphDataTypes.h"
#include "UObject/Interface.h"
#include "ComboActionGraphManagerInterface.generated.h"
// This class does not need to be modified.
UINTERFACE(MinimalAPI, BlueprintType, Blueprintable)
class UComboActionGraphManagerInterface : public UInterface
{
GENERATED_BODY()
};
//DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDialogueInitialized, UMounteaDialogueContext*, Context);
//DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDialogueEvent, UMounteaDialogueContext*, Context);
//
//DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDialogueContextUpdated, UMounteaDialogueContext*, Context);
//DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FDialogueUserInterfaceChanged, TSubclassOf<UUserWidget>, DialogueWidgetClass, UUserWidget*, DialogueWidget);
//
//DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDialogueNodeEvent, UMounteaDialogueContext*, Context);
//DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDialogueRowEvent, UMounteaDialogueContext*, Context);
//
//DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDialogueFailed, const FString&, ErrorMessage);
//
//DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDialogueManagerStateChanged, const EDialogueManagerState&, NewState);
//
//DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDialogueVoiceEvent, class USoundBase*, NewDialogueVoice);
/**
* Mountea Dialogue Manager Interface.
*
* Should attached directly to Player Controller or used for Components that are attached to some Controller.
* Provides options to start and stop dialogue as well as ability to select dialogue options.
*/
class COMBOINPUT_API IComboActionGraphManagerInterface
{
GENERATED_BODY()
public:
/**
* Notifies the Dialogue that a node has been selected.
*
* @param NodeGUID The GUID of the selected node.
*/
//UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category="Combo Input|Action", meta=(Keywords="select, chosen, option"))
// void CallDialogueNodeSelected(const FGuid &NodeGUID);
/**
* Starts the Dialogue if possible.
*/
//virtual void StartDialogue() = 0;
/**
* Closes the Dialogue if is active.
*/
//virtual void CloseDialogue() = 0;
/**
* Tries to Invoke Dialogue UI.
* This function servers a purpose to try showing Dialogue UI to player.
* ❔ If this function fails, Message will be populated with error message explaining what went wrong.
*
* @param Message InMessage to be populated with error message explaining why returns false
* @return true if UI can be added to screen, false if cannot
*/
//virtual bool InvokeDialogueUI(FString& Message) = 0;
/**
* Gets the widget class used to display Dialogue UI.
*
* @return The widget class used to display Dialogue UI.
*/
//virtual TSubclassOf<UUserWidget> GetDialogueWidgetClass() const = 0;
/**
* Sets the widget class for the Dialogue UI.
* ❗ This is a pure virtual function that must be implemented in derived classes.
*
* @param NewWidgetClass The new widget class to set.
*/
//virtual void SetDialogueWidgetClass(TSubclassOf<UUserWidget> NewWidgetClass) = 0;
/**
* Returns Dialogue UI pointer.
*
* ❗ Could be null
* @return UserWidget pointer to created UI
*/
//virtual UUserWidget *GetDialogueUIPtr() const = 0;
/**
* Sets Dialogue UI pointer.
*
* ❔ Using null value resets saved value
* @param DialogueUIPtr UserWidget pointer to be saved as Dialogue UI
*/
//virtual void SetDialogueUIPtr(UUserWidget *DialogueUIPtr) = 0;
/**
* Starts Dialogue Row execution.
* ❔ Dialogue Data contain Dialogue Data Rows, which are individual dialogue lines, which can be skipped.
* ❔ Once all Dialogue Data Rows are finished, Dialogue Data is finished as well.
*/
//virtual void StartExecuteDialogueRow() = 0;
/**
* Function responsible for cleanup once Dialogue Row is finished.
* ❔ Dialogue Data contain Dialogue Data Rows, which are individual dialogue lines, which can be skipped.
* ❔ Once all Dialogue Data Rows are finished, Dialogue Data is finished as well.
*/
//virtual void FinishedExecuteDialogueRow() = 0;
/**
* Retrieves the current dialogue context associated with this dialogue instance.
*
* @return The dialogue context object for this instance.
*/
//UFUNCTION(BlueprintCallable, BlueprintNativeEvent, Category="Combo Input|Action")
//UMounteaDialogueContext* GetDialogueContextEvent() const;
//UMounteaDialogueContext* GetDialogueContextEvent_Implementation() const
//{
// return GetDialogueContext();
//}
/**
* Returns the widget used to display the current dialogue.
*
* @return The widget used to display the current dialogue.
*/
//UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category="Combo Input|Action", meta=(Keywords="UI, Widget"))
//UUserWidget* GetDialogueWidget();
//UUserWidget* GetDialogueWidget_Implementation()
//{
// return GetDialogueWidget();
//};
/**
* Returns the owning actor for this Dialogue Manager Component.
*
* @return The owning actor for this Dialogue Manager Component.
*/
//UFUNCTION(BlueprintCallable, BlueprintNativeEvent, Category="Combo Input|Action")
//AActor* GetOwningActor() const;
//virtual AActor* GetOwningActor_Implementation() const
//{
// return nullptr;
//};
/**
* Prepares the node for execution.
* Asks Active Node to 'PreProcessNode' and then to 'ProcessNode'.
* In this preparation stage, Nodes are asked to process all Decorators.
*/
//UFUNCTION(BlueprintCallable, BlueprintNativeEvent, Category="Combo Input|Action")
//void PrepareNode();
//virtual void PrepareNode_Implementation() {};
/**
* Retrieves current Dialogue Context.
*
* ❗ Could be null
* @return DialogueContext Dialogue Context is transient data holder for current dialogue instance.
*/
//virtual UMounteaDialogueContext* GetDialogueContext() const = 0;
/**
* Sets new Dialogue Context.
*
* ❔ Null value clears saved data
* @param NewContext Dialogue Context to be set as Dialogue Context
*/
//virtual void SetDialogueContext(UMounteaDialogueContext* NewContext) = 0;
/**
* Interface call.
* Retrieves current Dialogue Manager State.
* State defines whether Manager can start/close dialogue or not.
*
* @return ManagerState Manager state value
*/
//UFUNCTION(BlueprintCallable, BlueprintNativeEvent, Category="Combo Input|Action")
//EDialogueManagerState GetState() const;
//EDialogueManagerState GetState_Implementation() const
//{ return GetDialogueManagerState(); };
/**
* Retrieves current Dialogue Manager State.
* State defines whether Manager can start/close dialogue or not.
*
* @return ManagerState Manager state value
*/
//virtual EDialogueManagerState GetDialogueManagerState() const = 0;
/**
* Sets new Dialogue Manager State.
*
* @param NewState Manager State to be set as Manager State
*/
//virtual void SetDialogueManagerState(const EDialogueManagerState NewState) = 0;
/**
* Retrieves current Default Dialogue Manager State.
* Default Dialogue Manager State sets Dialogue Manager state upon BeginPlay and is used as fallback once Dialogue ends.
*
* @return ManagerState Default Manager state value
*/
//virtual EDialogueManagerState GetDefaultDialogueManagerState() const = 0;
/**
* Sets new Default Dialogue Manager State.
*
* @param NewState Manager State to be set as Default Manager State
*/
//virtual void SetDefaultDialogueManagerState(const EDialogueManagerState NewState) = 0;
//
//virtual FDialogueInitialized& GetDialogueInitializedEventHandle() = 0;
//virtual FDialogueEvent& GetDialogueStartedEventHandle() = 0;
//virtual FDialogueEvent& GetDialogueClosedEventHandle() = 0;
//
//virtual FDialogueContextUpdated& GetDialogueContextUpdatedEventHande() = 0;
//virtual FDialogueUserInterfaceChanged& GetDialogueUserInterfaceChangedEventHandle() = 0;
//virtual FDialogueNodeEvent& GetDialogueNodeSelectedEventHandle() = 0;
//virtual FDialogueNodeEvent& GetDialogueNodeStartedEventHandle() = 0;
//virtual FDialogueNodeEvent& GetDialogueNodeFinishedEventHandle() = 0;
//virtual FDialogueRowEvent& GetDialogueRowStartedEventHandle() = 0;
//virtual FDialogueRowEvent& GetDialogueRowFinishedEventHandle() = 0;
//virtual FDialogueFailed& GetDialogueFailedEventHandle() = 0;
//virtual FDialogueManagerStateChanged& GetDialogueManagerStateChangedEventHandle() = 0;
//virtual FDialogueVoiceEvent& GetDialogueVoiceStartRequestEventHandle() = 0;
//virtual FDialogueVoiceEvent& GetDialogueVoiceSkipRequestEventHandle() = 0;
//virtual FTimerHandle& GetDialogueRowTimerHandle() = 0;
};