Files
BusyRabbit/Source/BusyRabbit/Public/Level/Map/GameMapActor.h

80 lines
1.8 KiB
C++

#pragma once
#include "Engine/DataTable.h"
#include "Level/Map/Components/TerrainLayerComponent.h"
#include "Level/Map/Components/StaticResourceLayerComponent.h"
#include "GameMapActor.generated.h"
DECLARE_LOG_CATEGORY_EXTERN(LogMapGenerate, Log, All);
UINTERFACE()
class UGameMapInterface : public UInterface
{
GENERATED_BODY()
};
class IGameMapInterface
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
void GetMapSize(float &OutX, float &OutY);
UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
float GetMapFieldSize();
UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
FGameplayTag GetTerrainAt(const float X, const float Y);
};
UCLASS(Blueprintable, Blueprintable)
class AGameMapActor : public AActor, public IGameMapInterface
{
GENERATED_BODY()
public:
AGameMapActor();
public:
virtual void GetMapSize_Implementation(float& OutWidth, float& OutHeight) override;
virtual FGameplayTag GetTerrainAt_Implementation(const float X, const float Y) override;
virtual float GetMapFieldSize_Implementation() override;
public:
virtual void BeginPlay() override;
virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
public:
UFUNCTION(BlueprintCallable)
const UTerrainLayerComponent* GetTerrainLayer() const
{
return TerrainLayer;
}
protected:
UPROPERTY(EditAnywhere, BlueprintReadOnly)
float MapWidth = 32;
UPROPERTY(EditAnywhere, BlueprintReadOnly)
float MapHeight = 32;
UPROPERTY(EditAnywhere, BlueprintReadOnly)
float MapFieldSize = 128;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
TObjectPtr<UTerrainLayerComponent> TerrainLayer;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
TObjectPtr<class UStaticResourceLayerComponent> ResourceLayer;
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
TObjectPtr<class USceneComponent> SceneComp;
};