mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
Add interference volume
This commit is contained in:
parent
a1e39303e4
commit
26c78e59d3
@ -57,6 +57,13 @@ namespace NewHorizons.Builder.Volumes
|
||||
VolumeBuilder.Make<MapRestrictionVolume>(go, sector, mapRestrictionVolume);
|
||||
}
|
||||
}
|
||||
if (config.Volumes.interferenceVolumes != null)
|
||||
{
|
||||
foreach (var interferenceVolume in config.Volumes.interferenceVolumes)
|
||||
{
|
||||
VolumeBuilder.Make<Components.InterferenceVolume>(go, sector, interferenceVolume);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
37
NewHorizons/Components/InterferenceVolume.cs
Normal file
37
NewHorizons/Components/InterferenceVolume.cs
Normal file
@ -0,0 +1,37 @@
|
||||
using NewHorizons.Handlers;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
|
||||
namespace NewHorizons.Components
|
||||
{
|
||||
public class InterferenceVolume : BaseVolume
|
||||
{
|
||||
public override void OnTriggerVolumeEntry(GameObject hitObj)
|
||||
{
|
||||
if (hitObj.CompareTag("PlayerDetector"))
|
||||
{
|
||||
InterferenceHandler.OnPlayerEnterInterferenceVolume();
|
||||
}
|
||||
else if (hitObj.CompareTag("ProbeDetector"))
|
||||
{
|
||||
InterferenceHandler.OnProbeEnterInterferenceVolume();
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnTriggerVolumeExit(GameObject hitObj)
|
||||
{
|
||||
if (hitObj.CompareTag("PlayerDetector"))
|
||||
{
|
||||
InterferenceHandler.OnPlayerExitInterferenceVolume();
|
||||
}
|
||||
else if (hitObj.CompareTag("ProbeDetector"))
|
||||
{
|
||||
InterferenceHandler.OnProbeExitInterferenceVolume();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -24,6 +24,11 @@ namespace NewHorizons.External.Modules
|
||||
/// </summary>
|
||||
public HazardVolumeInfo[] hazardVolumes;
|
||||
|
||||
/// <summary>
|
||||
/// Add interference volumes to this planet
|
||||
/// </summary>
|
||||
public VolumeInfo[] interferenceVolumes;
|
||||
|
||||
/// <summary>
|
||||
/// Add map restriction volumes to this planet
|
||||
/// </summary>
|
||||
|
||||
23
NewHorizons/Handlers/InterferenceHandler.cs
Normal file
23
NewHorizons/Handlers/InterferenceHandler.cs
Normal file
@ -0,0 +1,23 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace NewHorizons.Handlers
|
||||
{
|
||||
public static class InterferenceHandler
|
||||
{
|
||||
public static bool _playerInterference;
|
||||
public static bool _probeInterference;
|
||||
|
||||
public static bool PlayerHasInterference() => _playerInterference;
|
||||
public static bool ProbeHasInterference() => _probeInterference;
|
||||
|
||||
public static void OnPlayerEnterInterferenceVolume() => _playerInterference = true;
|
||||
public static void OnPlayerExitInterferenceVolume() => _playerInterference = false;
|
||||
|
||||
public static void OnProbeEnterInterferenceVolume() => _probeInterference = true;
|
||||
public static void OnProbeExitInterferenceVolume() => _probeInterference = false;
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,5 @@
|
||||
using HarmonyLib;
|
||||
using NewHorizons.Handlers;
|
||||
|
||||
namespace NewHorizons.Patches
|
||||
{
|
||||
@ -57,7 +58,7 @@ namespace NewHorizons.Patches
|
||||
[HarmonyPatch(typeof(ProbeCamera), nameof(ProbeCamera.HasInterference))]
|
||||
public static void ProbeCamera_HasInterference(ProbeCamera __instance, ref bool __result)
|
||||
{
|
||||
__result = __result || Components.CloakSectorController.isPlayerInside != Components.CloakSectorController.isProbeInside;
|
||||
__result = __result || (__instance._id != ProbeCamera.ID.PreLaunch && (Components.CloakSectorController.isPlayerInside != Components.CloakSectorController.isProbeInside || InterferenceHandler.PlayerHasInterference() != InterferenceHandler.ProbeHasInterference()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user