mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
commit
528e4ea828
@ -1,4 +1,5 @@
|
||||
using OWML.Utils;
|
||||
using NewHorizons.Utility;
|
||||
using OWML.Utils;
|
||||
using UnityEngine;
|
||||
using Logger = NewHorizons.Utility.Logger;
|
||||
|
||||
@ -22,7 +23,7 @@ namespace NewHorizons.Builder.Atmosphere
|
||||
|
||||
if(hasRain)
|
||||
{
|
||||
var rainGO = GameObject.Instantiate(GameObject.Find("/GiantsDeep_Body/Sector_GD/Sector_GDInterior/Effects_GDInterior/Effects_GD_Rain"), effectsGO.transform);
|
||||
var rainGO = GameObject.Instantiate(SearchUtilities.CachedFind("/GiantsDeep_Body/Sector_GD/Sector_GDInterior/Effects_GDInterior/Effects_GD_Rain"), effectsGO.transform);
|
||||
rainGO.transform.localPosition = Vector3.zero;
|
||||
|
||||
var pvc = rainGO.GetComponent<PlanetaryVectionController>();
|
||||
@ -45,7 +46,7 @@ namespace NewHorizons.Builder.Atmosphere
|
||||
snowGO.transform.localPosition = Vector3.zero;
|
||||
for(int i = 0; i < 5; i++)
|
||||
{
|
||||
var snowEmitter = GameObject.Instantiate(GameObject.Find("/BrittleHollow_Body/Sector_BH/Effects_BH/Effects_BH_Snowflakes"), snowGO.transform);
|
||||
var snowEmitter = GameObject.Instantiate(SearchUtilities.CachedFind("/BrittleHollow_Body/Sector_BH/Effects_BH/Effects_BH_Snowflakes"), snowGO.transform);
|
||||
snowEmitter.name = "SnowEmitter";
|
||||
snowEmitter.transform.localPosition = Vector3.zero;
|
||||
|
||||
|
||||
@ -43,11 +43,11 @@ namespace NewHorizons.Builder.General
|
||||
foreach(var name in _solarSystemBodies)
|
||||
{
|
||||
var ao = AstroObjectLocator.GetAstroObject(name);
|
||||
if (ao != null) Main.Instance.ModHelper.Events.Unity.FireOnNextUpdate(() => RemoveBody(ao, false));
|
||||
if (ao != null) Main.Instance.ModHelper.Events.Unity.FireInNUpdates(() => RemoveBody(ao, false), 2);
|
||||
}
|
||||
|
||||
// Bring the sun back because why not
|
||||
Main.Instance.ModHelper.Events.Unity.FireInNUpdates(() => { if (Locator.GetAstroObject(AstroObject.Name.Sun).gameObject.activeInHierarchy) { sunVolumes.SetActive(true); } }, 2);
|
||||
Main.Instance.ModHelper.Events.Unity.FireInNUpdates(() => { if (Locator.GetAstroObject(AstroObject.Name.Sun).gameObject.activeInHierarchy) { sunVolumes.SetActive(true); } }, 3);
|
||||
}
|
||||
|
||||
public static void RemoveBody(AstroObject ao, bool delete = false, List<AstroObject> toDestroy = null)
|
||||
|
||||
@ -72,33 +72,35 @@ namespace NewHorizons.Builder.General
|
||||
{
|
||||
suitUpQueued = false;
|
||||
if (Locator.GetPlayerController()._isWearingSuit) return;
|
||||
try
|
||||
|
||||
Locator.GetPlayerTransform().GetComponent<PlayerSpacesuit>().SuitUp(false, true, true);
|
||||
|
||||
// Make the ship act as if the player took the suit
|
||||
var spv = GameObject.Find("Ship_Body/Module_Supplies/Systems_Supplies/ExpeditionGear")?.GetComponent<SuitPickupVolume>();
|
||||
|
||||
if (spv == null) return;
|
||||
|
||||
spv._containsSuit = false;
|
||||
|
||||
if (spv._allowSuitReturn)
|
||||
{
|
||||
var spv = GameObject.Find("Ship_Body/Module_Supplies/Systems_Supplies/ExpeditionGear").GetComponent<SuitPickupVolume>();
|
||||
spv.SetValue("_containsSuit", false);
|
||||
|
||||
if (spv.GetValue<bool>("_allowSuitReturn"))
|
||||
spv.GetValue<MultipleInteractionVolume>("_interactVolume").ChangePrompt(UITextType.ReturnSuitPrompt, spv.GetValue<int>("_pickupSuitCommandIndex"));
|
||||
else
|
||||
spv.GetValue<MultipleInteractionVolume>("_interactVolume").EnableSingleInteraction(false, spv.GetValue<int>("_pickupSuitCommandIndex"));
|
||||
|
||||
Locator.GetPlayerTransform().GetComponent<PlayerSpacesuit>().SuitUp(false, true, true);
|
||||
|
||||
spv.SetValue("_timer", 0f);
|
||||
spv.SetValue("_index", 0);
|
||||
|
||||
GameObject suitGeometry = spv.GetValue<GameObject>("_suitGeometry");
|
||||
if (suitGeometry != null) suitGeometry.SetActive(false);
|
||||
|
||||
OWCollider suitOWCollider = spv.GetValue<OWCollider>("_suitOWCollider");
|
||||
if (suitOWCollider != null) suitOWCollider.SetActivation(false);
|
||||
|
||||
spv.enabled = true;
|
||||
spv._interactVolume.ChangePrompt(UITextType.ReturnSuitPrompt, spv._pickupSuitCommandIndex);
|
||||
}
|
||||
catch(Exception e)
|
||||
else
|
||||
{
|
||||
Logger.LogWarning($"Was unable to suit up player. {e.Message}, {e.StackTrace}");
|
||||
spv._interactVolume.EnableSingleInteraction(false, spv._pickupSuitCommandIndex);
|
||||
}
|
||||
|
||||
spv._timer = 0f;
|
||||
spv._index = 0;
|
||||
|
||||
GameObject suitGeometry = spv._suitGeometry;
|
||||
if (suitGeometry != null) suitGeometry.SetActive(false);
|
||||
|
||||
OWCollider suitOWCollider = spv._suitOWCollider;
|
||||
if (suitOWCollider != null) suitOWCollider.SetActivation(false);
|
||||
|
||||
spv.enabled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -73,9 +73,14 @@ namespace NewHorizons.Builder.Props
|
||||
foreach (var component in prop.GetComponents<Component>().Concat(prop.GetComponentsInChildren<Component>()))
|
||||
{
|
||||
// Enable all children or something
|
||||
var enabledField = component.GetType().GetField("enabled");
|
||||
var enabledField = component?.GetType()?.GetField("enabled");
|
||||
if (enabledField != null && enabledField.FieldType == typeof(bool)) Main.Instance.ModHelper.Events.Unity.FireOnNextUpdate(() => enabledField.SetValue(component, true));
|
||||
|
||||
if(component is Sector)
|
||||
{
|
||||
(component as Sector)._parentSector = sector;
|
||||
}
|
||||
|
||||
// TODO: Make this work or smthng
|
||||
if (component is GhostIK) (component as GhostIK).enabled = false;
|
||||
if (component is GhostEffects) (component as GhostEffects).enabled = false;
|
||||
@ -99,6 +104,11 @@ namespace NewHorizons.Builder.Props
|
||||
{
|
||||
(component as SectoredMonoBehaviour).SetSector(sector);
|
||||
}
|
||||
else
|
||||
{
|
||||
var sectorField = component?.GetType()?.GetField("_sector");
|
||||
if (sectorField != null && sectorField.FieldType == typeof(Sector)) Main.Instance.ModHelper.Events.Unity.FireOnNextUpdate(() => sectorField.SetValue(component, sector));
|
||||
}
|
||||
|
||||
if (component is AnglerfishController)
|
||||
{
|
||||
|
||||
@ -46,10 +46,17 @@ namespace NewHorizons.Builder.Props
|
||||
{
|
||||
foreach(var tornadoInfo in config.Props.Tornados)
|
||||
{
|
||||
//TornadoBuilder.Make(go, sector, tornadoInfo, config.Atmosphere?.Cloud != null);
|
||||
TornadoBuilder.Make(go, sector, tornadoInfo, config.Atmosphere?.Cloud != null);
|
||||
}
|
||||
}
|
||||
if(config.Props.Dialogue != null)
|
||||
if (config.Props.Volcanos != null)
|
||||
{
|
||||
foreach (var volcanoInfo in config.Props.Volcanos)
|
||||
{
|
||||
VolcanoBuilder.Make(go, sector, volcanoInfo);
|
||||
}
|
||||
}
|
||||
if (config.Props.Dialogue != null)
|
||||
{
|
||||
foreach(var dialogueInfo in config.Props.Dialogue)
|
||||
{
|
||||
|
||||
53
NewHorizons/Builder/Props/VolcanoBuilder.cs
Normal file
53
NewHorizons/Builder/Props/VolcanoBuilder.cs
Normal file
@ -0,0 +1,53 @@
|
||||
using NewHorizons.External;
|
||||
using NewHorizons.Utility;
|
||||
using UnityEngine;
|
||||
using Logger = NewHorizons.Utility.Logger;
|
||||
|
||||
namespace NewHorizons.Builder.Props
|
||||
{
|
||||
public static class VolcanoBuilder
|
||||
{
|
||||
private static Color defaultStoneTint = new Color(0.07450981f, 0.07450981f, 0.07450981f);
|
||||
private static Color defaultLavaTint = new Color(4.594794f, 0.3419145f, 0f, 1f);
|
||||
|
||||
public static void Make(GameObject go, Sector sector, PropModule.VolcanoInfo info)
|
||||
{
|
||||
var prefab = GameObject.Find("VolcanicMoon_Body/Sector_VM/Effects_VM/VolcanoPivot (2)/MeteorLauncher");
|
||||
|
||||
var launcherGO = prefab.InstantiateInactive();
|
||||
launcherGO.transform.parent = sector.transform;
|
||||
launcherGO.transform.localPosition = info.position == null ? Vector3.zero : (Vector3) info.position;
|
||||
launcherGO.name = "MeteorLauncher";
|
||||
|
||||
var meteorLauncher = launcherGO.GetComponent<MeteorLauncher>();
|
||||
meteorLauncher._dynamicMeteorPrefab = null;
|
||||
meteorLauncher._detectableFluid = null;
|
||||
meteorLauncher._detectableField = null;
|
||||
|
||||
meteorLauncher._launchDirection = info.position == null ? Vector3.up : ((Vector3)info.position).normalized;
|
||||
|
||||
var meteorPrefab = GameObject.Instantiate(meteorLauncher._meteorPrefab);
|
||||
FixMeteor(meteorPrefab, info);
|
||||
|
||||
meteorLauncher._meteorPrefab = meteorPrefab;
|
||||
|
||||
launcherGO.SetActive(true);
|
||||
|
||||
// Kill the prefab when its done with it
|
||||
Main.Instance.ModHelper.Events.Unity.FireOnNextUpdate(() => meteorPrefab.SetActive(false));
|
||||
}
|
||||
private static void FixMeteor(GameObject meteor, PropModule.VolcanoInfo info)
|
||||
{
|
||||
var mat = meteor.GetComponentInChildren<MeshRenderer>().material;
|
||||
mat.SetColor("_Color", info.stoneTint == null ? defaultStoneTint : info.stoneTint.ToColor());
|
||||
mat.SetColor("_EmissionColor", info.lavaTint == null ? defaultLavaTint : info.lavaTint.ToColor());
|
||||
|
||||
var detectors = meteor.transform.Find("ConstantDetectors");
|
||||
GameObject.Destroy(detectors.GetComponent<ConstantForceDetector>());
|
||||
GameObject.Destroy(detectors.GetComponent<ConstantFluidDetector>());
|
||||
|
||||
detectors.gameObject.AddComponent<DynamicForceDetector>();
|
||||
detectors.gameObject.AddComponent<DynamicFluidDetector>();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -102,7 +102,7 @@ namespace NewHorizons.Builder.ShipLog
|
||||
{
|
||||
const float unviewedIconOffset = 15;
|
||||
|
||||
GameObject unviewedReference = GameObject.Find(ShipLogHandler.PAN_ROOT_PATH + "/TimberHearth/UnviewedIcon");
|
||||
GameObject unviewedReference = SearchUtilities.CachedFind(ShipLogHandler.PAN_ROOT_PATH + "/TimberHearth/UnviewedIcon");
|
||||
|
||||
ShipLogAstroObject astroObject = gameObject.AddComponent<ShipLogAstroObject>();
|
||||
astroObject._id = ShipLogHandler.GetAstroObjectId(body);
|
||||
@ -244,7 +244,7 @@ namespace NewHorizons.Builder.ShipLog
|
||||
}
|
||||
else if (Main.Instance.CurrentStarSystem == "SolarSystem")
|
||||
{
|
||||
GameObject gameObject = GameObject.Find(ShipLogHandler.PAN_ROOT_PATH + "/" + name);
|
||||
GameObject gameObject = SearchUtilities.CachedFind(ShipLogHandler.PAN_ROOT_PATH + "/" + name);
|
||||
if (body.Config.Destroy || (body.Config.ShipLog?.mapMode?.remove ?? false))
|
||||
{
|
||||
ShipLogAstroObject astroObject = gameObject.GetComponent<ShipLogAstroObject>();
|
||||
@ -305,15 +305,15 @@ namespace NewHorizons.Builder.ShipLog
|
||||
public List<MapModeObject> children;
|
||||
public MapModeObject parent;
|
||||
public MapModeObject lastSibling;
|
||||
public void Increment_width()
|
||||
public void IncrementWidth()
|
||||
{
|
||||
branch_width++;
|
||||
parent?.Increment_width();
|
||||
parent?.IncrementWidth();
|
||||
}
|
||||
public void Increment_height()
|
||||
public void IncrementHeight()
|
||||
{
|
||||
branch_height++;
|
||||
parent?.Increment_height();
|
||||
parent?.IncrementHeight();
|
||||
}
|
||||
}
|
||||
|
||||
@ -416,12 +416,12 @@ namespace NewHorizons.Builder.ShipLog
|
||||
if (even)
|
||||
{
|
||||
newY += newNode.branch_height;
|
||||
parent.Increment_height();
|
||||
parent.IncrementHeight();
|
||||
}
|
||||
else
|
||||
{
|
||||
newX += newNode.branch_width;
|
||||
parent.Increment_width();
|
||||
parent.IncrementWidth();
|
||||
}
|
||||
|
||||
lastSibling = newNode;
|
||||
@ -488,7 +488,6 @@ namespace NewHorizons.Builder.ShipLog
|
||||
astroObject._imageObj.GetComponent<Image>().enabled = false;
|
||||
astroObject._outlineObj.GetComponent<Image>().enabled = false;
|
||||
astroObject._unviewedObj.GetComponent<Image>().enabled = false;
|
||||
astroObject.transform.localScale = node.lastSibling.astroObject.transform.localScale;
|
||||
}
|
||||
node.astroObject = astroObject;
|
||||
if (node.lastSibling != null) ConnectNodeToLastSibling(node, greyScaleMaterial);
|
||||
|
||||
39
NewHorizons/External/NewHorizonsData.cs
vendored
39
NewHorizons/External/NewHorizonsData.cs
vendored
@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using NewHorizons.Handlers;
|
||||
using Logger = NewHorizons.Utility.Logger;
|
||||
|
||||
namespace NewHorizons.External
|
||||
@ -59,12 +60,14 @@ namespace NewHorizons.External
|
||||
{
|
||||
Load();
|
||||
}
|
||||
Logger.Log($"Reseting save data for {_activeProfileName}");
|
||||
Logger.Log($"Resetting save data for {_activeProfileName}");
|
||||
_activeProfile = new NewHorizonsProfile();
|
||||
_saveFile.Profiles[_activeProfileName] = _activeProfile;
|
||||
|
||||
Save();
|
||||
}
|
||||
|
||||
# region Frequencies
|
||||
|
||||
public static bool KnowsFrequency(string frequency)
|
||||
{
|
||||
@ -81,7 +84,16 @@ namespace NewHorizons.External
|
||||
Save();
|
||||
}
|
||||
}
|
||||
|
||||
public static bool KnowsMultipleFrequencies()
|
||||
{
|
||||
return (_activeProfile != null && _activeProfile.KnownFrequencies.Count > 0);
|
||||
}
|
||||
|
||||
# endregion
|
||||
|
||||
# region Signals
|
||||
|
||||
public static bool KnowsSignal(string signal)
|
||||
{
|
||||
if (_activeProfile == null) return true;
|
||||
@ -97,12 +109,30 @@ namespace NewHorizons.External
|
||||
Save();
|
||||
}
|
||||
}
|
||||
|
||||
# endregion
|
||||
|
||||
# region Newly Revealed Facts
|
||||
|
||||
public static bool KnowsMultipleFrequencies()
|
||||
public static void AddNewlyRevealedFactID(string id)
|
||||
{
|
||||
return (_activeProfile != null && _activeProfile.KnownFrequencies.Count > 0);
|
||||
_activeProfile?.NewlyRevealedFactIDs.Add(id);
|
||||
Save();
|
||||
}
|
||||
|
||||
public static List<string> GetNewlyRevealedFactIDs()
|
||||
{
|
||||
return _activeProfile?.NewlyRevealedFactIDs;
|
||||
}
|
||||
|
||||
public static void ClearNewlyRevealedFactIDs()
|
||||
{
|
||||
_activeProfile?.NewlyRevealedFactIDs.Clear();
|
||||
Save();
|
||||
}
|
||||
|
||||
# endregion
|
||||
|
||||
private class NewHorizonsSaveFile
|
||||
{
|
||||
public NewHorizonsSaveFile()
|
||||
@ -119,10 +149,13 @@ namespace NewHorizons.External
|
||||
{
|
||||
KnownFrequencies = new List<string>();
|
||||
KnownSignals = new List<string>();
|
||||
NewlyRevealedFactIDs = new List<string>();
|
||||
}
|
||||
|
||||
public List<string> KnownFrequencies { get; set; }
|
||||
public List<string> KnownSignals { get; set; }
|
||||
|
||||
public List<string> NewlyRevealedFactIDs { get; set; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
8
NewHorizons/External/PropModule.cs
vendored
8
NewHorizons/External/PropModule.cs
vendored
@ -14,6 +14,7 @@ namespace NewHorizons.External
|
||||
public RaftInfo[] Rafts;
|
||||
public GeyserInfo[] Geysers;
|
||||
public TornadoInfo[] Tornados;
|
||||
public VolcanoInfo[] Volcanos;
|
||||
public DialogueInfo[] Dialogue;
|
||||
public RevealInfo[] Reveal;
|
||||
public EntryLocationInfo[] EntryLocation;
|
||||
@ -61,6 +62,13 @@ namespace NewHorizons.External
|
||||
public MColor tint;
|
||||
}
|
||||
|
||||
public class VolcanoInfo
|
||||
{
|
||||
public MVector3 position = null;
|
||||
public MColor stoneTint = null;
|
||||
public MColor lavaTint = null;
|
||||
}
|
||||
|
||||
public class DialogueInfo
|
||||
{
|
||||
public MVector3 position;
|
||||
|
||||
@ -128,8 +128,8 @@ namespace NewHorizons.Handlers
|
||||
if (body.Config.Destroy)
|
||||
{
|
||||
var ao = existingPlanet.GetComponent<AstroObject>();
|
||||
if (ao != null) Main.Instance.ModHelper.Events.Unity.FireInNUpdates(() => PlanetDestroyer.RemoveBody(ao), 1);
|
||||
else Main.Instance.ModHelper.Events.Unity.FireInNUpdates(() => existingPlanet.SetActive(false), 1);
|
||||
if (ao != null) Main.Instance.ModHelper.Events.Unity.FireInNUpdates(() => PlanetDestroyer.RemoveBody(ao), 2);
|
||||
else Main.Instance.ModHelper.Events.Unity.FireInNUpdates(() => existingPlanet.SetActive(false), 2);
|
||||
}
|
||||
else UpdateBody(body, existingPlanet);
|
||||
}
|
||||
|
||||
@ -23,8 +23,9 @@ namespace NewHorizons.Handlers
|
||||
// NewHorizonsBody -> AstroID
|
||||
private static Dictionary<NewHorizonsBody, string> _nhBodyToAstroIDs;
|
||||
|
||||
private static string[] vanillaBodies;
|
||||
private static string[] vanillaIDs;
|
||||
private static string[] _vanillaBodies;
|
||||
private static string[] _vanillaBodyIDs;
|
||||
private static string[] _moddedFactsIDs;
|
||||
|
||||
public static void Init()
|
||||
{
|
||||
@ -33,13 +34,19 @@ namespace NewHorizons.Handlers
|
||||
_nhBodyToAstroIDs = new Dictionary<NewHorizonsBody, string>();
|
||||
|
||||
List<GameObject> gameObjects = SearchUtilities.GetAllChildren(GameObject.Find(PAN_ROOT_PATH));
|
||||
vanillaBodies = gameObjects.ConvertAll(g => g.name).ToArray();
|
||||
vanillaIDs = gameObjects.ConvertAll(g => g.GetComponent<ShipLogAstroObject>()?.GetID()).ToArray();
|
||||
_vanillaBodies = gameObjects.ConvertAll(g => g.name).ToArray();
|
||||
_vanillaBodyIDs = gameObjects.ConvertAll(g => g.GetComponent<ShipLogAstroObject>()?.GetID()).ToArray();
|
||||
}
|
||||
|
||||
public static void CheckForModdedFacts(ShipLogManager manager)
|
||||
{
|
||||
List<ShipLogFact> moddedFacts = manager._factList.Where(e => manager._entryDataDict.ContainsKey(e._entryID) == false).ToList();
|
||||
_moddedFactsIDs = moddedFacts.ConvertAll(e => e.GetID()).ToArray();
|
||||
}
|
||||
|
||||
public static bool IsVanillaAstroID(string astroId)
|
||||
{
|
||||
return vanillaIDs.Contains(astroId);
|
||||
return _vanillaBodyIDs.Contains(astroId);
|
||||
}
|
||||
|
||||
public static bool IsVanillaBody(NewHorizonsBody body)
|
||||
@ -48,7 +55,7 @@ namespace NewHorizons.Handlers
|
||||
if (existingBody != null && existingBody.GetAstroObjectName() != AstroObject.Name.CustomString)
|
||||
return true;
|
||||
|
||||
return vanillaBodies.Contains(body.Config.Name.Replace(" ", ""));
|
||||
return _vanillaBodies.Contains(body.Config.Name.Replace(" ", ""));
|
||||
}
|
||||
|
||||
public static string GetNameFromAstroID(string astroID)
|
||||
@ -66,6 +73,11 @@ namespace NewHorizons.Handlers
|
||||
}
|
||||
}
|
||||
|
||||
public static bool IsModdedFact(string FactID)
|
||||
{
|
||||
return _moddedFactsIDs.Contains(FactID);
|
||||
}
|
||||
|
||||
public static void AddConfig(string astroID, List<string> entryIDs, NewHorizonsBody body)
|
||||
{
|
||||
// Nice to be able to just get the AstroID from the body
|
||||
|
||||
@ -140,5 +140,12 @@ namespace NewHorizons.Handlers
|
||||
|
||||
return key;
|
||||
}
|
||||
|
||||
public static void ClearTables()
|
||||
{
|
||||
_shipLogTranslationDictionary.Clear();
|
||||
_dialogueTranslationDictionary.Clear();
|
||||
_uiTranslationDictionary.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -150,6 +150,8 @@ namespace NewHorizons
|
||||
void OnSceneLoaded(Scene scene, LoadSceneMode mode)
|
||||
{
|
||||
Logger.Log($"Scene Loaded: {scene.name} {mode}");
|
||||
|
||||
SearchUtilities.ClearCache();
|
||||
|
||||
_isChangingStarSystem = false;
|
||||
|
||||
@ -418,6 +420,19 @@ namespace NewHorizons
|
||||
{
|
||||
return Main.Instance.OnStarSystemLoaded;
|
||||
}
|
||||
|
||||
public bool ChangeCurrentStarSystem(string name)
|
||||
{
|
||||
if (!Main.SystemDict.ContainsKey(name)) return false;
|
||||
|
||||
Main.Instance.ChangeCurrentStarSystem(name);
|
||||
return true;
|
||||
}
|
||||
|
||||
public string[] GetInstalledAddons()
|
||||
{
|
||||
return Main.MountedAddons.Select(x => x.ModHelper.Manifest.UniqueName).ToArray();
|
||||
}
|
||||
}
|
||||
#endregion API
|
||||
}
|
||||
|
||||
@ -55,6 +55,14 @@ namespace NewHorizons.Tools
|
||||
var playerDataResetGame = typeof(PlayerData).GetMethod("ResetGame");
|
||||
Main.Instance.ModHelper.HarmonyHelper.AddPostfix(playerDataResetGame, typeof(Patches), nameof(Patches.OnPlayerDataResetGame));
|
||||
|
||||
var playerDataAddNewlyRevealedFactID = typeof(PlayerData).GetMethod("AddNewlyRevealedFactID");
|
||||
Main.Instance.ModHelper.HarmonyHelper.AddPrefix(playerDataAddNewlyRevealedFactID, typeof(Patches), nameof(Patches.OnPlayerDataAddNewlyRevealedFactID));
|
||||
var playerDataGetNewlyRevealedFactIDs = typeof(PlayerData).GetMethod("GetNewlyRevealedFactIDs");
|
||||
Main.Instance.ModHelper.HarmonyHelper.AddPrefix(playerDataGetNewlyRevealedFactIDs, typeof(Patches), nameof(Patches.OnPlayerDataGetNewlyRevealedFactIDs));
|
||||
var playerDataClearNewlyRevealedFactIDs = typeof(PlayerData).GetMethod("ClearNewlyRevealedFactIDs");
|
||||
Main.Instance.ModHelper.HarmonyHelper.AddPrefix(playerDataClearNewlyRevealedFactIDs, typeof(Patches), nameof(Patches.OnPlayerDataClearNewlyRevealedFactIDs));
|
||||
|
||||
|
||||
Main.Instance.ModHelper.HarmonyHelper.AddPrefix<BlackHoleVolume>("Start", typeof(Patches), nameof(Patches.OnBlackHoleVolumeStart));
|
||||
Main.Instance.ModHelper.HarmonyHelper.AddPrefix<WhiteHoleVolume>("Awake", typeof(Patches), nameof(Patches.OnWhiteHoleVolumeAwake));
|
||||
Main.Instance.ModHelper.HarmonyHelper.AddPrefix<ProbeLauncher>("UpdateOrbitalLaunchValues", typeof(Patches), nameof(Patches.OnProbeLauncherUpdateOrbitalLaunchValues));
|
||||
@ -310,6 +318,32 @@ namespace NewHorizons.Tools
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static bool OnPlayerDataAddNewlyRevealedFactID(string __0)
|
||||
{
|
||||
if (ShipLogHandler.IsModdedFact(__0))
|
||||
{
|
||||
NewHorizonsData.AddNewlyRevealedFactID(__0);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool OnPlayerDataGetNewlyRevealedFactIDs(ref List<string> __result)
|
||||
{
|
||||
__result = PlayerData._currentGameSave.newlyRevealedFactIDs.Concat(NewHorizonsData.GetNewlyRevealedFactIDs()).ToList();
|
||||
return false;
|
||||
}
|
||||
|
||||
public static bool OnPlayerDataClearNewlyRevealedFactIDs()
|
||||
{
|
||||
PlayerData._currentGameSave.newlyRevealedFactIDs.Clear();
|
||||
NewHorizonsData.ClearNewlyRevealedFactIDs();
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void OnPlayerDataResetGame()
|
||||
{
|
||||
|
||||
@ -66,6 +66,7 @@ namespace NewHorizons.Tools
|
||||
|
||||
public static void OnShipLogManagerAwakeComplete(ShipLogManager __instance)
|
||||
{
|
||||
ShipLogHandler.CheckForModdedFacts(__instance);
|
||||
RumorModeBuilder.GenerateEntryData(__instance);
|
||||
for (var i = 0; i < __instance._entryList.Count; i++)
|
||||
{
|
||||
|
||||
@ -41,6 +41,7 @@ namespace NewHorizons.Utility
|
||||
bundle.Unload(true);
|
||||
}
|
||||
Main.AssetBundles.Clear();
|
||||
TranslationHandler.ClearTables();
|
||||
|
||||
Logger.Log("Begin reload of config files...", Logger.LogType.Log);
|
||||
|
||||
|
||||
@ -10,6 +10,30 @@ namespace NewHorizons.Utility
|
||||
{
|
||||
public static class SearchUtilities
|
||||
{
|
||||
private static readonly Dictionary<string, GameObject> CachedGameObjects = new Dictionary<string, GameObject>();
|
||||
|
||||
public static void ClearCache()
|
||||
{
|
||||
CachedGameObjects.Clear();
|
||||
}
|
||||
|
||||
public static GameObject CachedFind(string path)
|
||||
{
|
||||
if (CachedGameObjects.ContainsKey(path))
|
||||
{
|
||||
return CachedGameObjects[path];
|
||||
}
|
||||
else
|
||||
{
|
||||
GameObject foundObject = GameObject.Find(path);
|
||||
if (foundObject != null)
|
||||
{
|
||||
CachedGameObjects.Add(path, foundObject);
|
||||
}
|
||||
return foundObject;
|
||||
}
|
||||
}
|
||||
|
||||
public static List<T> FindObjectsOfTypeAndName<T>(string name) where T : Object
|
||||
{
|
||||
T[] firstList = GameObject.FindObjectsOfType<T>();
|
||||
@ -99,6 +123,10 @@ namespace NewHorizons.Utility
|
||||
|
||||
public static GameObject Find(string path)
|
||||
{
|
||||
if (CachedGameObjects.ContainsKey(path))
|
||||
{
|
||||
return CachedGameObjects[path];
|
||||
}
|
||||
try
|
||||
{
|
||||
var go = GameObject.Find(path);
|
||||
@ -155,6 +183,11 @@ namespace NewHorizons.Utility
|
||||
go = FindObjectOfTypeAndName<GameObject>(name);
|
||||
}
|
||||
|
||||
if (go != null)
|
||||
{
|
||||
CachedGameObjects.Add(path, go);
|
||||
}
|
||||
|
||||
return go;
|
||||
}
|
||||
catch(Exception)
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
"author": "xen, Idiot, & Book",
|
||||
"name": "New Horizons",
|
||||
"uniqueName": "xen.NewHorizons",
|
||||
"version": "0.10.0",
|
||||
"version": "0.10.1",
|
||||
"owmlVersion": "2.1.0",
|
||||
"dependencies": [ "PacificEngine.OW_CommonResources" ],
|
||||
"conflicts": [ "Raicuparta.QuantumSpaceBuddies", "Vesper.OuterWildsMMO", "Vesper.AutoResume" ],
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user