// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Character.h"
#include "the_twilight_abyss/BaseItems/Items/BaseItem.h"
#include "Camera/CameraComponent.h"
#include "Kismet/KismetMathLibrary.h"
#include "TempCharacter.generated.h"

UCLASS()
class THE_TWILIGHT_ABYSS_API ATempCharacter : public ACharacter
{
	GENERATED_BODY()

public:
	// Sets default values for this character's properties
	ATempCharacter();

protected:
	// Called when the game starts or when spawned
	virtual void BeginPlay() override;

	void ForwardInput(float Axis);
	void RightMoveInput(float Axis);

public:
	// Called every frame
	virtual void Tick(float DeltaTime) override;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Inventory, meta = (AllowPrivateAccess = "true"))
	class UInventoryComponent* Inventory; //Using the InventoryComponent class
	
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Widgets")
	UUserWidget* ItemSelectorWidget;
	
	// Called to bind functionality to input
	virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;
	
	void KeyPressed();
	
	UPROPERTY(EditAnyWhere)
	float TraceDistance = 300;

	void InputDisabler();
	void LineTraceLogic();

	

	UPROPERTY(BlueprintReadWrite, EditAnywhere, Category= "Health")
	float Health;

	UPROPERTY(BlueprintReadWrite, EditAnywhere, Category= "Gold")
	int GoldBalance;

	UPROPERTY(VisibleDefaultsOnly, Category = "LineTrace")
	bool bHit;
	
	//Using the item in the inventory
	UFUNCTION(BlueprintCallable, Category= "Items")
	void UseItem(class UBaseItem* Item); // Overriding the BaseItem Class

	UFUNCTION(BlueprintCallable)
	void InputEnabler();

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Camera")
	UCameraComponent* ThisCamera;

	FVector OriginalCameraLocation;
	
	FRotator OriginalCameraRotation;

	int OriginalCameraFOV;

	UFUNCTION(BlueprintCallable, Category= "Items")
	void BuyItem();
	
};