Main to Dev

This commit is contained in:
Noah 2022-06-19 20:28:09 -04:00 committed by GitHub
commit 8ca0fd2986
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 80 additions and 21 deletions

View File

@ -1,6 +1,6 @@
name: Feature Request name: Feature Request
description: Request a feature you'd like to see in a later release description: Request a feature you'd like to see in a later release
labels: ["enhancement"] labels: ["feature"]
body: body:
- type: textarea - type: textarea
id: feature id: feature
@ -11,4 +11,4 @@ body:
id: context id: context
attributes: attributes:
label: Context label: Context
description: Provide any additional context such as screenshots or diagrams here. description: Provide any additional context such as screenshots or diagrams here.

View File

@ -12,13 +12,26 @@ namespace NewHorizons.Handlers
{ {
public static AssetBundle VesselBundle { get; private set; } public static AssetBundle VesselBundle { get; private set; }
public static GameObject VesselPrefab { get; private set; } public static GameObject VesselPrefab { get; private set; }
public static GameObject VesselObject { get; private set; }
public static VesselWarpController WarpController { get; private set; }
internal static void Initialize() private static SpawnPoint _vesselSpawnPoint;
public static SpawnPoint VesselSpawnPoint => _vesselSpawnPoint;
public static void Initialize()
{ {
VesselBundle = Main.Instance.ModHelper.Assets.LoadBundle("Assets/vessel.newhorizons"); VesselBundle = Instance.ModHelper.Assets.LoadBundle("Assets/vessel.newhorizons");
VesselPrefab = VesselBundle.LoadAsset<GameObject>("Vessel_Body"); VesselPrefab = VesselBundle.LoadAsset<GameObject>("Vessel_Body");
} }
public static void LoadVessel()
{
if (Instance.IsWarpingFromVessel)
_vesselSpawnPoint = Instance.CurrentStarSystem == "SolarSystem" ? UpdateVessel() : CreateVessel();
else
_vesselSpawnPoint = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension").GetComponentInChildren<SpawnPoint>();
}
public static void OnReceiveWarpedBody(OWRigidbody warpedBody, NomaiWarpPlatform startPlatform, NomaiWarpPlatform targetPlatform) public static void OnReceiveWarpedBody(OWRigidbody warpedBody, NomaiWarpPlatform startPlatform, NomaiWarpPlatform targetPlatform)
{ {
bool isPlayer = warpedBody.CompareTag("Player"); bool isPlayer = warpedBody.CompareTag("Player");
@ -36,41 +49,76 @@ namespace NewHorizons.Handlers
} }
} }
public static void TeleportToVessel()
{
var playerSpawner = GameObject.FindObjectOfType<PlayerSpawner>();
playerSpawner.DebugWarp(_vesselSpawnPoint);
Builder.General.SpawnPointBuilder.SuitUp();
if (Instance.CurrentStarSystem == "SolarSystem")
{
// Deactivate village music because for some reason it still plays.
SearchUtilities.Find("TimberHearth_Body/Sector_TH/Sector_Village/Volumes_Village/MusicVolume_Village").GetComponent<VillageMusicVolume>().Deactivate();
// Loads it manually so the player doesn't start falling and then vessel loads in on them.
SectorStreaming ss = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension/Sector_Streaming").GetComponent<SectorStreaming>();
ss.enabled = true;
ss._streamingGroup.LoadRequiredAssets();
ss._streamingGroup.LoadRequiredColliders();
ss._streamingGroup.LoadGeneralAssets();
StreamingManager.loadingPriority = StreamingManager.LoadingPriority.High;
}
}
public static EyeSpawnPoint CreateVessel() public static EyeSpawnPoint CreateVessel()
{ {
var system = SystemDict[Instance.CurrentStarSystem]; var system = SystemDict[Instance.CurrentStarSystem];
Logger.Log("Checking for Vessel Prefab"); Logger.Log("Checking for Vessel Prefab");
if (VesselPrefab == null) return null; if (VesselPrefab == null) return null;
Logger.Log("Creating Vessel"); Logger.Log("Creating Vessel");
var vesselObject = GameObject.Instantiate(VesselPrefab); var vesselObject = GameObject.Instantiate(VesselPrefab);
VesselObject = vesselObject;
vesselObject.name = VesselPrefab.name; vesselObject.name = VesselPrefab.name;
vesselObject.transform.parent = null; vesselObject.transform.parent = null;
if (system.Config.vesselPosition != null) if (system.Config.vesselPosition != null)
vesselObject.transform.position += system.Config.vesselPosition; vesselObject.transform.position += system.Config.vesselPosition;
if (system.Config.vesselRotation != null) if (system.Config.vesselRotation != null)
vesselObject.transform.eulerAngles = system.Config.vesselRotation; vesselObject.transform.eulerAngles = system.Config.vesselRotation;
VesselWarpController vesselWarpController = vesselObject.GetComponentInChildren<VesselWarpController>(true); VesselWarpController vesselWarpController = vesselObject.GetComponentInChildren<VesselWarpController>(true);
WarpController = vesselWarpController;
vesselWarpController._sourceWarpPlatform.transform.DestroyAllChildren(); vesselWarpController._sourceWarpPlatform.transform.DestroyAllChildren();
vesselWarpController._targetWarpPlatform.transform.DestroyAllChildren(); vesselWarpController._targetWarpPlatform.transform.DestroyAllChildren();
GameObject.Destroy(vesselWarpController._blackHole.transform.parent.gameObject); GameObject.Destroy(vesselWarpController._blackHole.transform.parent.gameObject);
GameObject.Destroy(vesselWarpController._whiteHole.transform.parent.gameObject); GameObject.Destroy(vesselWarpController._whiteHole.transform.parent.gameObject);
GameObject WarpPlatform = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension/Sector_VesselBridge/Interactibles_VesselBridge/WarpController/Prefab_NOM_WarpPlatform"); GameObject WarpPlatform = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension/Sector_VesselBridge/Interactibles_VesselBridge/WarpController/Prefab_NOM_WarpPlatform");
GameObject warpBH = WarpPlatform.transform.Find("BlackHole").gameObject; GameObject warpBH = WarpPlatform.transform.Find("BlackHole").gameObject;
GameObject warpWH = WarpPlatform.transform.Find("WhiteHole").gameObject; GameObject warpWH = WarpPlatform.transform.Find("WhiteHole").gameObject;
GameObject sourceBH = GameObject.Instantiate(warpBH, vesselWarpController._sourceWarpPlatform.transform, false); GameObject sourceBH = GameObject.Instantiate(warpBH, vesselWarpController._sourceWarpPlatform.transform, false);
vesselWarpController._sourceWarpPlatform._blackHole = sourceBH.GetComponentInChildren<SingularityController>(); vesselWarpController._sourceWarpPlatform._blackHole = sourceBH.GetComponentInChildren<SingularityController>();
GameObject sourceWH = GameObject.Instantiate(warpWH, vesselWarpController._sourceWarpPlatform.transform, false); GameObject sourceWH = GameObject.Instantiate(warpWH, vesselWarpController._sourceWarpPlatform.transform, false);
vesselWarpController._sourceWarpPlatform._whiteHole = sourceWH.GetComponentInChildren<SingularityController>(); vesselWarpController._sourceWarpPlatform._whiteHole = sourceWH.GetComponentInChildren<SingularityController>();
GameObject targetBH = GameObject.Instantiate(warpBH, vesselWarpController._targetWarpPlatform.transform, false); GameObject targetBH = GameObject.Instantiate(warpBH, vesselWarpController._targetWarpPlatform.transform, false);
vesselWarpController._targetWarpPlatform._blackHole = targetBH.GetComponentInChildren<SingularityController>(); vesselWarpController._targetWarpPlatform._blackHole = targetBH.GetComponentInChildren<SingularityController>();
GameObject targetWH = GameObject.Instantiate(warpWH, vesselWarpController._targetWarpPlatform.transform, false); GameObject targetWH = GameObject.Instantiate(warpWH, vesselWarpController._targetWarpPlatform.transform, false);
vesselWarpController._targetWarpPlatform._whiteHole = targetWH.GetComponentInChildren<SingularityController>(); vesselWarpController._targetWarpPlatform._whiteHole = targetWH.GetComponentInChildren<SingularityController>();
GameObject blackHole = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension/Sector_VesselBridge/Interactibles_VesselBridge/BlackHole"); GameObject blackHole = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension/Sector_VesselBridge/Interactibles_VesselBridge/BlackHole");
GameObject newBlackHole = GameObject.Instantiate(blackHole, vesselWarpController.transform.parent, false); GameObject newBlackHole = GameObject.Instantiate(blackHole, vesselWarpController.transform.parent, false);
newBlackHole.name = "BlackHole"; newBlackHole.name = "BlackHole";
vesselWarpController._blackHole = newBlackHole.GetComponentInChildren<SingularityController>(); vesselWarpController._blackHole = newBlackHole.GetComponentInChildren<SingularityController>();
vesselWarpController._blackHoleOneShot = vesselWarpController._blackHole.transform.parent.Find("BlackHoleAudio_OneShot").GetComponent<OWAudioSource>(); vesselWarpController._blackHoleOneShot = vesselWarpController._blackHole.transform.parent.Find("BlackHoleAudio_OneShot").GetComponent<OWAudioSource>();
GameObject whiteHole = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension/Sector_VesselBridge/Interactibles_VesselBridge/WhiteHole"); GameObject whiteHole = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension/Sector_VesselBridge/Interactibles_VesselBridge/WhiteHole");
GameObject newWhiteHole = GameObject.Instantiate(whiteHole, vesselWarpController.transform.parent, false); GameObject newWhiteHole = GameObject.Instantiate(whiteHole, vesselWarpController.transform.parent, false);
newWhiteHole.name = "WhiteHole"; newWhiteHole.name = "WhiteHole";
@ -78,28 +126,50 @@ namespace NewHorizons.Handlers
vesselWarpController._whiteHoleOneShot = vesselWarpController._whiteHole.transform.parent.Find("WhiteHoleAudio_OneShot").GetComponent<OWAudioSource>(); vesselWarpController._whiteHoleOneShot = vesselWarpController._whiteHole.transform.parent.Find("WhiteHoleAudio_OneShot").GetComponent<OWAudioSource>();
vesselObject.SetActive(true); vesselObject.SetActive(true);
vesselWarpController._targetWarpPlatform.OnReceiveWarpedBody += OnReceiveWarpedBody; vesselWarpController._targetWarpPlatform.OnReceiveWarpedBody += OnReceiveWarpedBody;
if (system.Config.warpExitPosition != null) if (system.Config.warpExitPosition != null)
vesselWarpController._targetWarpPlatform.transform.localPosition = system.Config.warpExitPosition; vesselWarpController._targetWarpPlatform.transform.localPosition = system.Config.warpExitPosition;
if (system.Config.warpExitRotation != null) if (system.Config.warpExitRotation != null)
vesselObject.transform.localEulerAngles = system.Config.warpExitRotation; vesselObject.transform.localEulerAngles = system.Config.warpExitRotation;
vesselObject.GetComponent<MapMarker>()._labelID = (UITextType)TranslationHandler.AddUI("Vessel");
vesselObject.GetComponent<MapMarker>()._labelID = (UITextType)TranslationHandler.AddUI("VESSEL");
EyeSpawnPoint eyeSpawnPoint = vesselObject.GetComponentInChildren<EyeSpawnPoint>(true); EyeSpawnPoint eyeSpawnPoint = vesselObject.GetComponentInChildren<EyeSpawnPoint>(true);
system.SpawnPoint = eyeSpawnPoint; system.SpawnPoint = eyeSpawnPoint;
Instance.ModHelper.Events.Unity.FireOnNextUpdate(() => SetupWarpController(vesselWarpController)); Instance.ModHelper.Events.Unity.FireOnNextUpdate(() => SetupWarpController(vesselWarpController));
return eyeSpawnPoint; return eyeSpawnPoint;
} }
public static SpawnPoint UpdateVessel() public static SpawnPoint UpdateVessel()
{ {
var system = SystemDict[Instance.CurrentStarSystem]; var system = SystemDict[Instance.CurrentStarSystem];
Logger.Log("Updating DB Vessel");
var vectorSector = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension"); var vectorSector = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension");
VesselObject = vectorSector;
var spawnPoint = vectorSector.GetComponentInChildren<SpawnPoint>(); var spawnPoint = vectorSector.GetComponentInChildren<SpawnPoint>();
system.SpawnPoint = spawnPoint;
VesselWarpController vesselWarpController = vectorSector.GetComponentInChildren<VesselWarpController>(true); VesselWarpController vesselWarpController = vectorSector.GetComponentInChildren<VesselWarpController>(true);
WarpController = vesselWarpController;
if (vesselWarpController._targetWarpPlatform != null) if (vesselWarpController._targetWarpPlatform != null)
vesselWarpController._targetWarpPlatform.OnReceiveWarpedBody += OnReceiveWarpedBody; vesselWarpController._targetWarpPlatform.OnReceiveWarpedBody += OnReceiveWarpedBody;
if (vesselWarpController._whiteHole == null)
{
GameObject whiteHole = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension/Sector_VesselBridge/Interactibles_VesselBridge/WhiteHole");
vesselWarpController._whiteHole = whiteHole.GetComponentInChildren<SingularityController>();
vesselWarpController._whiteHoleOneShot = vesselWarpController._whiteHole.transform.parent.Find("WhiteHoleAudio_OneShot").GetComponent<OWAudioSource>();
}
Instance.ModHelper.Events.Unity.FireOnNextUpdate(() => SetupWarpController(vesselWarpController, true)); Instance.ModHelper.Events.Unity.FireOnNextUpdate(() => SetupWarpController(vesselWarpController, true));
return spawnPoint; return spawnPoint;
} }

View File

@ -57,9 +57,6 @@ namespace NewHorizons
private bool _firstLoad = true; private bool _firstLoad = true;
private ShipWarpController _shipWarpController; private ShipWarpController _shipWarpController;
// Vessel
private SpawnPoint _vesselSpawnPoint;
// API events // API events
public class StarSystemEvent : UnityEvent<string> { } public class StarSystemEvent : UnityEvent<string> { }
public StarSystemEvent OnChangeStarSystem; public StarSystemEvent OnChangeStarSystem;
@ -282,10 +279,7 @@ namespace NewHorizons
AstroObjectLocator.Init(); AstroObjectLocator.Init();
OWAssetHandler.Init(); OWAssetHandler.Init();
PlanetCreationHandler.Init(BodyDict[CurrentStarSystem]); PlanetCreationHandler.Init(BodyDict[CurrentStarSystem]);
if (IsWarpingFromVessel) VesselWarpHandler.LoadVessel();
_vesselSpawnPoint = CurrentStarSystem == "SolarSystem" ? VesselWarpHandler.UpdateVessel() : VesselWarpHandler.CreateVessel();
else
_vesselSpawnPoint = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension").GetComponentInChildren<SpawnPoint>();
SystemCreationHandler.LoadSystem(SystemDict[CurrentStarSystem]); SystemCreationHandler.LoadSystem(SystemDict[CurrentStarSystem]);
LoadTranslations(ModHelper.Manifest.ModFolderPath + "Assets/", this); LoadTranslations(ModHelper.Manifest.ModFolderPath + "Assets/", this);
@ -297,7 +291,7 @@ namespace NewHorizons
if (HasWarpDrive == true) EnableWarpDrive(); if (HasWarpDrive == true) EnableWarpDrive();
var shouldWarpInFromShip = IsWarpingFromShip && _shipWarpController != null; var shouldWarpInFromShip = IsWarpingFromShip && _shipWarpController != null;
var shouldWarpInFromVessel = IsWarpingFromVessel && _vesselSpawnPoint != null; var shouldWarpInFromVessel = IsWarpingFromVessel && VesselWarpHandler.VesselSpawnPoint != null;
Instance.ModHelper.Events.Unity.RunWhen(() => IsSystemReady, () => OnSystemReady(shouldWarpInFromShip, shouldWarpInFromVessel)); Instance.ModHelper.Events.Unity.RunWhen(() => IsSystemReady, () => OnSystemReady(shouldWarpInFromShip, shouldWarpInFromVessel));
IsWarpingFromShip = false; IsWarpingFromShip = false;
@ -335,11 +329,7 @@ namespace NewHorizons
// DebugArrow.CreateArrow(Locator.GetPlayerBody().gameObject); // This is for NH devs mostly. It shouldn't be active in debug mode for now. Someone should make a dev tools submenu for it though. // DebugArrow.CreateArrow(Locator.GetPlayerBody().gameObject); // This is for NH devs mostly. It shouldn't be active in debug mode for now. Someone should make a dev tools submenu for it though.
if (shouldWarpInFromShip) _shipWarpController.WarpIn(WearingSuit); if (shouldWarpInFromShip) _shipWarpController.WarpIn(WearingSuit);
else if (shouldWarpInFromVessel) else if (shouldWarpInFromVessel) VesselWarpHandler.TeleportToVessel();
{
FindObjectOfType<PlayerSpawner>().DebugWarp(_vesselSpawnPoint);
Builder.General.SpawnPointBuilder.SuitUp();
}
else FindObjectOfType<PlayerSpawner>().DebugWarp(SystemDict[_currentStarSystem].SpawnPoint); else FindObjectOfType<PlayerSpawner>().DebugWarp(SystemDict[_currentStarSystem].SpawnPoint);
} }

View File

@ -66,7 +66,6 @@ New Horizons was made with help from:
- [Trifid](https://github.com/TerrificTrifid) - [Trifid](https://github.com/TerrificTrifid)
- [Raicuparta](https://github.com/Raicuparta) - [Raicuparta](https://github.com/Raicuparta)
- [jtsalomo](https://github.com/jtsalomo) - [jtsalomo](https://github.com/jtsalomo)
- And the Outer Wilds modding server. - And the Outer Wilds modding server.
Translation credits: Translation credits:

View File

@ -491,7 +491,7 @@ Can be any of the following:
#### Enter #### Enter
When the player enters the trigger, reveal the facts When the player or probe enters the trigger, reveal the facts
#### Observe #### Observe