#pragma once

#include "CoreMinimal.h"
#include "PortaStructs.h"
#include "PortaAvaInterface.generated.h"

DECLARE_DYNAMIC_DELEGATE(FAvaLoadDelegate);

UINTERFACE()
class UPortaAvaInterface : public UInterface
{
	GENERATED_BODY()
};

class PORTAINTERFACE_API IPortaAvaInterface
{
	GENERATED_BODY()
public:
	virtual void GetAvalancheChannels(TArray<FString>& OutChannels) {}
	virtual FPortaPresetDesc GetAvalanchePreset(const FString& Path) { return FPortaPresetDesc(); }

	virtual void StartAvalanche(const FString& Path, const FString& Channel, const FString& BatchRequest) {}

	virtual void ContinueAvalancheAnim(const FString& Path, const FString& Channel) {}

	virtual void ContinueAllAnims(const FString& Channel) {}

	virtual void ContinueCurrentThenStartNew(const FString& Path, const FString& Channel, const FString& BatchRequest, FAvaLoadDelegate Callback) {}

	virtual void StopAvalanche(const FString& Path, const FString& Channel) {}

	virtual void GetAvalancheProfiles(TArray<FString>& OutProfiles) {}

	virtual void SetAvalancheProfile(const FString& Profile) {}

	virtual void StartAvalancheChannel(const FString& Channel) {}

	virtual void SetPresetProp(const FString& Channel, const FString& Path, const FString& Property, const FString& Value) {}

	virtual void SetTexture(const FString& Path, const FString& Channel, const FString& Property, const FString& TexturePath) {}

	virtual FString GetTransitionLogicLayer(const FString& Path) { return FString(); }

};
