Merge pull request #455 from misternebula/fixes

Fixes
This commit is contained in:
_nebula 2022-01-16 10:25:52 +00:00 committed by GitHub
commit 8caeb3da66
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 47 additions and 19 deletions

View File

@ -1,4 +1,4 @@
using QSB.Player;
using QSB.EyeOfTheUniverse.MaskSync;
using QSB.WorldSync;
using System.Linq;
@ -8,14 +8,21 @@ namespace QSB.EyeOfTheUniverse.InstrumentSync.WorldObjects
{
public void Gather()
{
AttachedObject.Gather();
var maskZoneController = QSBWorldSync.GetUnityObjects<MaskZoneController>().First();
if (maskZoneController._maskInstrument == AttachedObject)
{
// remote gathering solanum mask - make all players visible
QSBPlayerManager.ShowAllPlayers();
var shuttleController = QSBWorldSync.GetUnityObjects<EyeShuttleController>().First();
foreach (var player in MaskManager.WentOnSolanumsWildRide)
{
player.DitheringAnimator.SetVisible(true, 0.5f);
}
maskZoneController._whiteSphere.SetActive(false);
shuttleController._maskObject.SetActive(true);
}
AttachedObject.Gather();
}
}
}

View File

@ -3,6 +3,7 @@ using QSB.Messaging;
using QSB.Player;
using QSB.Utility;
using QSB.WorldSync;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
@ -13,6 +14,8 @@ namespace QSB.EyeOfTheUniverse.MaskSync
private static bool _flickering;
private static float _flickerOutTime;
public static List<PlayerInfo> WentOnSolanumsWildRide = new();
public void Awake() => QSBSceneManager.OnSceneLoaded += OnSceneLoaded;
private static void OnSceneLoaded(OWScene oldScene, OWScene newScene, bool inUniverse)

View File

@ -1,5 +1,9 @@
using HarmonyLib;
using QSB.Patches;
using QSB.Player;
using QSB.Utility;
using System.Linq;
using UnityEngine;
namespace QSB.EyeOfTheUniverse.MaskSync.Patches
{
@ -11,12 +15,37 @@ namespace QSB.EyeOfTheUniverse.MaskSync.Patches
[HarmonyPatch(typeof(EyeShuttleController), nameof(EyeShuttleController.OnLaunchSlotActivated))]
public static bool DontLaunch(EyeShuttleController __instance)
{
QSBPlayerManager.PlayerList.Where(x => x.IsInEyeShuttle).ForEach(x => MaskManager.WentOnSolanumsWildRide.Add(x));
if (__instance._isPlayerInside)
{
return true;
}
MaskManager.FlickerOutShuttle();
__instance._hasLaunched = true;
__instance._hasArrivedAtMask = true;
__instance._hasPlayedOneShot = true;
__instance.enabled = false;
return false;
}
[HarmonyPrefix]
[HarmonyPatch(typeof(MaskZoneController), nameof(MaskZoneController.OnFinishGather))]
public static bool FinishGather(MaskZoneController __instance)
{
__instance._shuttle.OnFinishGather();
if (MaskManager.WentOnSolanumsWildRide.Contains(QSBPlayerManager.LocalPlayer))
{
Locator.GetPlayerBody().SetPosition(__instance._returnSocket.position);
Locator.GetPlayerBody().SetRotation(__instance._returnSocket.rotation);
Locator.GetPlayerBody().SetVelocity(Vector3.zero);
var component = Locator.GetPlayerCamera().GetComponent<PlayerCameraController>();
component.SetDegreesY(component.GetMinDegreesY());
}
__instance.enabled = false;
return false;

View File

@ -15,6 +15,7 @@ namespace QSB.TriggerSync
QSBWorldSync.Init<QSBVesselCageTrigger, VesselWarpController>(x => x._cageTrigger);
QSBWorldSync.Init<QSBInflationTrigger, CosmicInflationController>(x => x._smokeSphereTrigger);
QSBWorldSync.Init<QSBMaskZoneTrigger, MaskZoneController>(x => x._maskZoneTrigger);
QSBWorldSync.Init<QSBEyeShuttleTrigger, EyeShuttleController>(x => x._shuttleVolume);
}
}
}

View File

@ -4,13 +4,6 @@ namespace QSB.TriggerSync.WorldObjects
{
public class QSBEyeShuttleTrigger : QSBTrigger<EyeShuttleController>
{
public override void Init()
{
base.Init();
AttachedObject.OnEntry -= TriggerOwner.OnEnterShuttle;
AttachedObject.OnExit -= TriggerOwner.OnExitShuttle;
}
protected override void OnEnter(PlayerInfo player)
=> player.IsInEyeShuttle = true;

View File

@ -1,5 +1,4 @@
using QSB.Player;
using QSB.Utility;
using UnityEngine;
namespace QSB.TriggerSync.WorldObjects
@ -12,6 +11,7 @@ namespace QSB.TriggerSync.WorldObjects
{
base.Init();
AttachedObject.OnEntry -= TriggerOwner.OnEnterFogSphere;
AttachedObject.OnExit -= OnExitEvent;
}
protected override void OnEnter(PlayerInfo player)
@ -28,8 +28,6 @@ namespace QSB.TriggerSync.WorldObjects
AttachedObject.SetTriggerActivation(false);
TriggerOwner._probeDestroyTrigger.SetTriggerActivation(false);
DebugLog.DebugWrite("disable input, wait for other players to enter");
var repelVolume = (WhiteHoleFluidVolume)TriggerOwner._repelVolume;
repelVolume._flowSpeed = -repelVolume._flowSpeed;
repelVolume._massiveFlowSpeed = -repelVolume._massiveFlowSpeed;
@ -43,7 +41,6 @@ namespace QSB.TriggerSync.WorldObjects
}
else
{
DebugLog.DebugWrite($"fade out player {player.PlayerId}");
player.DitheringAnimator.SetVisible(false, 3);
}
@ -67,8 +64,6 @@ namespace QSB.TriggerSync.WorldObjects
private void StartCollapse()
{
DebugLog.DebugWrite("fade in everyone, fog sphere collapse");
var repelVolume = (WhiteHoleFluidVolume)TriggerOwner._repelVolume;
repelVolume.SetVolumeActivation(false);
QSBPlayerManager.ShowAllPlayers();

View File

@ -13,7 +13,7 @@ namespace QSB.TriggerSync.WorldObjects
protected override void OnEnter(PlayerInfo player)
{
if (Occupants.Count == 1)
if (Occupants.Count == 1 && !TriggerOwner._shuttle.HasLaunched())
{
TriggerOwner._whiteSphere.SetActive(true);
TriggerOwner._groundSignal.SetSignalActivation(false);