// Copyright Sorcerers Shenanigans Central. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "GameFramework/PlayerController.h" #include "LumiCharacter.h" #include "LumiController.generated.h" class UInputMappingContext; class UInputAction; /** * */ UCLASS() class WIZARDINGCENTRAL_API ALumiController : public APlayerController { GENERATED_BODY() UPROPERTY() UEnhancedInputComponent* EnhancedInputComponent; UPROPERTY() ALumiCharacter* LumiCharacter = nullptr; public: UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "PlayerInput") TObjectPtr InputMappingContext; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "PlayerInput") int32 MappingPriority = 0; /** Grab Input Action */ UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "PlayerInput|Character Movement") TObjectPtr GrabAction = nullptr; /** Jump Input Action */ UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "PlayerInput|Character Movement") TObjectPtr JumpAction = nullptr; /** Move Input Action */ UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "PlayerInput|Character Movement") TObjectPtr MoveAction = nullptr; /** Look Input Action */ UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "PlayerInput|Character Movement") TObjectPtr LookAction = nullptr; /** Spell Input Action */ UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "PlayerInput|Spell System") TObjectPtr SpellAction = nullptr; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "PlayerInput|Spell System") TObjectPtr SpellPositionAction = nullptr; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "PlayerInput|Spell System") TObjectPtr SpellTrainSwitchAction = nullptr; void ShowMouseCursor(); void HideMouseCursor(); void GetLumiCharacter(ALumiCharacter*& OutLumiCharacter) const; UFUNCTION(BlueprintCallable, Category = "LumiController") ALumiCharacter* GetLumiCharacter() const; protected: virtual void OnPossess(APawn* InPawn) override; virtual void OnUnPossess() override; private: void OnSpellActionStarted(); void OnSpellActionCompleted(); };