├── FSD ├── Config │ ├── DefaultEditor.ini │ ├── DefaultGame.ini │ └── DefaultEngine.ini ├── Content │ ├── NewMap.umap │ └── RigHUD │ │ ├── RH_HUD.uasset │ │ ├── RH_Logger.uasset │ │ ├── RH_BeerView.uasset │ │ ├── InitSpacerig.uasset │ │ ├── RH_MissionView.uasset │ │ ├── RH_StatusBar.uasset │ │ ├── RH_BeerView_Compact.uasset │ │ ├── RH_MissionDataCollector.uasset │ │ └── RH_MissionView_Compact.uasset ├── Package │ ├── .gitignore │ ├── build-pak.bat │ ├── Deep Rock Galactic.url │ ├── 1-stage.bat │ ├── 3-install.bat │ ├── unpack.bat │ ├── clean.bat │ └── 2-pack.bat ├── Source │ ├── FSD │ │ ├── FSDHUD.cpp │ │ ├── GameData.cpp │ │ ├── SpaceRigHUD.cpp │ │ ├── CampaignManager.cpp │ │ ├── FSD.h │ │ ├── FSDGameInstance.cpp │ │ ├── GeneratedMission.cpp │ │ ├── MissionTemplate.cpp │ │ ├── FSDPlayerController.cpp │ │ ├── GameFunctionLibrary.cpp │ │ ├── HUDVisibilityGroup.cpp │ │ ├── FSDPlayerControllerBase.cpp │ │ ├── FSD.cpp │ │ ├── MissionGenerationManager.cpp │ │ ├── FSDPlayerController.h │ │ ├── FSDPlayerControllerBase.h │ │ ├── GameFunctionLibrary.h │ │ ├── FSDGameInstance.h │ │ ├── CampaignManager.h │ │ ├── SpaceRigBar.cpp │ │ ├── SpaceRigBar.h │ │ ├── MissionTemplate.h │ │ ├── FSD.Build.cs │ │ ├── MissionGenerationManager.h │ │ ├── SpaceRigHUD.h │ │ ├── FSDHUD.h │ │ ├── GameData.h │ │ ├── HUDVisibilityGroup.h │ │ └── GeneratedMission.h │ ├── FSD.Target.cs │ └── FSDEditor.Target.cs ├── FSD.uproject └── .gitignore ├── .gitignore ├── preview.jpg ├── plan.txt └── README.md /FSD/Config/DefaultEditor.ini: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Custom 2 | _unused/ 3 | notes.txt 4 | -------------------------------------------------------------------------------- /preview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rampant-ai/DRG-Rig-HUD/HEAD/preview.jpg -------------------------------------------------------------------------------- /FSD/Content/NewMap.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rampant-ai/DRG-Rig-HUD/HEAD/FSD/Content/NewMap.umap -------------------------------------------------------------------------------- /FSD/Package/.gitignore: -------------------------------------------------------------------------------- 1 | *.lnk 2 | *.pak 3 | input.txt 4 | input/* 5 | WindowsNoEditor/* 6 | unpacked/ 7 | -------------------------------------------------------------------------------- /FSD/Content/RigHUD/RH_HUD.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rampant-ai/DRG-Rig-HUD/HEAD/FSD/Content/RigHUD/RH_HUD.uasset -------------------------------------------------------------------------------- /FSD/Package/build-pak.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | CALL 1-stage.bat 4 | CALL 2-pack.bat 5 | CALL 3-install.bat 6 | 7 | PAUSE 8 | -------------------------------------------------------------------------------- /FSD/Content/RigHUD/RH_Logger.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rampant-ai/DRG-Rig-HUD/HEAD/FSD/Content/RigHUD/RH_Logger.uasset -------------------------------------------------------------------------------- /FSD/Content/RigHUD/RH_BeerView.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rampant-ai/DRG-Rig-HUD/HEAD/FSD/Content/RigHUD/RH_BeerView.uasset -------------------------------------------------------------------------------- /FSD/Content/RigHUD/InitSpacerig.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rampant-ai/DRG-Rig-HUD/HEAD/FSD/Content/RigHUD/InitSpacerig.uasset -------------------------------------------------------------------------------- /FSD/Content/RigHUD/RH_MissionView.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rampant-ai/DRG-Rig-HUD/HEAD/FSD/Content/RigHUD/RH_MissionView.uasset -------------------------------------------------------------------------------- /FSD/Content/RigHUD/RH_StatusBar.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rampant-ai/DRG-Rig-HUD/HEAD/FSD/Content/RigHUD/RH_StatusBar.uasset -------------------------------------------------------------------------------- /FSD/Content/RigHUD/RH_BeerView_Compact.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rampant-ai/DRG-Rig-HUD/HEAD/FSD/Content/RigHUD/RH_BeerView_Compact.uasset -------------------------------------------------------------------------------- /FSD/Source/FSD/FSDHUD.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | 4 | #include "FSDHUD.h" 5 | 6 | -------------------------------------------------------------------------------- /FSD/Source/FSD/GameData.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | 4 | #include "GameData.h" 5 | 6 | -------------------------------------------------------------------------------- /FSD/Content/RigHUD/RH_MissionDataCollector.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rampant-ai/DRG-Rig-HUD/HEAD/FSD/Content/RigHUD/RH_MissionDataCollector.uasset -------------------------------------------------------------------------------- /FSD/Content/RigHUD/RH_MissionView_Compact.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rampant-ai/DRG-Rig-HUD/HEAD/FSD/Content/RigHUD/RH_MissionView_Compact.uasset -------------------------------------------------------------------------------- /FSD/Source/FSD/SpaceRigHUD.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | 4 | #include "SpaceRigHUD.h" 5 | 6 | -------------------------------------------------------------------------------- /FSD/Source/FSD/CampaignManager.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | 4 | #include "CampaignManager.h" 5 | 6 | -------------------------------------------------------------------------------- /FSD/Source/FSD/FSD.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | 7 | -------------------------------------------------------------------------------- /FSD/Source/FSD/FSDGameInstance.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | 4 | #include "FSDGameInstance.h" 5 | 6 | -------------------------------------------------------------------------------- /FSD/Source/FSD/GeneratedMission.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | 4 | #include "GeneratedMission.h" 5 | 6 | -------------------------------------------------------------------------------- /FSD/Source/FSD/MissionTemplate.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | 4 | #include "MissionTemplate.h" 5 | 6 | -------------------------------------------------------------------------------- /FSD/Source/FSD/FSDPlayerController.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | 4 | #include "FSDPlayerController.h" 5 | 6 | -------------------------------------------------------------------------------- /FSD/Source/FSD/GameFunctionLibrary.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | 4 | #include "GameFunctionLibrary.h" 5 | 6 | -------------------------------------------------------------------------------- /FSD/Source/FSD/HUDVisibilityGroup.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | 4 | #include "HUDVisibilityGroup.h" 5 | 6 | -------------------------------------------------------------------------------- /FSD/Source/FSD/FSDPlayerControllerBase.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | 4 | #include "FSDPlayerControllerBase.h" 5 | 6 | -------------------------------------------------------------------------------- /FSD/Source/FSD/FSD.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #include "FSD.h" 4 | #include "Modules/ModuleManager.h" 5 | 6 | IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, FSD, "FSD" ); 7 | -------------------------------------------------------------------------------- /FSD/Package/Deep Rock Galactic.url: -------------------------------------------------------------------------------- 1 | [{000214A0-0000-0000-C000-000000000046}] 2 | Prop3=19,0 3 | [InternetShortcut] 4 | IDList= 5 | IconIndex=0 6 | URL=steam://rungameid/548430 7 | IconFile=C:\Games\Steam\steam\games\68a027efd8c7a79be74b4efd7b328b7e103e4708.ico 8 | -------------------------------------------------------------------------------- /FSD/Source/FSD/MissionGenerationManager.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | 4 | #include "MissionGenerationManager.h" 5 | 6 | // Add default functionality here for any IMissionGenerationManager functions that are not pure virtual. 7 | -------------------------------------------------------------------------------- /FSD/Package/1-stage.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | REM 4 | REM This script only uses relative paths and does not need customization. 5 | REM 6 | 7 | SET SRCDIR=WindowsNoEditor\FSD 8 | SET PACKDIR=input 9 | 10 | ECHO. 11 | ECHO --- Staging files... 12 | 13 | ECHO. 14 | XCOPY %SRCDIR%\AssetRegistry.bin %PACKDIR%\ 15 | XCOPY /S %SRCDIR%\Content\RigHUD\* %PACKDIR%\Content\RigHUD\* 16 | 17 | ECHO. 18 | -------------------------------------------------------------------------------- /FSD/FSD.uproject: -------------------------------------------------------------------------------- 1 | { 2 | "FileVersion": 3, 3 | "EngineAssociation": "4.27", 4 | "Category": "", 5 | "Description": "", 6 | "Modules": [ 7 | { 8 | "Name": "FSD", 9 | "Type": "Runtime", 10 | "LoadingPhase": "Default", 11 | "AdditionalDependencies": [ 12 | "Engine", 13 | "CoreUObject" 14 | ] 15 | } 16 | ], 17 | "TargetPlatforms": [ 18 | "WindowsNoEditor" 19 | ] 20 | } -------------------------------------------------------------------------------- /FSD/Package/3-install.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | REM 4 | REM This script uses the full path to your DRG Mods directory. 5 | REM You can customize this using the env var "DRG_MODS". 6 | REM 7 | 8 | IF "%DRG_MODS%" == "" ( 9 | SET "DRG_MODS=C:\Games\Steam\steamapps\common\Deep Rock Galactic\FSD\Mods" 10 | ) 11 | 12 | ECHO. 13 | ECHO --- Installing Mod... 14 | 15 | XCOPY /S RigHUD\ "%DRG_MODS%\RigHUD\" 16 | 17 | ECHO. 18 | -------------------------------------------------------------------------------- /FSD/Package/unpack.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | REM 4 | REM This script invokes Unreal Editor utilities. They must be in your "PATH" var already, or match the path appended here. 5 | REM 6 | REM This script must be executed from the same directory it exists in, due to use of the "CD" var. 7 | REM 8 | 9 | SET PATH=%PATH%;C:\Games\UE_4.27\Engine\Binaries\Win64\ 10 | 11 | UnrealPak.exe %1 -extract "%CD%\unpacked" 12 | 13 | PAUSE 14 | -------------------------------------------------------------------------------- /FSD/Source/FSD.Target.cs: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | using UnrealBuildTool; 4 | using System.Collections.Generic; 5 | 6 | public class FSDTarget : TargetRules 7 | { 8 | public FSDTarget(TargetInfo Target) : base(Target) 9 | { 10 | Type = TargetType.Game; 11 | DefaultBuildSettings = BuildSettingsVersion.V2; 12 | 13 | ExtraModuleNames.AddRange( new string[] { "FSD" } ); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /FSD/Source/FSD/FSDPlayerController.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "FSDPlayerControllerBase.h" 7 | #include "FSDPlayerController.generated.h" 8 | 9 | UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 10 | class FSD_API AFSDPlayerController : public AFSDPlayerControllerBase 11 | { 12 | GENERATED_BODY() 13 | 14 | }; 15 | -------------------------------------------------------------------------------- /FSD/Source/FSD/FSDPlayerControllerBase.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/PlayerController.h" 7 | #include "FSDPlayerControllerBase.generated.h" 8 | 9 | UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 10 | class FSD_API AFSDPlayerControllerBase : public APlayerController 11 | { 12 | GENERATED_BODY() 13 | 14 | }; 15 | -------------------------------------------------------------------------------- /FSD/Config/DefaultGame.ini: -------------------------------------------------------------------------------- 1 | 2 | 3 | [/Script/EngineSettings.GeneralProjectSettings] 4 | ProjectID=CFF765B549DADA43789756A295E29816 5 | bUseBorderlessWindow=False 6 | ProjectVersion=1.0.0 7 | ProjectName=DRGRigHUD 8 | Description=Rig HUD DRG Mod 9 | 10 | [/Script/UnrealEd.ProjectPackagingSettings] 11 | UsePakFile=False 12 | BuildConfiguration=PPBC_Shipping 13 | IncludePrerequisites=False 14 | bShareMaterialShaderCode=False 15 | bSharedMaterialNativeLibraries=False 16 | 17 | -------------------------------------------------------------------------------- /FSD/Source/FSDEditor.Target.cs: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | using UnrealBuildTool; 4 | using System.Collections.Generic; 5 | 6 | public class FSDEditorTarget : TargetRules 7 | { 8 | public FSDEditorTarget(TargetInfo Target) : base(Target) 9 | { 10 | Type = TargetType.Editor; 11 | DefaultBuildSettings = BuildSettingsVersion.V2; 12 | 13 | ExtraModuleNames.AddRange( new string[] { "FSD" } ); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /plan.txt: -------------------------------------------------------------------------------- 1 | TODO LIST: 2 | 3 | -------- 4 | MISSIONS 5 | -------- 6 | 7 | highlight if/when one of the displayed missions is selected by the host 8 | 9 | show "assignment mission" icon on missions for any connected client 10 | 11 | ---------- 12 | DAILY DEAL 13 | ---------- 14 | 15 | show current "daily deal" for resources 16 | 17 | hide if already purchased 18 | 19 | include countdown timer (midnight UTC) 20 | 21 | ----------------- 22 | DEEP DIVE SUMMARY 23 | ----------------- 24 | 25 | mission sequence preview for both deep dives 26 | -------------------------------------------------------------------------------- /FSD/Source/FSD/GameFunctionLibrary.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Kismet/BlueprintFunctionLibrary.h" 7 | #include "GameData.h" 8 | #include "GameFunctionLibrary.generated.h" 9 | 10 | UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 11 | class FSD_API UGameFunctionLibrary : public UBlueprintFunctionLibrary 12 | { 13 | GENERATED_BODY() 14 | 15 | UFUNCTION(BlueprintCallable) static UGameData* GetFSDGameData() { return NULL; }; 16 | }; 17 | -------------------------------------------------------------------------------- /FSD/Source/FSD/FSDGameInstance.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Engine/GameInstance.h" 7 | #include "CampaignManager.h" 8 | #include "FSDGameInstance.generated.h" 9 | 10 | UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 11 | class UFSDGameInstance : public UGameInstance 12 | { 13 | GENERATED_BODY() 14 | public: 15 | 16 | UPROPERTY(BlueprintReadOnly) UCampaignManager* CampaignManager; 17 | 18 | UFUNCTION(BlueprintCallable) AFSDPlayerController* GetLocalFSDPlayerController() { return NULL; }; 19 | }; 20 | -------------------------------------------------------------------------------- /FSD/Source/FSD/CampaignManager.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "UObject/NoExportTypes.h" 7 | #include "GeneratedMission.h" 8 | #include "CampaignManager.generated.h" 9 | 10 | UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 11 | class FSD_API UCampaignManager : public UObject 12 | { 13 | GENERATED_BODY() 14 | 15 | public: 16 | //FMulticastInlineDelegate OnCampaignChanged; 17 | 18 | UFUNCTION(BlueprintCallable) bool IsCampaignMission(UObject* WorldContextObject, UGeneratedMission* mission) { return true; }; 19 | }; 20 | -------------------------------------------------------------------------------- /FSD/Source/FSD/SpaceRigBar.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | 4 | #include "SpaceRigBar.h" 5 | 6 | // Sets default values 7 | ASpaceRigBar::ASpaceRigBar() 8 | { 9 | // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it. 10 | PrimaryActorTick.bCanEverTick = true; 11 | 12 | } 13 | 14 | // Called when the game starts or when spawned 15 | void ASpaceRigBar::BeginPlay() 16 | { 17 | Super::BeginPlay(); 18 | 19 | } 20 | 21 | // Called every frame 22 | void ASpaceRigBar::Tick(float DeltaTime) 23 | { 24 | Super::Tick(DeltaTime); 25 | 26 | } 27 | 28 | -------------------------------------------------------------------------------- /FSD/Config/DefaultEngine.ini: -------------------------------------------------------------------------------- 1 | 2 | 3 | [/Script/HardwareTargeting.HardwareTargetingSettings] 4 | TargetedHardwareClass=Desktop 5 | AppliedTargetedHardwareClass=Desktop 6 | DefaultGraphicsPerformance=Maximum 7 | AppliedDefaultGraphicsPerformance=Maximum 8 | 9 | [/Script/Engine.Engine] 10 | +ActiveGameNameRedirects=(OldGameName="TP_BlankBP",NewGameName="/Script/FSD") 11 | +ActiveGameNameRedirects=(OldGameName="/Script/TP_BlankBP",NewGameName="/Script/FSD") 12 | 13 | [/Script/EngineSettings.GameMapsSettings] 14 | EditorStartupMap=/Game/NewMap.NewMap 15 | GameDefaultMap=/Game/NewMap.NewMap 16 | 17 | [/Script/LuminRuntimeSettings.LuminRuntimeSettings] 18 | IconModelPath=(Path="") 19 | IconPortalPath=(Path="") 20 | 21 | -------------------------------------------------------------------------------- /FSD/Source/FSD/SpaceRigBar.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/Actor.h" 7 | #include "GameData.h" 8 | #include "SpaceRigBar.generated.h" 9 | 10 | UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 11 | class FSD_API ASpaceRigBar : public AActor 12 | { 13 | GENERATED_BODY() 14 | 15 | public: 16 | // Sets default values for this actor's properties 17 | ASpaceRigBar(); 18 | 19 | protected: 20 | // Called when the game starts or when spawned 21 | virtual void BeginPlay() override; 22 | 23 | public: 24 | 25 | UPROPERTY(BlueprintReadOnly) UDrinkableDataAsset* DrinkableSpecial; 26 | 27 | // Called every frame 28 | virtual void Tick(float DeltaTime) override; 29 | 30 | }; 31 | -------------------------------------------------------------------------------- /FSD/Source/FSD/MissionTemplate.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Engine/DataAsset.h" 7 | #include "MissionTemplate.generated.h" 8 | 9 | UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 10 | class FSD_API UMissionTemplate : public UDataAsset 11 | { 12 | GENERATED_BODY() 13 | 14 | public: 15 | 16 | UPROPERTY(BlueprintReadOnly) TSoftObjectPtr MissionImageLarge; 17 | UPROPERTY(BlueprintReadOnly) TSoftObjectPtr MissionButtonImage; 18 | UPROPERTY(BlueprintReadOnly) UTexture2D* MissionIcon; 19 | UPROPERTY(BlueprintReadOnly) UTexture2D* MissionIconSmall; 20 | UPROPERTY(BlueprintReadOnly) FLinearColor MissionColor; 21 | UPROPERTY(BlueprintReadOnly) int32 MissionTypeIndex; 22 | }; 23 | -------------------------------------------------------------------------------- /FSD/Source/FSD/FSD.Build.cs: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | using UnrealBuildTool; 4 | 5 | public class FSD : ModuleRules 6 | { 7 | public FSD(ReadOnlyTargetRules Target) : base(Target) 8 | { 9 | PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; 10 | 11 | PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" }); 12 | 13 | PrivateDependencyModuleNames.AddRange(new string[] { }); 14 | 15 | // Uncomment if you are using Slate UI 16 | // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" }); 17 | 18 | // Uncomment if you are using online features 19 | // PrivateDependencyModuleNames.Add("OnlineSubsystem"); 20 | 21 | // To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /FSD/Package/clean.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | REM 4 | REM This script uses the full path to your DRG Mods directory. 5 | REM You can customize this using the env var "DRG_MODS". 6 | REM 7 | 8 | IF "%DRG_MODS%" == "" ( 9 | SET "DRG_MODS=C:\Games\Steam\steamapps\common\Deep Rock Galactic\FSD\Mods" 10 | ) 11 | 12 | REM Generated by UE's "Package Product" operation 13 | ECHO. 14 | ECHO --- Cleaning "WindowsNoEditor" package directory... 15 | RMDIR /S /Q WindowsNoEditor 16 | 17 | REM Generated by our "stage" script 18 | ECHO. 19 | ECHO --- Cleaning "input" directory... 20 | RMDIR /S /Q input 21 | 22 | REM Generated by our "pack" script running UnrealPak 23 | ECHO. 24 | ECHO --- Cleaning "pak" directory... 25 | RMDIR /S /Q RigHUD 26 | 27 | REM Generated by our "install" script 28 | ECHO. 29 | ECHO --- Cleaning "Mods" directory (removes all manually installed mods)... 30 | RMDIR /S /Q "%DRG_MODS%\RigHUD" 31 | 32 | ECHO. 33 | PAUSE 34 | -------------------------------------------------------------------------------- /FSD/Source/FSD/MissionGenerationManager.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GeneratedMission.h" 7 | #include "MissionGenerationManager.generated.h" 8 | 9 | UCLASS() 10 | class UMissionGenerationManager : public UGameInstanceSubsystem 11 | { 12 | GENERATED_BODY() 13 | 14 | public: 15 | //UPROPERTY(BlueprintReadOnly) TMap AllMissionGroups; 16 | //UPROPERTY(BlueprintReadOnly) bool ResetSelectedMission; 17 | 18 | UFUNCTION(BlueprintCallable) TArray GetMissions(int32 Seed) { return TArray(); }; 19 | UFUNCTION(BlueprintCallable) UGeneratedMission* GetMissionFromSeeds(int32 GlobalSeed, int32 MissionSeed) { return NULL; }; 20 | UFUNCTION(BlueprintCallable) TArray GetAvailableMissions() { return TArray(); }; 21 | }; 22 | -------------------------------------------------------------------------------- /FSD/Package/2-pack.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | REM 4 | REM This script invokes Unreal Editor utilities. They must be in your "PATH" var already, or match the path appended here. 5 | REM 6 | REM This script must be executed from the same directory it exists in, due to use of the "CD" var. 7 | REM 8 | 9 | SET PATH=%PATH%;C:\Games\UE_4.27\Engine\Binaries\Win64\ 10 | SET RESPONSEFILE=input.txt 11 | 12 | ECHO. 13 | ECHO --- Generating ResponseFile... 14 | 15 | REM 16 | REM The ResponseFile is generated in the "current directory". 17 | REM The ResponseFile must contain: 18 | REM Full path to the "input" directory, containing your assets to be packed. 19 | REM A fixed relative path to be interpreted at runtime. This appears to be a relative path from "Paks" to the "FSD" directory. 20 | REM Full disclosure: I'm assuming this based on the file set up by someone else, but it seems to work. 21 | REM 22 | 23 | ECHO. 24 | ECHO "%CD%\input\" "../../../FSD/" > %RESPONSEFILE% 25 | 26 | 27 | ECHO. 28 | ECHO --- Packing... 29 | 30 | ECHO. 31 | MKDIR RigHUD 32 | UnrealPak.exe "%CD%\RigHUD\RigHUD.pak" -Create="%CD%\%RESPONSEFILE%" -compress 33 | 34 | 35 | ECHO. 36 | ECHO --- Cleaning up ResponseFile... 37 | DEL %RESPONSEFILE% 38 | 39 | 40 | ECHO. 41 | -------------------------------------------------------------------------------- /FSD/.gitignore: -------------------------------------------------------------------------------- 1 | # Visual Studio 2015 user specific files 2 | .vs/ 3 | 4 | # Compiled Object files 5 | *.slo 6 | *.lo 7 | *.o 8 | *.obj 9 | 10 | # Precompiled Headers 11 | *.gch 12 | *.pch 13 | 14 | # Compiled Dynamic libraries 15 | *.so 16 | *.dylib 17 | *.dll 18 | 19 | # Fortran module files 20 | *.mod 21 | 22 | # Compiled Static libraries 23 | *.lai 24 | *.la 25 | *.a 26 | *.lib 27 | 28 | # Executables 29 | *.exe 30 | *.out 31 | *.app 32 | *.ipa 33 | 34 | # These project files can be generated by the engine 35 | *.xcodeproj 36 | *.xcworkspace 37 | *.sln 38 | *.suo 39 | *.opensdf 40 | *.sdf 41 | *.VC.db 42 | *.VC.opendb 43 | 44 | # Precompiled Assets 45 | SourceArt/**/*.png 46 | SourceArt/**/*.tga 47 | 48 | # Binary Files 49 | Binaries/* 50 | Plugins/*/Binaries/* 51 | 52 | # Builds 53 | Build/* 54 | 55 | # Whitelist PakBlacklist-.txt files 56 | !Build/*/ 57 | Build/*/** 58 | !Build/*/PakBlacklist*.txt 59 | 60 | # Don't ignore icon files in Build 61 | !Build/**/*.ico 62 | 63 | # Built data for maps 64 | *_BuiltData.uasset 65 | 66 | # Configuration files generated by the Editor 67 | Saved/* 68 | 69 | # Compiled source files for the engine to use 70 | Intermediate/* 71 | Plugins/*/Intermediate/* 72 | 73 | # Cache files for the editor to use 74 | DerivedDataCache/* 75 | -------------------------------------------------------------------------------- /FSD/Source/FSD/SpaceRigHUD.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "FSDHUD.h" 7 | #include "SpaceRigHUD.generated.h" 8 | 9 | UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 10 | class FSD_API ASpaceRigHUD : public AFSDHUD 11 | { 12 | GENERATED_BODY() 13 | 14 | public: 15 | UPROPERTY(BlueprintReadOnly) TArray NotificationQueue; 16 | UPROPERTY(BlueprintReadOnly) bool bNotificationQueueActive; 17 | 18 | UFUNCTION(BlueprintCallable) void SetNotificationQueueActive(bool Inactive) {}; 19 | UFUNCTION(BlueprintCallable) void ReceiveNotificationQueueActivated() {}; 20 | UFUNCTION(BlueprintCallable) void ReceiveNotificationAdded(UObject* InNotification) {}; 21 | //UFUNCTION(BlueprintCallable) UWindowWidget* QueueWindowClass(TSoftClassPtr InWindowType) { return NULL; }; 22 | //UFUNCTION(BlueprintCallable) void QueueWindow(UWindowWidget* InWindow) {}; 23 | UFUNCTION(BlueprintCallable) void QueueNotificationObject(UObject* InObject) {}; 24 | //UFUNCTION(BlueprintCallable) void QueueMissionShout(TSoftObjectPtr InShout) {}; 25 | UFUNCTION(BlueprintCallable) bool IsNotificationQueueEmpty() { return false; }; 26 | UFUNCTION(BlueprintCallable) UObject* DequeueNotificationObject() { return NULL; }; 27 | }; 28 | -------------------------------------------------------------------------------- /FSD/Source/FSD/FSDHUD.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/HUD.h" 7 | #include "FSDHUD.generated.h" 8 | 9 | 10 | UENUM() 11 | enum class EHUDVisibilityReason : uint8 12 | { 13 | Invalid = 0, 14 | UserChoice = 1, 15 | StandDown = 2, 16 | MenuActive = 4, 17 | Photography = 8, 18 | EHUDVisibilityReason_MAX = 9 19 | }; 20 | 21 | 22 | UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 23 | class FSD_API AFSDHUD : public AHUD 24 | { 25 | GENERATED_BODY() 26 | 27 | public: 28 | //UPROPERTY(BlueprintReadOnly) FMulticastInlineDelegate SetObjectivesVisible; 29 | //UPROPERTY(BlueprintReadOnly) FMulticastInlineDelegate OnHUDVisibilityChanged; 30 | //UPROPERTY(BlueprintReadOnly) char IsVisibleFlags; 31 | 32 | UFUNCTION(BlueprintCallable) bool ToggleHUDVisibility(EHUDVisibilityReason reason) { return false; }; 33 | UFUNCTION(BlueprintCallable) void ShowObjectives(bool InVisibility) {}; 34 | UFUNCTION(BlueprintCallable) void SetObjectivesVisible__DelegateSignature(bool InVisible, bool animate) {}; 35 | UFUNCTION(BlueprintCallable) void SetHUDVisible(bool IsVisible, EHUDVisibilityReason reason) {}; 36 | //UFUNCTION(BlueprintCallable) void PlayerSpawned(APlayerCharacter* Player) {}; 37 | UFUNCTION(BlueprintCallable) void OnVisibilityChanged() {}; 38 | UFUNCTION(BlueprintCallable) bool IsHUDVisibleFlagSet(EHUDVisibilityReason reason) { return false; }; 39 | UFUNCTION(BlueprintCallable) void HudVisibilityChanged__DelegateSignature(bool InHudVisible) {}; 40 | UFUNCTION(BlueprintCallable) bool GetHUDVisible() { return false; }; 41 | UFUNCTION(BlueprintCallable) AFSDHUD* GetFSDHUD(APlayerController* InPlayerController) { return NULL; }; 42 | //UFUNCTION(BlueprintCallable) void CameraDroneSpawned(APlayerCameraDrone* Drone) {}; 43 | }; 44 | -------------------------------------------------------------------------------- /FSD/Source/FSD/GameData.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "UObject/NoExportTypes.h" 7 | #include "GeneratedMission.h" 8 | #include "HUDVisibilityGroup.h" 9 | #include "GameData.generated.h" 10 | 11 | // ------------------------------------------------------------------------------------------------ 12 | 13 | UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 14 | class UTemporaryBuff : public UDataAsset 15 | { 16 | GENERATED_BODY() 17 | public: 18 | UPROPERTY(BlueprintReadOnly) FText Description; 19 | UPROPERTY(BlueprintReadOnly) TSoftObjectPtr Icon; 20 | }; 21 | 22 | UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 23 | class UDrinkableDataAsset : public UObject //: public USavableDataAsset 24 | { 25 | GENERATED_BODY() 26 | public: 27 | UPROPERTY(BlueprintReadOnly) FText DrinkableName; 28 | UPROPERTY(BlueprintReadOnly) FText DrinkableDescription; 29 | UPROPERTY(BlueprintReadOnly) int32 DrinkablePrice; 30 | UPROPERTY(BlueprintReadOnly) TSoftObjectPtr DrinkableIcon; 31 | UPROPERTY(BlueprintReadOnly) UTemporaryBuff* buff; 32 | 33 | UFUNCTION(BlueprintCallable) UTexture2D* GetDrinkableIcon() { return NULL; }; 34 | }; 35 | 36 | 37 | UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 38 | class UDrinkSettings : public UDataAsset 39 | { 40 | GENERATED_BODY() 41 | public: 42 | UPROPERTY(BlueprintReadOnly) TArray Drinkables; 43 | 44 | UFUNCTION(BlueprintCallable) UDrinkableDataAsset* GetBarDailySpecial(UObject* WorldContext) { return NULL; }; 45 | }; 46 | 47 | // ------------------------------------------------------------------------------------------------ 48 | 49 | UENUM() 50 | enum class EDealType : uint8 51 | { 52 | Buy = 0, 53 | Sell = 1, 54 | }; 55 | 56 | USTRUCT(BlueprintType) 57 | struct FDailyDeal 58 | { 59 | GENERATED_USTRUCT_BODY() 60 | public: 61 | UPROPERTY(BlueprintReadOnly) UResourceData* Resource; 62 | UPROPERTY(BlueprintReadOnly) EDealType DealType; 63 | }; 64 | 65 | 66 | USTRUCT(BlueprintType) 67 | struct FDailyDealSetup 68 | { 69 | GENERATED_USTRUCT_BODY() 70 | public: 71 | UPROPERTY(BlueprintReadOnly) UResourceData* Resource; 72 | UPROPERTY(BlueprintReadOnly) EDealType DealType; 73 | }; 74 | 75 | 76 | UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 77 | class UDailyDealSettings : public UDataAsset 78 | { 79 | GENERATED_BODY() 80 | public: 81 | UPROPERTY(BlueprintReadOnly) TArray DailyDeals; 82 | 83 | UFUNCTION(BlueprintCallable) bool IsDailyDealBought(UObject* WorldContextObject) { return true; }; 84 | UFUNCTION(BlueprintCallable) void GetDailyDeal(FDailyDeal outDeal) {}; 85 | }; 86 | 87 | // ------------------------------------------------------------------------------------------------ 88 | 89 | UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 90 | class FSD_API UGameData : public UObject 91 | { 92 | GENERATED_BODY() 93 | public: 94 | // Abyss Bar Settings - Beer List 95 | UPROPERTY(BlueprintReadOnly) UDrinkSettings* DrinkSettings; 96 | 97 | // Mineral Trade Terminal's "Daily Deal" 98 | UPROPERTY(BlueprintReadOnly) UDailyDealSettings* DailyDealSettings; 99 | 100 | // Visibility groups are groups of widgets for display in the HUD 101 | UFUNCTION(BlueprintCallable) TArray GetAllVisibilityGroups() { return TArray(); }; 102 | }; 103 | -------------------------------------------------------------------------------- /FSD/Source/FSD/HUDVisibilityGroup.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Engine/DataAsset.h" 7 | //#include "Components/SlateWrapperTypes.h" 8 | #include "HUDVisibilityGroup.generated.h" 9 | 10 | class UWidget; 11 | //enum ESlateVisibility; 12 | 13 | UENUM(BlueprintType) 14 | enum class EHUDVisibilityMode : uint8 15 | { 16 | Visible = 0, 17 | Dynamic = 1, 18 | Hidden = 2, 19 | EHUDVisibilityMode_MAX = 3 20 | }; 21 | 22 | UENUM(BlueprintType) 23 | enum class EHUDVisibilityPresets : uint8 24 | { 25 | AllVisible = 0, 26 | Recommended = 1, 27 | Minimal = 2, 28 | AllHidden = 3, 29 | EHUDVisibilityPresets_MAX = 4 30 | }; 31 | 32 | UENUM(BlueprintType) 33 | enum class EHUDVisibilityGroups : uint8 34 | { 35 | OnScreenHelp = 0, 36 | EnemyHealth = 1, 37 | RadarAndDepth = 2, 38 | PlayerHealthShield = 3, 39 | PlayerNameClassIcon = 4, 40 | PlayerItems = 5, 41 | PlayerResources = 6, 42 | WeaponInfo = 7, 43 | Grenades = 8, 44 | FlashLight = 9, 45 | Flares = 10, 46 | Crosshair = 11, 47 | Objectives = 12, 48 | TeamDisplay = 13, 49 | SentryGunDisplay = 14, 50 | EHUDVisibilityGroups_MAX = 15 51 | }; 52 | 53 | USTRUCT(BlueprintType) 54 | struct FHUDVisibilityRegisteredWidget 55 | { 56 | GENERATED_BODY() 57 | public: 58 | //UPROPERTY(BlueprintReadOnly) TWeakObjectPtr Widget; 59 | }; 60 | 61 | 62 | UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 63 | class FSD_API UHUDVisibilityGroup : public UDataAsset 64 | { 65 | GENERATED_BODY() 66 | 67 | public: 68 | //UPROPERTY(BlueprintReadOnly) FMulticastInlineDelegate OnModeChanged; 69 | //UPROPERTY(BlueprintReadOnly) FMulticastInlineDelegate OnVisibilityChanged; 70 | UPROPERTY(BlueprintReadOnly) EHUDVisibilityGroups GroupID; 71 | UPROPERTY(BlueprintReadOnly) FText Title; 72 | UPROPERTY(BlueprintReadOnly) bool AllowDynamicMode; 73 | UPROPERTY(BlueprintReadOnly) bool AllowHiddenMode; 74 | UPROPERTY(BlueprintReadOnly) bool bDynamicallyVisible; 75 | UPROPERTY(BlueprintReadOnly) TArray RegisteredWidgets; 76 | UPROPERTY(BlueprintReadOnly) EHUDVisibilityMode RecommendedMode; 77 | UPROPERTY(BlueprintReadOnly) EHUDVisibilityMode MinimalMode; 78 | 79 | UFUNCTION(BlueprintCallable) void VisibilityDelegate__DelegateSignature(UHUDVisibilityGroup* Group, bool IsVisible) {}; 80 | UFUNCTION(BlueprintCallable) void SetModeFromPreset(EHUDVisibilityPresets Preset) {}; 81 | UFUNCTION(BlueprintCallable) void SetMode(EHUDVisibilityMode InMode) {}; 82 | UFUNCTION(BlueprintCallable) void SetHudGroupDynamicallyVisible(UHUDVisibilityGroup* Group, bool IsVisible) {}; 83 | UFUNCTION(BlueprintCallable) void SetGroupDynamicallyVisible(bool IsVisible) {}; 84 | 85 | // These yield "unresolved external symbol" errors when tagged with UFUNCTION, due to "UWidget" and "ESlateVisibility". 86 | //UFUNCTION(BlueprintCallable) static void RegisterWidgetWithVisibilityGroup(UWidget* Widget, UHUDVisibilityGroup* Group, ESlateVisibility VisibleMode, ESlateVisibility HiddenMode) {}; 87 | //UFUNCTION(BlueprintCallable) static void RegisterMultipleWidgetsWithVisibilityGroup(TArray Widgets, UHUDVisibilityGroup* Group, ESlateVisibility VisibleMode, ESlateVisibility HiddenMode) {}; 88 | 89 | UFUNCTION(BlueprintCallable) void ModeDelegate__DelegateSignature(UHUDVisibilityGroup* Group, EHUDVisibilityMode Mode) {}; 90 | UFUNCTION(BlueprintCallable) bool IsModeAllowed(EHUDVisibilityMode InMode) { return false; }; 91 | UFUNCTION(BlueprintCallable) bool IsInDynamicMode() { return false; }; 92 | UFUNCTION(BlueprintCallable) bool IsHudGroupVisible(UHUDVisibilityGroup* Group) { return false; }; 93 | UFUNCTION(BlueprintCallable) bool IsGroupVisible() { return false; }; 94 | UFUNCTION(BlueprintCallable) EHUDVisibilityMode GetMode() { return EHUDVisibilityMode::Visible; }; 95 | UFUNCTION(BlueprintCallable) TArray GetAllowedModes() { return TArray(); }; 96 | }; 97 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DRG Rig HUD 2 | 3 | This mod adds a HUD to the space rig to show more information at a glance. 4 | 5 | It is released as [rancor's Rig HUD](https://drg.mod.io/rancors-rig-hud/) on [mod.io](https://mod.io/). 6 | 7 | ![Preview](preview.jpg) 8 | 9 | ## Technical Overview 10 | 11 | This section describes the components of this mod and how they fit together. The prefix "RH_" is short for "RigHUD" to clarify which blueprints are specifically for this mod. 12 | 13 | * `InitSpacerig` - The mod's native entrypoint. Start here to see where we branch out to other blueprints. 14 | * `RH_MissionDataCollector` - Collects mission data via other blueprints and creates, configures, and displays UI widgets. 15 | * `RH_HUD` - The main widget for laying out the HUD additions. Additional widgets are created and added dynamically. 16 | * `RH_StatusBar` - Widget row for displaying the status bar at the top, including the rotation countdown timer. 17 | * `RH_BeerView` - Widget row for displaying the current beer special. 18 | * `RH_MissionView` - Widget row for displaying mission information. 19 | * `RH_Logger` - Widget for displaying debugging information. Unhooked for official builds. 20 | * All other blueprints and C++ code are dummies for existing DRG assets and DRG code. They exist solely for mod assets to refer to at the build/compile/package phase, but are replaced by the actual assets/code at runtime. Refer to the guides below for more details. 21 | 22 | ## Build Instructions 23 | 24 | 1. Install `Unreal Engine 4.25.4` 25 | 1. Open `FSD.uproject` 26 | 1. Go to `File` --> `Generate Visual Studio Project` 27 | * Open the solution and build it. 28 | 1. Go to `File` --> `Package Project` --> `Windows (64-bit)` --> Target directory: `DRG-Rig-HUD\FSD\Package\` 29 | * The output should create `DRG-Rig-HUD\FSD\Package\WindowsNoEditor\` 30 | * The packing scripts assume this location in the steps below, so confirm that the directories were created as intended. 31 | * This path is saved in `FSD\Saved\Config\Windows\Game.ini`, but since it can only be a full path we cannot add it to source control. 32 | 1. Review this repo's build scripts that live in the [`Package`](https://github.com/Rampant-ai/DRG-Rig-HUD/tree/main/FSD/Package) directory. 33 | * Some "full paths" are unavoidable and may need to be customized for your file system. As you can see in the scripts, defaults are provided if you choose not to define your own environment variables. However, these defaults are _my_ install paths which are not typical. You can customize the scripts directly if you prefer, but those changes will show up in `git status` which can be irritating. 34 | * Add the Unreal Editor tools to your `%PATH%`: `C:\\UE_4.25\Engine\Binaries\Win64\`. This allows you to run `UnrealPak.exe` from any script or shell without the full path. 35 | * Define `%DRG_MODS%` to point to your DRG Mods directory: `C:\\Steam\steamapps\common\Deep Rock Galactic\FSD\Mods` 36 | 1. Run [`Package\build-pak.bat`](https://github.com/Rampant-ai/DRG-Rig-HUD/blob/main/FSD/Package/build-pak.bat) to build and install the pak for testing. 37 | * Some of these scripts are sensitive to the "current directory" so I *DO NOT* recommend making shortcuts to them! Just double-click to run. 38 | * The staging script [`Package\1-stage.bat`](https://github.com/Rampant-ai/DRG-Rig-HUD/blob/main/FSD/Package/1-stage.bat) may need to be updated if you add new blueprint directories! 39 | * Your pak should end up here: `%DRG_MODS%\RigHUD\RigHUD.pak` 40 | 1. Launch DRG and enable the mod in your Mods menu. 41 | 1. _(Optional)_ Run [`Package\clean.bat`](https://github.com/Rampant-ai/DRG-Rig-HUD/blob/main/FSD/Package/clean.bat) to remove all files generated from the above steps. This runs much faster than using the mouse, and can save lots of disk space. 42 | 1. _(Optional)_ Copy DRG's main pak file from `Steam\steamapps\common\Deep Rock Galactic\FSD\Content\Paks\FSD-WindowsNoEditor.pak` into the `Package\` directory, then drag the newly copied file onto [`unpack.bat`](https://github.com/Rampant-ai/DRG-Rig-HUD/blob/main/FSD/Package/unpack.bat) to unpack all of its assets. This can help verify how assets are organized if you need to override or dummy them for your mod. 43 | 44 | ## Learning Recommendations 45 | 46 | * Advanced modding involves "dummying" the game's own C++ functions so that you can call them from your own blueprints. This guide contains some references to that to help you get started: https://github.com/DRG-Modding/Guides/tree/main/BP%20Guide 47 | * This repository contains the header dumps for recent patch versions, to know what can be dummied: https://github.com/DRG-Modding/Header-Dumps/ 48 | * These examples show how reflecting works for functions, properties, and delegates: https://github.com/DRG-Modding/Reflected-Header-Classes 49 | -------------------------------------------------------------------------------- /FSD/Source/FSD/GeneratedMission.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "UObject/NoExportTypes.h" 7 | #include "MissionTemplate.h" 8 | #include "GeneratedMission.generated.h" 9 | 10 | 11 | UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 12 | class FSD_API UResourceData : public UDataAsset 13 | { 14 | GENERATED_BODY() 15 | public: 16 | UPROPERTY(BlueprintReadOnly) FText Title; 17 | UPROPERTY(BlueprintReadOnly) FText TitlePlural; 18 | UPROPERTY(BlueprintReadOnly) FText Description; 19 | UPROPERTY(BlueprintReadOnly) FColor Color; 20 | UPROPERTY(BlueprintReadOnly) UTexture2D* Icon; 21 | 22 | UFUNCTION(BlueprintCallable) float GetOwnedAmount(UObject* WorldContextObject) { return 0; }; 23 | }; 24 | 25 | 26 | USTRUCT(BlueprintType) 27 | struct FResourceSpawner 28 | { 29 | GENERATED_USTRUCT_BODY() 30 | public: 31 | UPROPERTY(BlueprintReadOnly) UResourceData* Resource; 32 | }; 33 | 34 | 35 | UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 36 | class FSD_API UBiome : public UDataAsset 37 | { 38 | GENERATED_BODY() 39 | public: 40 | UPROPERTY(BlueprintReadOnly) FText BiomeName; 41 | UPROPERTY(BlueprintReadOnly) FText BiomeShortName; 42 | UPROPERTY(BlueprintReadOnly) FText BiomeDescription; 43 | UPROPERTY(BlueprintReadOnly) FColor BiomeColor; 44 | UPROPERTY(BlueprintReadOnly) TSoftObjectPtr BiomePicture; 45 | UPROPERTY(BlueprintReadOnly) TSoftObjectPtr BiomeIcon; 46 | UPROPERTY(BlueprintReadOnly) TSoftObjectPtr BiomeLargeImage; 47 | //UPROPERTY(BlueprintReadOnly) TSoftObjectPtr BiomeWorldMap; 48 | //UPROPERTY(BlueprintReadOnly) TSoftObjectPtr BiomeMissionBar; 49 | //UPROPERTY(BlueprintReadOnly) TSoftClassPtr BiomeMapWidget; 50 | UPROPERTY(BlueprintReadOnly) TArray Resources; 51 | 52 | UFUNCTION(BlueprintCallable) UTexture2D* GetBiomeWorldMap() { return NULL; }; 53 | UFUNCTION(BlueprintCallable) UTexture2D* GetBiomePicture() { return NULL; }; 54 | //UFUNCTION(BlueprintCallable) UUserWidget* GetBiomeMapWidget(); 55 | //UFUNCTION(BlueprintCallable) TArray GetBiomeMapAssetList(); 56 | UFUNCTION(BlueprintCallable) UTexture2D* GetBiomeLargeImage() { return NULL; }; 57 | UFUNCTION(BlueprintCallable) UTexture2D* GetBiomeIcon() { return NULL; }; 58 | }; 59 | 60 | 61 | UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 62 | class UMissionComplexity : public UDataAsset 63 | { 64 | GENERATED_BODY() 65 | public: 66 | UPROPERTY(BlueprintReadOnly) FText Title; 67 | UPROPERTY(BlueprintReadOnly) int32 NumberOfDots; 68 | }; 69 | 70 | 71 | UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 72 | class UMissionDuration : public UDataAsset 73 | { 74 | GENERATED_BODY() 75 | public: 76 | UPROPERTY(BlueprintReadOnly) FText Title; 77 | UPROPERTY(BlueprintReadOnly) int32 NumberOfDots; 78 | }; 79 | 80 | 81 | UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 82 | class UMissionWarning : public UDataAsset 83 | { 84 | GENERATED_BODY() 85 | public: 86 | UPROPERTY(BlueprintReadOnly) TSoftClassPtr MissionBP; 87 | UPROPERTY(BlueprintReadOnly) TArray> BannedObjectives; 88 | UPROPERTY(BlueprintReadOnly) TArray BannedMutators; 89 | UPROPERTY(BlueprintReadOnly) TArray Mutators; 90 | UPROPERTY(BlueprintReadOnly) FText Title; 91 | UPROPERTY(BlueprintReadOnly) FText RichDescription; 92 | UPROPERTY(BlueprintReadOnly) UTexture2D* Icon; 93 | UPROPERTY(BlueprintReadOnly) float HazardBonus; 94 | //UPROPERTY(BlueprintReadOnly) UMissionStat* MissionCompletedStat; 95 | }; 96 | 97 | 98 | 99 | UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 100 | class UMissionMutator : public UDataAsset 101 | { 102 | GENERATED_BODY() 103 | public: 104 | //URunningMissionBP* MissionBP; 105 | //TArray> BannedObjectives; 106 | UPROPERTY(BlueprintReadOnly) TArray Mutators; 107 | UPROPERTY(BlueprintReadOnly) FText Title; 108 | UPROPERTY(BlueprintReadOnly) FText RichDescription; 109 | UPROPERTY(BlueprintReadOnly) UTexture2D* Icon; 110 | }; 111 | 112 | 113 | UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 114 | class UMutator : public UDataAsset 115 | { 116 | GENERATED_BODY() 117 | public: 118 | }; 119 | 120 | 121 | USTRUCT(BlueprintType) 122 | struct FGMMutatorItem 123 | { 124 | GENERATED_USTRUCT_BODY() 125 | public: 126 | UPROPERTY(BlueprintReadOnly) TArray Mutators; 127 | }; 128 | 129 | 130 | USTRUCT(BlueprintType) 131 | struct FObjectiveMissionIcon 132 | { 133 | GENERATED_USTRUCT_BODY() 134 | public: 135 | UPROPERTY(BlueprintReadOnly) UTexture2D* Texture; 136 | UPROPERTY(BlueprintReadOnly) FLinearColor Tint; 137 | }; 138 | 139 | 140 | UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 141 | class UMissionDNA : public UObject 142 | { 143 | GENERATED_BODY() 144 | public: 145 | UPROPERTY(BlueprintReadOnly) UMissionComplexity* Complexity; 146 | UPROPERTY(BlueprintReadOnly) UMissionDuration* Duration; 147 | }; 148 | 149 | 150 | UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 151 | class FSD_API UGeneratedMission : public UObject 152 | { 153 | GENERATED_BODY() 154 | public: 155 | UPROPERTY(BlueprintReadOnly) UBiome* Biome; 156 | UPROPERTY(BlueprintReadOnly) int32 Seed; 157 | UPROPERTY(BlueprintReadOnly) int32 GlobalSeed; 158 | UPROPERTY(BlueprintReadOnly) UMissionTemplate* Template; 159 | UPROPERTY(BlueprintReadOnly) FText MissionName; 160 | 161 | //UPROPERTY(BlueprintReadOnly) UObjective* PrimaryObjective; // has a few icon choices 162 | //UPROPERTY(BlueprintReadOnly) UObjective* SecondaryObjective; // ditto 163 | 164 | UPROPERTY(BlueprintReadOnly) TMap Mutators; 165 | UPROPERTY(BlueprintReadOnly) TArray MissionWarnings; 166 | UPROPERTY(BlueprintReadOnly) UMissionMutator* MissionMutator; 167 | 168 | UPROPERTY(BlueprintReadOnly) UMissionComplexity* ComplexityLimit; 169 | UPROPERTY(BlueprintReadOnly) UMissionDuration* DurationLimit; 170 | 171 | /* 172 | //UPROPERTY(BlueprintReadOnly) UMissionDNA* MissionDNA; 173 | //UPROPERTY(BlueprintReadOnly) enum class EMissionStructure MissionStructure; // single, DD, EDD 174 | //UPROPERTY(BlueprintReadOnly) TSoftObjectPtr LoaderLevelSequence; 175 | */ 176 | 177 | UFUNCTION(BlueprintCallable) FObjectiveMissionIcon GetSecondaryObjectiveIcon() { return FObjectiveMissionIcon(); }; 178 | UFUNCTION(BlueprintCallable) TArray GetMutators(UMutator* mutatorClass) { return TArray(); }; 179 | 180 | //UFUNCTION(BlueprintCallable) void Recieve_SetupPLS(AProceduralSetup* pls); 181 | //UFUNCTION(BlueprintCallable) bool IsSingleMission(); 182 | //UFUNCTION(BlueprintCallable) bool IsLocked(AFSDPlayerController* Player); 183 | //UFUNCTION(BlueprintCallable) bool IsDeepDive(); 184 | //UFUNCTION(BlueprintCallable) AProceduralSetup* GetPLS(); 185 | //UFUNCTION(BlueprintCallable) float GetMissionScale(); 186 | UFUNCTION(BlueprintCallable) UMissionDNA* GetMissionDNA() { return NULL; }; 187 | //UFUNCTION(BlueprintCallable) AProceduralSetup* CreatePLS(int32_t Seed); 188 | //UFUNCTION(BlueprintCallable) bool AreMissionsEqual(UGeneratedMission* Other); 189 | }; 190 | --------------------------------------------------------------------------------