94 lines
3.2 KiB
C++
94 lines
3.2 KiB
C++
// DTFluxRemotedLevelController.h
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "GameFramework/Actor.h"
|
|
#include "DTFluxRemoteSubsystem.h"
|
|
#include "DTFluxRemotedLevelController.generated.h"
|
|
|
|
UCLASS(BlueprintType, Blueprintable)
|
|
class DTFLUXREMOTE_API ADTFluxRemotedLevelController : public AActor
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
ADTFluxRemotedLevelController();
|
|
|
|
protected:
|
|
virtual void PostInitializeComponents() override;
|
|
virtual void BeginPlay() override;
|
|
virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
|
|
|
|
// Subsystem et binding
|
|
UPROPERTY(BlueprintReadOnly, Category = "DTFlux")
|
|
UDTFluxRemoteSubsystem* RemoteSubsystem;
|
|
|
|
FDelegateHandle TitleReceivedHandle;
|
|
FDelegateHandle TitleBibReceivedHandle;
|
|
FDelegateHandle CommandReceivedHandle;
|
|
bool bEventsBound;
|
|
|
|
// Fonctions de binding
|
|
void InitializeSubsystemBinding();
|
|
|
|
// ✅ CORRECTION : Callbacks avec UFUNCTION()
|
|
UFUNCTION()
|
|
void OnTitleDataReceived(const FDTFluxRemoteTitleData& TitleData);
|
|
|
|
UFUNCTION()
|
|
void OnTitleBibDataReceived(const FDTFluxRemoteBibData& BibData);
|
|
|
|
UFUNCTION()
|
|
void OnCommandDataReceived(const FDTFluxRemoteCommandData& CommandData);
|
|
|
|
public:
|
|
// Events Blueprint-friendly
|
|
UPROPERTY(BlueprintAssignable, Category = "DTFlux Events")
|
|
FOnTitleReceived OnTitleReceived;
|
|
|
|
UPROPERTY(BlueprintAssignable, Category = "DTFlux Events")
|
|
FOnTitleBibReceived OnTitleBibReceived;
|
|
|
|
UPROPERTY(BlueprintAssignable, Category = "DTFlux Events")
|
|
FOnCommandReceived OnCommandReceived;
|
|
|
|
// Fonctions utilitaires
|
|
UFUNCTION(BlueprintCallable, Category = "DTFlux")
|
|
bool IsSubsystemAvailable() const;
|
|
|
|
UFUNCTION(BlueprintCallable, Category = "DTFlux")
|
|
bool IsHTTPServerRunning() const;
|
|
|
|
UFUNCTION(BlueprintCallable, Category = "DTFlux")
|
|
void StartHTTPServer(int32 Port = 63350);
|
|
|
|
UFUNCTION(BlueprintCallable, Category = "DTFlux")
|
|
void StopHTTPServer();
|
|
|
|
UFUNCTION(BlueprintCallable, Category = "DTFlux")
|
|
void EnsureSubsystemBinding();
|
|
|
|
protected:
|
|
// Events Blueprint implémentables
|
|
UFUNCTION(BlueprintImplementableEvent, Category = "DTFlux Events")
|
|
void BP_OnTitleDataReceived(const FDTFluxRemoteTitleData& TitleData);
|
|
|
|
UFUNCTION(BlueprintImplementableEvent, Category = "DTFlux Events")
|
|
void BP_OnTitleBibDataReceived(const FDTFluxRemoteBibData& BibData);
|
|
|
|
UFUNCTION(BlueprintImplementableEvent, Category = "DTFlux Events")
|
|
void BP_OnCommandDataReceived(const FDTFluxRemoteCommandData& CommandData);
|
|
|
|
// Fonctions virtuelles C++
|
|
UFUNCTION(BlueprintNativeEvent, Category = "DTFlux Events")
|
|
void HandleTitleData(const FDTFluxRemoteTitleData& TitleData);
|
|
virtual void HandleTitleData_Implementation(const FDTFluxRemoteTitleData& TitleData);
|
|
|
|
UFUNCTION(BlueprintNativeEvent, Category = "DTFlux Events")
|
|
void HandleTitleBibData(const FDTFluxRemoteBibData& BibData);
|
|
virtual void HandleTitleBibData_Implementation(const FDTFluxRemoteBibData& BibData);
|
|
|
|
UFUNCTION(BlueprintNativeEvent, Category = "DTFlux Events")
|
|
void HandleCommandData(const FDTFluxRemoteCommandData& CommandData);
|
|
virtual void HandleCommandData_Implementation(const FDTFluxRemoteCommandData& CommandData);
|
|
}; |