// Copyright Black Iron Spine 2026 All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "RMCNavigationTypes.h"
#include "MapsBuyerCheckpoint.generated.h"
class URMCNavigationSubsystem;
class APlayerController;
/** Add this source to your game's existing module. No plugin internals are changed. */
UCLASS()
class AMapsBuyerCheckpoint : public AActor
{
    GENERATED_BODY()
public:
    bool Connect(APlayerController* OwningPlayer, FText& Failure);
    bool SetDestination(FVector WorldLocation, const FString& Name, FText& Failure);
    bool RenameDestination(const FString& Name, FText& Failure);
    bool RemoveDestination(FText& Failure);
    bool SaveProgress(FText& Failure);
    bool ReadView(FVector& PlayerLocation, float& PlayerYaw, FVector2D& MapPan, FText& Failure) const;
    bool ReadProgress(int32& ExploredCells, bool& ReadOnly, bool& SavePending, FText& Failure) const;
    bool ReadSettings(FRMCNavigationSettings& Settings, FString& SaveLabel, FText& Failure) const;
    bool ApplySettings(const FRMCNavigationSettings& Settings, FText& Failure);
    bool SetSurfaceState(bool WorldMapOpen, bool CompassVisible, bool ExternalCoordinatorActive, FText& Failure);
    bool Cancel();
    int32 ObservedWaypointCount = 0;
    void Disconnect();
    virtual void EndPlay(const EEndPlayReason::Type Reason) override;
private:
    UFUNCTION() void ObserveWaypoints();
    UPROPERTY(Transient) TObjectPtr<URMCNavigationSubsystem> Navigation;
    FGuid DestinationId;
};
