mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-02-22 21:40:39 +00:00
oops
This commit is contained in:
parent
2eda59044d
commit
2a339daf54
84
QSB/EyeOfTheUniverse/CosmicInflation/InflationManager.cs
Normal file
84
QSB/EyeOfTheUniverse/CosmicInflation/InflationManager.cs
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
using QSB.Messaging;
|
||||||
|
using QSB.Player;
|
||||||
|
using QSB.Player.Messages;
|
||||||
|
using QSB.WorldSync;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace QSB.EyeOfTheUniverse.CosmicInflation
|
||||||
|
{
|
||||||
|
internal class InflationManager : WorldObjectManager
|
||||||
|
{
|
||||||
|
public static InflationManager Instance { get; private set; }
|
||||||
|
|
||||||
|
private readonly List<PlayerInfo> _playersInFog = new();
|
||||||
|
private CosmicInflationController _controller;
|
||||||
|
|
||||||
|
public override WorldObjectType WorldObjectType => WorldObjectType.Eye;
|
||||||
|
|
||||||
|
public override void Awake()
|
||||||
|
{
|
||||||
|
base.Awake();
|
||||||
|
Instance = this;
|
||||||
|
|
||||||
|
QSBPlayerManager.OnRemovePlayer += OnPlayerLeave;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnPlayerLeave(uint id)
|
||||||
|
{
|
||||||
|
_playersInFog.Remove(QSBPlayerManager.GetPlayer(id));
|
||||||
|
|
||||||
|
// wait 1 frame since that's when player list will actually be updated
|
||||||
|
QSBCore.UnityEvents.FireOnNextUpdate(() =>
|
||||||
|
{
|
||||||
|
if (_playersInFog.Count == QSBPlayerManager.PlayerList.Count)
|
||||||
|
{
|
||||||
|
StartCollapse();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void RebuildWorldObjects(OWScene scene)
|
||||||
|
{
|
||||||
|
_playersInFog.Clear();
|
||||||
|
|
||||||
|
if (_controller != null)
|
||||||
|
{
|
||||||
|
_controller._smokeSphereTrigger.OnEntry -= OnEntry;
|
||||||
|
}
|
||||||
|
|
||||||
|
_controller = FindObjectOfType<CosmicInflationController>();
|
||||||
|
_controller._smokeSphereTrigger.OnEntry += _controller.OnEnterFogSphere;
|
||||||
|
|
||||||
|
_controller._smokeSphereTrigger.OnEntry += OnEntry;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnEntry(GameObject hitObj)
|
||||||
|
{
|
||||||
|
if (hitObj.CompareTag("PlayerCameraDetector") && _controller._state == CosmicInflationController.State.ReadyToCollapse)
|
||||||
|
{
|
||||||
|
_controller._smokeSphereTrigger.SetTriggerActivation(false);
|
||||||
|
_controller._probeDestroyTrigger.SetTriggerActivation(false);
|
||||||
|
new EnterLeaveMessage(EnterLeaveType.EnterCosmicFog).Send();
|
||||||
|
|
||||||
|
// the pausing and stuff happens here
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void Enter(PlayerInfo player)
|
||||||
|
{
|
||||||
|
_playersInFog.Add(player);
|
||||||
|
|
||||||
|
if (_playersInFog.Count == QSBPlayerManager.PlayerList.Count)
|
||||||
|
{
|
||||||
|
StartCollapse();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void StartCollapse()
|
||||||
|
{
|
||||||
|
// the actual collapsing happens here
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -14,6 +14,8 @@ namespace QSB.EyeOfTheUniverse.CosmicInflation.Patches
|
|||||||
[HarmonyPatch(typeof(CosmicInflationController), nameof(CosmicInflationController.OnEnterFogSphere))]
|
[HarmonyPatch(typeof(CosmicInflationController), nameof(CosmicInflationController.OnEnterFogSphere))]
|
||||||
public static bool OnEnterFogSphere(CosmicInflationController __instance, GameObject obj)
|
public static bool OnEnterFogSphere(CosmicInflationController __instance, GameObject obj)
|
||||||
{
|
{
|
||||||
|
return true; // remove this patch later lol
|
||||||
|
|
||||||
if (obj.CompareTag("PlayerCameraDetector") && __instance._state == CosmicInflationController.State.ReadyToCollapse)
|
if (obj.CompareTag("PlayerCameraDetector") && __instance._state == CosmicInflationController.State.ReadyToCollapse)
|
||||||
{
|
{
|
||||||
__instance._smokeSphereTrigger.SetTriggerActivation(false);
|
__instance._smokeSphereTrigger.SetTriggerActivation(false);
|
||||||
|
@ -24,6 +24,8 @@ namespace QSB.EyeOfTheUniverse.VesselSync
|
|||||||
|
|
||||||
protected override void RebuildWorldObjects(OWScene scene)
|
protected override void RebuildWorldObjects(OWScene scene)
|
||||||
{
|
{
|
||||||
|
_playersInCage.Clear();
|
||||||
|
|
||||||
if (_warpController != null)
|
if (_warpController != null)
|
||||||
{
|
{
|
||||||
_warpController._cageTrigger.OnEntry -= OnEntry;
|
_warpController._cageTrigger.OnEntry -= OnEntry;
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
EnterNomaiHeadZone = 10,
|
EnterNomaiHeadZone = 10,
|
||||||
ExitNomaiHeadZone = 11,
|
ExitNomaiHeadZone = 11,
|
||||||
EnterVesselCage = 12,
|
EnterVesselCage = 12,
|
||||||
ExitVesselCage = 13
|
ExitVesselCage = 13,
|
||||||
|
EnterCosmicFog = 14,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
using OWML.Common;
|
using OWML.Common;
|
||||||
using QSB.Animation.NPC.WorldObjects;
|
using QSB.Animation.NPC.WorldObjects;
|
||||||
|
using QSB.EyeOfTheUniverse.CosmicInflation;
|
||||||
using QSB.EyeOfTheUniverse.VesselSync;
|
using QSB.EyeOfTheUniverse.VesselSync;
|
||||||
using QSB.Messaging;
|
using QSB.Messaging;
|
||||||
using QSB.Player.TransformSync;
|
using QSB.Player.TransformSync;
|
||||||
@ -103,6 +104,9 @@ namespace QSB.Player.Messages
|
|||||||
case EnterLeaveType.ExitVesselCage:
|
case EnterLeaveType.ExitVesselCage:
|
||||||
VesselManager.Instance.Exit(player);
|
VesselManager.Instance.Exit(player);
|
||||||
break;
|
break;
|
||||||
|
case EnterLeaveType.EnterCosmicFog:
|
||||||
|
InflationManager.Instance.Enter(player);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
DebugLog.ToConsole($"Warning - Unknown EnterLeaveType : {Value}", MessageType.Warning);
|
DebugLog.ToConsole($"Warning - Unknown EnterLeaveType : {Value}", MessageType.Warning);
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user