mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
Some black holes still dont work
This commit is contained in:
parent
31bf3b508d
commit
5af24599a8
@ -12,7 +12,7 @@ namespace NewHorizons.Builder.General
|
|||||||
public static SpawnPoint Make(GameObject body, SpawnModule module, OWRigidbody rb)
|
public static SpawnPoint Make(GameObject body, SpawnModule module, OWRigidbody rb)
|
||||||
{
|
{
|
||||||
SpawnPoint playerSpawn = null;
|
SpawnPoint playerSpawn = null;
|
||||||
if(!Main.IsWarping && module.PlayerSpawnPoint != null)
|
if(!Main.Instance.IsWarping && module.PlayerSpawnPoint != null)
|
||||||
{
|
{
|
||||||
GameObject spawnGO = new GameObject("PlayerSpawnPoint");
|
GameObject spawnGO = new GameObject("PlayerSpawnPoint");
|
||||||
spawnGO.transform.parent = body.transform;
|
spawnGO.transform.parent = body.transform;
|
||||||
@ -45,7 +45,7 @@ namespace NewHorizons.Builder.General
|
|||||||
|
|
||||||
ship.GetRequiredComponent<MatchInitialMotion>().SetBodyToMatch(rb);
|
ship.GetRequiredComponent<MatchInitialMotion>().SetBodyToMatch(rb);
|
||||||
|
|
||||||
if(Main.IsWarping)
|
if(Main.Instance.IsWarping)
|
||||||
{
|
{
|
||||||
Logger.Log("Overriding player spawn to be inside ship");
|
Logger.Log("Overriding player spawn to be inside ship");
|
||||||
GameObject playerSpawnGO = new GameObject("PlayerSpawnPoint");
|
GameObject playerSpawnGO = new GameObject("PlayerSpawnPoint");
|
||||||
@ -60,7 +60,7 @@ namespace NewHorizons.Builder.General
|
|||||||
GameObject.FindObjectOfType<PlayerSpawner>().SetInitialSpawnPoint(playerSpawn);
|
GameObject.FindObjectOfType<PlayerSpawner>().SetInitialSpawnPoint(playerSpawn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(!Main.IsWarping && module.StartWithSuit && !suitUpQueued)
|
if(!Main.Instance.IsWarping && module.StartWithSuit && !suitUpQueued)
|
||||||
{
|
{
|
||||||
suitUpQueued = true;
|
suitUpQueued = true;
|
||||||
Main.Instance.ModHelper.Events.Unity.FireInNUpdates(() => SuitUp(), 4);
|
Main.Instance.ModHelper.Events.Unity.FireInNUpdates(() => SuitUp(), 4);
|
||||||
|
|||||||
@ -16,10 +16,15 @@ namespace NewHorizons.Components
|
|||||||
_deathType = DeathType.Meditation;
|
_deathType = DeathType.Meditation;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void VanishShip(OWRigidbody shipBody, RelativeLocationData entryLocation)
|
||||||
|
{
|
||||||
|
if(PlayerState.IsInsideShip()) Main.Instance.ChangeCurrentStarSystem(TargetSolarSystem, true);
|
||||||
|
}
|
||||||
|
|
||||||
public override void VanishPlayer(OWRigidbody playerBody, RelativeLocationData entryLocation)
|
public override void VanishPlayer(OWRigidbody playerBody, RelativeLocationData entryLocation)
|
||||||
{
|
{
|
||||||
//Main.Instance.ChangeCurrentStarSystem(TargetSolarSystem, PlayerState.AtFlightConsole());
|
Main.Instance.ChangeCurrentStarSystem(TargetSolarSystem, PlayerState.AtFlightConsole());
|
||||||
Main.Instance.ChangeCurrentStarSystem(TargetSolarSystem, false);
|
//Main.Instance.ChangeCurrentStarSystem(TargetSolarSystem, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -94,7 +94,11 @@ namespace NewHorizons.Components
|
|||||||
}
|
}
|
||||||
|
|
||||||
var newCard = GameObject.Instantiate(_cardTemplate, parent);
|
var newCard = GameObject.Instantiate(_cardTemplate, parent);
|
||||||
newCard.transform.Find("EntryCardRoot/NameBackground/Name").GetComponent<UnityEngine.UI.Text>().text = UniqueNameToString(uniqueName);
|
var textComponent = newCard.transform.Find("EntryCardRoot/NameBackground/Name").GetComponent<UnityEngine.UI.Text>();
|
||||||
|
var name = UniqueNameToString(uniqueName);
|
||||||
|
textComponent.text = name;
|
||||||
|
if (name.Length > 17) textComponent.fontSize = 10;
|
||||||
|
|
||||||
newCard.SetActive(true);
|
newCard.SetActive(true);
|
||||||
newCard.transform.name = uniqueName;
|
newCard.transform.name = uniqueName;
|
||||||
newCard.transform.localPosition = new Vector3(position.x, position.y, 40);
|
newCard.transform.localPosition = new Vector3(position.x, position.y, 40);
|
||||||
|
|||||||
@ -6,6 +6,7 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using Logger = NewHorizons.Utility.Logger;
|
||||||
|
|
||||||
namespace NewHorizons.Components
|
namespace NewHorizons.Components
|
||||||
{
|
{
|
||||||
@ -28,11 +29,18 @@ namespace NewHorizons.Components
|
|||||||
MakeBlackHole();
|
MakeBlackHole();
|
||||||
MakeWhiteHole();
|
MakeWhiteHole();
|
||||||
|
|
||||||
|
_isWarpingIn = false;
|
||||||
|
|
||||||
_oneShotSource = base.gameObject.AddComponent<OWAudioSource>();
|
_oneShotSource = base.gameObject.AddComponent<OWAudioSource>();
|
||||||
|
|
||||||
GlobalMessenger.AddListener("FinishOpenEyes", new Callback(OnFinishOpenEyes));
|
GlobalMessenger.AddListener("FinishOpenEyes", new Callback(OnFinishOpenEyes));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void OnDestroy()
|
||||||
|
{
|
||||||
|
GlobalMessenger.RemoveListener("FinishOpenEyes", new Callback(OnFinishOpenEyes));
|
||||||
|
}
|
||||||
|
|
||||||
private void MakeBlackHole()
|
private void MakeBlackHole()
|
||||||
{
|
{
|
||||||
var blackHoleShader = GameObject.Find("TowerTwin_Body/Sector_TowerTwin/Sector_Tower_HGT/Interactables_Tower_HGT/Interactables_Tower_TT/Prefab_NOM_WarpTransmitter (1)/BlackHole/BlackHoleSingularity").GetComponent<MeshRenderer>().material.shader;
|
var blackHoleShader = GameObject.Find("TowerTwin_Body/Sector_TowerTwin/Sector_Tower_HGT/Interactables_Tower_HGT/Interactables_Tower_TT/Prefab_NOM_WarpTransmitter (1)/BlackHole/BlackHoleSingularity").GetComponent<MeshRenderer>().material.shader;
|
||||||
@ -81,13 +89,9 @@ namespace NewHorizons.Components
|
|||||||
whiteHoleRenderer.SetActive(true);
|
whiteHoleRenderer.SetActive(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnDestroy()
|
|
||||||
{
|
|
||||||
GlobalMessenger.RemoveListener("FinishOpenEyes", new Callback(OnFinishOpenEyes));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void WarpIn()
|
public void WarpIn()
|
||||||
{
|
{
|
||||||
|
Logger.Log("Starting warp-in");
|
||||||
// Trying really hard to stop the player from dying while warping in
|
// Trying really hard to stop the player from dying while warping in
|
||||||
_impactDeathSpeed = Locator.GetDeathManager()._impactDeathSpeed;
|
_impactDeathSpeed = Locator.GetDeathManager()._impactDeathSpeed;
|
||||||
Locator.GetDeathManager()._impactDeathSpeed = Mathf.Infinity;
|
Locator.GetDeathManager()._impactDeathSpeed = Mathf.Infinity;
|
||||||
@ -99,6 +103,7 @@ namespace NewHorizons.Components
|
|||||||
|
|
||||||
public void WarpOut()
|
public void WarpOut()
|
||||||
{
|
{
|
||||||
|
Logger.Log("Starting warp-out");
|
||||||
_oneShotSource.PlayOneShot(global::AudioType.VesselSingularityCreate, 1f);
|
_oneShotSource.PlayOneShot(global::AudioType.VesselSingularityCreate, 1f);
|
||||||
_blackhole.Create();
|
_blackhole.Create();
|
||||||
}
|
}
|
||||||
@ -107,37 +112,28 @@ namespace NewHorizons.Components
|
|||||||
{
|
{
|
||||||
if(_isWarpingIn && LateInitializerManager.isDoneInitializing)
|
if(_isWarpingIn && LateInitializerManager.isDoneInitializing)
|
||||||
{
|
{
|
||||||
_oneShotSource.PlayOneShot(global::AudioType.VesselSingularityCollapse, 1f);
|
Main.Instance.ModHelper.Events.Unity.FireInNUpdates(() => StartWarpInEffect(), 1);
|
||||||
Locator.GetDeathManager()._invincible = true;
|
|
||||||
if (Main.Instance.CurrentStarSystem.Equals("SolarSystem")) Teleportation.teleportPlayerToShip();
|
|
||||||
_whitehole.Create();
|
|
||||||
_isWarpingIn = false;
|
_isWarpingIn = false;
|
||||||
_waitingToBeSeated = true;
|
|
||||||
if (!Locator.GetPlayerController()._isWearingSuit)
|
|
||||||
{
|
|
||||||
SpawnPointBuilder.SuitUp();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Idk whats making this work but now it works and idc
|
|
||||||
if(_waitingToBeSeated
|
|
||||||
&& PlayerState.IsInsideShip()
|
|
||||||
&& PlayerState.IsWearingSuit()
|
|
||||||
&& base.GetComponentInChildren<ShipCockpitController>()?._playerAttachPoint?.GetAttachedOWRigidbody() != null
|
|
||||||
&& !Locator.GetPlayerController()._isMovementLocked
|
|
||||||
&& !Locator.GetPlayerController()._isTurningLocked
|
|
||||||
&& _eyesOpen)
|
|
||||||
{
|
|
||||||
Main.Instance.ModHelper.Events.Unity.FireInNUpdates(() => FinishWarp(), 4);
|
|
||||||
_waitingToBeSeated = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_waitingToBeSeated)
|
if (_waitingToBeSeated)
|
||||||
{
|
{
|
||||||
if (Player.getResources()._currentHealth < 100f)
|
if (Player.getResources()._currentHealth < 100f)
|
||||||
{
|
{
|
||||||
|
Logger.Log("Player died in a warp drive accident, reviving them");
|
||||||
// Means the player was killed meaning they weren't teleported in
|
// Means the player was killed meaning they weren't teleported in
|
||||||
Player.getResources()._currentHealth = 100f;
|
Player.getResources()._currentHealth = 100f;
|
||||||
Teleportation.teleportPlayerToShip();
|
if(!PlayerState.AtFlightConsole()) Teleportation.teleportPlayerToShip();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Logger.Log($"{PlayerState.IsInsideShip()}, {PlayerState.IsWearingSuit()}, {base.GetComponentInChildren<ShipCockpitController>()?._playerAttachPoint?.GetAttachedOWRigidbody() != null}, {!Locator.GetPlayerController()._isMovementLocked}, {!Locator.GetPlayerController()._isTurningLocked }, {_eyesOpen}");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Idk whats making this work but now it works and idc
|
||||||
|
if (_waitingToBeSeated && PlayerState.IsInsideShip() && _eyesOpen)
|
||||||
|
{
|
||||||
|
Main.Instance.ModHelper.Events.Unity.FireInNUpdates(() => FinishWarpIn(), 1);
|
||||||
|
_waitingToBeSeated = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -146,8 +142,23 @@ namespace NewHorizons.Components
|
|||||||
_eyesOpen = true;
|
_eyesOpen = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void FinishWarp()
|
private void StartWarpInEffect()
|
||||||
{
|
{
|
||||||
|
Logger.Log("Starting warp-in effect");
|
||||||
|
_oneShotSource.PlayOneShot(global::AudioType.VesselSingularityCollapse, 1f);
|
||||||
|
Locator.GetDeathManager()._invincible = true;
|
||||||
|
if (Main.Instance.CurrentStarSystem.Equals("SolarSystem")) Teleportation.teleportPlayerToShip();
|
||||||
|
_whitehole.Create();
|
||||||
|
_waitingToBeSeated = true;
|
||||||
|
if (!Locator.GetPlayerController()._isWearingSuit)
|
||||||
|
{
|
||||||
|
SpawnPointBuilder.SuitUp();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void FinishWarpIn()
|
||||||
|
{
|
||||||
|
Logger.Log("Finishing warp");
|
||||||
Locator.GetShipBody().GetComponentInChildren<ShipCockpitController>().OnPressInteract();
|
Locator.GetShipBody().GetComponentInChildren<ShipCockpitController>().OnPressInteract();
|
||||||
_waitingToBeSeated = false;
|
_waitingToBeSeated = false;
|
||||||
Main.Instance.ModHelper.Events.Unity.FireInNUpdates(() => _whitehole.Collapse(), 30);
|
Main.Instance.ModHelper.Events.Unity.FireInNUpdates(() => _whitehole.Collapse(), 30);
|
||||||
|
|||||||
@ -39,8 +39,7 @@ namespace NewHorizons
|
|||||||
public string CurrentStarSystem { get { return Instance._currentStarSystem; } }
|
public string CurrentStarSystem { get { return Instance._currentStarSystem; } }
|
||||||
|
|
||||||
private bool _isChangingStarSystem = false;
|
private bool _isChangingStarSystem = false;
|
||||||
private bool _isWarping = false;
|
public bool IsWarping { get; private set; } = false;
|
||||||
public static bool IsWarping { get { return Instance._isWarping; } }
|
|
||||||
|
|
||||||
private ShipWarpController _shipWarpController;
|
private ShipWarpController _shipWarpController;
|
||||||
|
|
||||||
@ -199,8 +198,9 @@ namespace NewHorizons
|
|||||||
if (map != null) map._maxPanDistance = FurthestOrbit * 1.5f;
|
if (map != null) map._maxPanDistance = FurthestOrbit * 1.5f;
|
||||||
|
|
||||||
_shipWarpController = GameObject.Find("Ship_Body").AddComponent<ShipWarpController>();
|
_shipWarpController = GameObject.Find("Ship_Body").AddComponent<ShipWarpController>();
|
||||||
if (_isWarping) Instance.ModHelper.Events.Unity.FireInNUpdates(() => _shipWarpController.WarpIn(), 1);
|
Logger.Log($"Is the player warping in? {IsWarping}");
|
||||||
_isWarping = false;
|
//if (IsWarping) Instance.ModHelper.Events.Unity.FireInNUpdates(() => _shipWarpController.WarpIn(), 1);
|
||||||
|
IsWarping = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#region TitleScreen
|
#region TitleScreen
|
||||||
@ -548,11 +548,13 @@ namespace NewHorizons
|
|||||||
#region Change star system
|
#region Change star system
|
||||||
public void ChangeCurrentStarSystem(string newStarSystem, bool warp = false)
|
public void ChangeCurrentStarSystem(string newStarSystem, bool warp = false)
|
||||||
{
|
{
|
||||||
|
if (_isChangingStarSystem) return;
|
||||||
|
|
||||||
Logger.Log($"Warping to {newStarSystem}");
|
Logger.Log($"Warping to {newStarSystem}");
|
||||||
if(warp) _shipWarpController.WarpOut();
|
if(warp) _shipWarpController.WarpOut();
|
||||||
_currentStarSystem = newStarSystem;
|
_currentStarSystem = newStarSystem;
|
||||||
_isChangingStarSystem = true;
|
_isChangingStarSystem = true;
|
||||||
_isWarping = warp;
|
IsWarping = warp;
|
||||||
|
|
||||||
// We kill them so they don't move as much
|
// We kill them so they don't move as much
|
||||||
Locator.GetDeathManager().KillPlayer(DeathType.Meditation);
|
Locator.GetDeathManager().KillPlayer(DeathType.Meditation);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user