Space Plunder
Loading...
Searching...
No Matches
PlayerControllerBase.h
Go to the documentation of this file.
1// Fill out your copyright notice in the Description page of Project Settings.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "GameplayTagContainer.h"
7#include "InputActionValue.h"
10#include "GameFramework/PlayerController.h"
15#include "Interfaces/SaveLoad.h"
16#include "PlayerControllerBase.generated.h"
17
19class IHUDInterface;
20class UInputMappingContext;
21
22DECLARE_LOG_CATEGORY_CLASS(LogBasePlayerController, Display, All);
23
27UCLASS()
28class BASEHELPERS_API APlayerControllerBase : public APlayerController, public IPlayerOptions, public IControllerInterface, public IPlayerControllerInterface, public ISaveLoad//, public IInputKeyInterface
29{
30 GENERATED_BODY()
31
32public:
33
34 virtual void GetAudioListenerPosition(FVector& OutLocation, FVector& OutFrontDir, FVector& OutRightDir) const override;
35
36
37 virtual void BindActions(UInputMappingContext* Context);
38
39 //~ Player Options Interface ~//
43 virtual bool SetPlayerLookInverted(const bool bInvert = true) override
44 {
45 PlayerOptions.bInvertedCamera = bInvert;
46 return PlayerOptions.bInvertedCamera;
47 };
48 virtual bool SetPlayerLookHorizontalInverted(const bool bInvert = true) override
49 {
50 PlayerOptions.bInvertedHorizontalCamera = bInvert;
51 return PlayerOptions.bInvertedHorizontalCamera;
52 };
57 virtual float SetCameraSensitivity(const float NewValue) override
58 {
59 PlayerOptions.CameraSensitivity = NewValue;
60 return PlayerOptions.CameraSensitivity;
61 };
62 virtual float SetCameraHorizontalSensitivity(const float NewValue) override
63 {
64 PlayerOptions.CameraHorizontalSensitivity = NewValue;
65 return PlayerOptions.CameraHorizontalSensitivity;
66 };
67 virtual float SetCameraVerticalSensitivity(const float NewValue) override
68 {
69 PlayerOptions.CameraVerticalSensitivity = NewValue;
70 return PlayerOptions.CameraVerticalSensitivity;
71 };
72 virtual void SetCameraAimedSensitivityMultiplier(const float NewValue) override
73 {
74 PlayerOptions.CameraAimedSensitivityMultiplier = NewValue;
75 };
76
77 virtual void SetCameraUseSeparateAxisSensitivity(const bool bValue) override
78 {
79 PlayerOptions.bUseSeparateCameraAxisSensitivity = bValue;
80 };
81 virtual void SetAimAssistLevel(const int32 Value) override
82 {
83 PlayerOptions.AimAssistLevel = Value;
84 };
85 virtual void SetPlayerUsingController(const bool bValue) override {bIsPlayerController = bValue;};
86 virtual bool GetPlayerUsingController() override {return bUsingController;};
87 virtual bool SaveCurrentPlayerOptions(const FAudioPlayerOptions AudioSettings) override;
88
90 virtual float GetCameraSensitivity() const override
91 {
92 return PlayerOptions.CameraSensitivity;
93 };
94 virtual float GetCameraAimedSensitivityMultiplier() const override
95 {
96 return PlayerOptions.CameraAimedSensitivityMultiplier;
97 };
98 virtual float GetCameraHorizontalSensitivity() const override
99 {
100 return PlayerOptions.CameraHorizontalSensitivity;
101 };
102 virtual float GetCameraVerticalSensitivity() const override
103 {
104 return PlayerOptions.CameraVerticalSensitivity;
105 };
106 virtual bool GetCameraUseSeparateAxisSensitivity() const override
107 {
108 return PlayerOptions.bUseSeparateCameraAxisSensitivity;
109 };
110 virtual bool GetPlayerLookInverted() const override
111 {
112 return PlayerOptions.bInvertedCamera;
113 };
114 virtual bool GetPlayerHorizontalInverted() const override
115 {
116 return PlayerOptions.bInvertedHorizontalCamera;
117 };
118 virtual int32 GetAimAssistLevel() const override
119 {
120 return PlayerOptions.AimAssistLevel;
121 };
122
123 virtual FAudioPlayerOptions GetPlayerAudioSettings() const override {return PlayerAudioSettings;};
124
125 //~ Player Options Interface ~//
126
127
128 //~ Player Controller Interface ~//
129 virtual bool RegisterLayer(const FGameplayTag LayerName, UUserWidget* LayerWidget) override;
130 virtual UUserWidget* PushContentToLayer(const FGameplayTag LayerName, const TSoftClassPtr<UUserWidget> WidgetClass) override;
131 virtual bool PopContentFromLayer(const FGameplayTag LayerName) override;
132 virtual bool ClearLayer(const FGameplayTag LayerName) override;
133 virtual bool ToggleWidget(const FGameplayTag LayerName, UUserWidget* Widget) override;
134 virtual UUserWidget* AddWidgetToLayer(const FGameplayTag LayerName, const TSoftClassPtr<UUserWidget> WidgetClass) override;
135 virtual UUserWidget* GetContentFromLayer(const FGameplayTag LayerName, const TSoftClassPtr<UUserWidget> WidgetClass) override;
136 virtual UUserWidget* AddWidgetToLayerWithSlot(const FGameplayTag LayerName, const FGameplayTag SlotTag, const TSoftClassPtr<UUserWidget> WidgetClass) override;
137
138 virtual void OpenRadialMenu(const FRadialMenuData& Data) override;
139 virtual int32 CloseRadialMenu() override;
140 virtual bool GetIsRadialMenuOpen() const override;
141 virtual void SetCharacterMode(const FGameplayTag& Mode) override;
142 virtual FGameplayTag GetCharacterMode() const override {return CharacterMode;};
143 virtual void ToggleGameLog() override;
144
145 virtual FVector2D GetLookAxis() const override {return FVector2D(LookAxisX, LookAxisY);};
146 virtual FVector2D GetMoveAxis() const override {return FVector2D(MoveAxisX, MoveAxisY);};
147 virtual FVector2D GetScreenCenter() const override;
148 //~ Player Controller Interface ~//
149
150 //~ Controller Interface ~//
151 virtual FVector GetPawnLocation() const override;
152 virtual void GetControllerViewPoint(FVector& out_Location, FRotator& out_Rotation) const override;
153 //~ Controller Interface ~//
154
155
156 //~ ISaveLoad ~//
157 virtual bool SaveGame() override;
158 virtual bool LoadGame() override;
159 //~ ISaveLoad ~//
160
161 UFUNCTION(BlueprintImplementableEvent, Category="Controller")
162 void OnCharacterModeChanged(const FGameplayTag& Mode);
163
164
165protected:
166 virtual void BeginPlay() override;
167
168 virtual void SetupInputs();
169 virtual void SetupComponents();
170
171 virtual bool SavePlayerOptions(const FString& SlotName = "Default");
172 virtual bool LoadPlayerOptions(const FString& SlotName = "Default");
173 virtual void ApplySettings(const class USettingsSaveGame* LoadedPlayerSettings);
174 virtual USettingsSaveGame* ApplySettingsToSaveGame(class USettingsSaveGame* LoadedPlayerSettings);
175
176 virtual void OnPossess(APawn* NewPawn) override;
177 virtual void OnRep_Pawn() override;
178 virtual void SetupInputComponent() override;
179 virtual void OnPawnSpawn();
180 virtual void OnPawnSpawnComplete();
181
182
183 virtual float CalculateCameraSensitivity(const float CameraInput) const;
184
185
186 //~ Actions ~//
187 UFUNCTION()
188 virtual void MenuConfirmAction(const FInputActionValue& Value);
189 UFUNCTION()
190 virtual void MenuBackAction(const FInputActionValue& Value);
191 UFUNCTION()
192 virtual void SelectionUpAction(const FInputActionValue& Value);
193 UFUNCTION()
194 virtual void ForwardMovementAction(const FInputActionValue& Value);
195 UFUNCTION()
196 virtual void RightMovementAction(const FInputActionValue& Value);
197 UFUNCTION()
198 virtual void CameraUpAction(const FInputActionValue& Value);
199 UFUNCTION()
200 virtual void CameraRightAction(const FInputActionValue& Value);
201 UFUNCTION()
202 virtual void CharacterModeAction(const FInputActionValue& Value);
203 //~ Actions ~//
204
205
206 IHUDInterface* GetHUDInterface();
207 ICharacterBaseInterface* GetCharacterInterface();
208
209 void LogDebugError(const FString& Message) const;
210 void LogDebugError(const FString& Message, const int32 Value) const;
211 void LogDebugError(const FString& Message, const float Value) const;
212 void LogDebugWarning(const FString& Message) const;
213 void LogDebugWarning(const FString& Message, const int32 Value) const;
214 void LogDebugWarning(const FString& Message, const float Value) const;
215
216 void LogDebugMessage(const FString& Message, const bool bWarning = false, const bool bError = false) const;
217 void LogDebugMessage(const FString& Message, const int32 Value, const bool bWarning = false, const bool bError = false) const;
218 void LogDebugMessage(const FString& Message, const float Value, const bool bWarning = false, const bool bError = false) const;
219 void LogDebugMessage(const FString& Message, const bool bValue, const bool bWarning, const bool bError) const;
220 void LogOnScreenMessage(const int32 Key, const FString& Message, FColor Color = FColor::Green) const;
221
222 void SetCategoryName(const FLogCategoryBase& Category){CategoryName = Category.GetCategoryName();};
223
224
225
226 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Character")
227 FGameplayTag CharacterMode = FGameplayTag(CharacterModeTags::Default);
228
229 // /** Gets the Player Controllers Input Mapping */
230 // virtual UInputMappingContext* GetInputActions() override;
231 // virtual EGameControllerType GetControllerType() override;
232 // virtual float GetInputAxisAmount(const bool bController, const bool bLeftStick) override;
233 // virtual float GetInputAxisAmount(const TObjectPtr<UInputAction>& AxisAction);
234 // virtual float GetInputAxisAmount(const bool bController, const bool bLeftStick) override;
235 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Multiplayer")
236 int32 MaxPawnSpawnAttempts = 5;
237
238 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Controller|Status")
239 bool bAimed = false;
240
241public:
242 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Input")
243 TObjectPtr<UInputMappingContext> MenuInputMappingContext = nullptr;
244 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Input")
245 TObjectPtr<UInputMappingContext> MainInputMappingContext = nullptr;
246
247 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Controller|Debugging")
248 bool bDebuggingMode = false;
249 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Controller|Debugging")
250 FName AudioSocket = FName("head");
251
252
253
254private:
255
256 virtual bool SaveAudioOptions(const FAudioPlayerOptions AudioSettings);
257 virtual bool LoadAudioOptions();
258
259 IHUDInterface* HUDInterface;
260
261 FLogCategoryName CategoryName = LogBasePlayerController.GetCategoryName();
262
263 ICharacterBaseInterface* CharacterBaseInterface;
264 FRadialMenuData CharacterModesMenuData;
265 //@TODO Change to object?
266 // TWeakObjectPtr<UObject> CharacterBase;
267
268
269 UPROPERTY(VisibleAnywhere, Category="Player Options")
271 UPROPERTY(VisibleAnywhere, Category="Player Options")
272 FAudioPlayerOptions PlayerAudioSettings;
273
274 UPROPERTY(EditAnywhere, Category="Player Options")
275 bool bUsingController = false;
276
277
278 UPROPERTY(VisibleAnywhere, Category="Player Options")
279 FString PlayerOptionsSaveName = "_PlayerSettings";
280
281 UPROPERTY(VisibleAnywhere, Category="Controller|Input")
282 float MoveAxisY = 0.0f;
283 UPROPERTY(VisibleAnywhere, Category="Controller|Input")
284 float MoveAxisX = 0.0f;
285 UPROPERTY(VisibleAnywhere, Category="Controller|Input")
286 float LookAxisY = 0.0f;
287 UPROPERTY(VisibleAnywhere, Category="Controller|Input")
288 float LookAxisX = 0.0f;
289
290 UPROPERTY(EditAnywhere, Category = "Controller|Delay")
291 float MultiplayerStartDelay = 0.5f;
292
293 FTimerHandle SetupCompleteDelayTimerHandle;
294 int32 PawnSpawnAttempts = 0;
295
296};
297
UCLASS(Blueprintable, BlueprintType, ClassGroup=(BucciGames), meta=(BlueprintSpawnableComponent)) class CHATSYSTEM_API UChatSystemComponent
Definition ChatSystemComponent.h:13
DECLARE_LOG_CATEGORY_CLASS(LogBasePlayerController, Display, All)
Definition PlayerControllerBase.h:29
virtual float GetCameraAimedSensitivityMultiplier() const override
Definition PlayerControllerBase.h:94
virtual float GetCameraVerticalSensitivity() const override
Definition PlayerControllerBase.h:102
virtual float SetCameraHorizontalSensitivity(const float NewValue) override
Definition PlayerControllerBase.h:62
virtual void SetPlayerUsingController(const bool bValue) override
Definition PlayerControllerBase.h:85
virtual bool GetPlayerUsingController() override
Definition PlayerControllerBase.h:86
virtual float SetCameraVerticalSensitivity(const float NewValue) override
Definition PlayerControllerBase.h:67
virtual FVector2D GetMoveAxis() const override
Definition PlayerControllerBase.h:146
virtual int32 GetAimAssistLevel() const override
Definition PlayerControllerBase.h:118
virtual void SetCameraUseSeparateAxisSensitivity(const bool bValue) override
Definition PlayerControllerBase.h:77
virtual bool GetPlayerLookInverted() const override
Definition PlayerControllerBase.h:110
virtual FGameplayTag GetCharacterMode() const override
Definition PlayerControllerBase.h:142
virtual void SetCameraAimedSensitivityMultiplier(const float NewValue) override
Definition PlayerControllerBase.h:72
virtual FVector2D GetLookAxis() const override
Definition PlayerControllerBase.h:145
virtual float GetCameraSensitivity() const override
Definition PlayerControllerBase.h:90
virtual void SetAimAssistLevel(const int32 Value) override
Definition PlayerControllerBase.h:81
virtual bool SetPlayerLookHorizontalInverted(const bool bInvert=true) override
Definition PlayerControllerBase.h:48
virtual float GetCameraHorizontalSensitivity() const override
Definition PlayerControllerBase.h:98
virtual bool GetCameraUseSeparateAxisSensitivity() const override
Definition PlayerControllerBase.h:106
virtual float SetCameraSensitivity(const float NewValue) override
Definition PlayerControllerBase.h:57
virtual FAudioPlayerOptions GetPlayerAudioSettings() const override
Definition PlayerControllerBase.h:123
virtual bool GetPlayerHorizontalInverted() const override
Definition PlayerControllerBase.h:114
virtual bool SetPlayerLookInverted(const bool bInvert=true) override
Definition PlayerControllerBase.h:43
Definition CustomCharacter.h:19
Definition ControllerInterface.h:20
Definition HUDInterface.h:23
Definition PlayerControllerInterface.h:21
Definition PlayerOptions.h:23
Definition SaveLoad.h:20
Definition SettingsSaveGame.h:88
Definition BaseGameplayTags.cpp:7
Definition SettingData.h:58
Definition SettingData.h:10
Definition RadialWheelData.h:100