// Copyright Pacificao. All Rights Reserved.

#pragma once

#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "AgrarianDemoNoticeWidget.generated.h"

UCLASS()
class AGRARIANGAME_API UAgrarianDemoNoticeWidget : public UUserWidget
{
	GENERATED_BODY()

public:
	virtual void NativeConstruct() override;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Demo")
	FText Motto = FText::FromString(TEXT("What survives after you are gone?"));

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Demo")
	FText VersionLabel = FText::FromString(TEXT("Investor Demo v0.1.L - Build 2026.05.18"));

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Demo")
	FText DemoNotice = FText::FromString(TEXT("Beta prototype build - not for public distribution"));

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Demo")
	FText CopyrightNotice = FText::FromString(TEXT("Copyright (c) 2026 Agrarian Studio. All rights reserved."));

protected:
	virtual int32 NativePaint(
		const FPaintArgs& Args,
		const FGeometry& AllottedGeometry,
		const FSlateRect& MyCullingRect,
		FSlateWindowElementList& OutDrawElements,
		int32 LayerId,
		const FWidgetStyle& InWidgetStyle,
		bool bParentEnabled) const override;

private:
	float CreditsStartTimeSeconds = 0.0f;

	void DrawCenteredText(
		FSlateWindowElementList& OutDrawElements,
		int32& LayerId,
		const FGeometry& AllottedGeometry,
		const FText& Text,
		float Y,
		const FSlateFontInfo& Font,
		const FLinearColor& Color) const;

	void DrawTextAt(
		FSlateWindowElementList& OutDrawElements,
		int32& LayerId,
		const FGeometry& AllottedGeometry,
		const FText& Text,
		const FVector2D& Position,
		float Width,
		const FSlateFontInfo& Font,
		const FLinearColor& Color) const;

	void DrawCinematicCredits(
		FSlateWindowElementList& OutDrawElements,
		int32& LayerId,
		const FGeometry& AllottedGeometry) const;

	void DrawCreditIllustration(
		FSlateWindowElementList& OutDrawElements,
		int32& LayerId,
		const FGeometry& AllottedGeometry,
		const FVector2D& Position,
		const FVector2D& Size,
		int32 IllustrationIndex,
		const FLinearColor& AccentColor,
		float Alpha) const;
};
