// Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "GameFramework/Actor.h" #include "HexTile.generated.h" class USceneComponent; class UStaticMeshComponent; class AAdventureMap; class AAdventurePlayerController; UCLASS() class FRAY_API AHexTile : public AActor { GENERATED_BODY() public: // Sets default value for this actor's properties AHexTile(); UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Config") float TileSize; UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Config") USceneComponent* SceneComponent; UPROPERTY(BlueprintReadWrite, Category = "Config") AAdventureMap* MapRef; UFUNCTION(BlueprintCallable, Category = "debug") FVector Corner(int32 i); UFUNCTION() void FillCornersArray(); UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "debug") TArray Corners; UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Coordinates") int32 Q; UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Coordinates") int32 R; UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Coordinates") int32 Index; UFUNCTION(BlueprintCallable, Category = "Coordinates") int32 Distance(AHexTile* ToHex); // Pathfinding UPROPERTY(BlueprintReadWrite, Category = "Movement") int32 MoveCost = 1; UPROPERTY(VisibleInstanceOnly, Category = "Movement") AHexTile* CameFrom; UPROPERTY(VisibleInstanceOnly, Category = "Movement") int32 CostSoFar = 0; FORCEINLINE bool operator == (const AHexTile &Other) { if (this->Q == Other.Q && this->R == Other.R) { return true; } else { return false; } } FORCEINLINE bool operator != (const AHexTile &Other) { if (this->Q == Other.Q && this->R == Other.R) { return false; } else { return true; } } protected: // Called when the game starts or when spawned virtual void BeginPlay() override; };