mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-02-28 03:40:01 +00:00
fix some orb stuff, flicker out shuttle when it launches for people not in it
This commit is contained in:
parent
12e35e3b86
commit
6514fb85ed
@ -1,6 +1,5 @@
|
||||
using QSB.Messaging;
|
||||
using QSB.Player.TransformSync;
|
||||
using QSB.Utility;
|
||||
using QSB.WorldSync;
|
||||
using QuantumUNET.Transport;
|
||||
using System;
|
||||
@ -10,10 +9,18 @@ namespace QSB.EyeOfTheUniverse.EyeStateSync.Messages
|
||||
{
|
||||
internal class FlickerMessage : QSBMessage
|
||||
{
|
||||
public static bool IgnoreNextMessage;
|
||||
|
||||
static FlickerMessage() => GlobalMessenger<float, float>.AddListener(OWEvents.FlickerOffAndOn, Handler);
|
||||
|
||||
private static void Handler(float offDuration, float onDuration)
|
||||
{
|
||||
if (IgnoreNextMessage)
|
||||
{
|
||||
IgnoreNextMessage = false;
|
||||
return;
|
||||
}
|
||||
|
||||
if (PlayerTransformSync.LocalInstance)
|
||||
{
|
||||
new FlickerMessage(offDuration, onDuration).Send();
|
||||
|
@ -1,7 +1,7 @@
|
||||
using QSB.Messaging;
|
||||
using QSB.EyeOfTheUniverse.EyeStateSync.Messages;
|
||||
using QSB.Messaging;
|
||||
using QSB.Player;
|
||||
using QSB.Player.Messages;
|
||||
using QSB.Utility;
|
||||
using QSB.WorldSync;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@ -15,6 +15,8 @@ namespace QSB.EyeOfTheUniverse.MaskSync
|
||||
|
||||
private readonly List<PlayerInfo> _playersInZone = new();
|
||||
private MaskZoneController _controller;
|
||||
private bool _flickering;
|
||||
private float _flickerOutTime;
|
||||
|
||||
public override WorldObjectType WorldObjectType => WorldObjectType.Eye;
|
||||
|
||||
@ -70,8 +72,6 @@ namespace QSB.EyeOfTheUniverse.MaskSync
|
||||
|
||||
public void Enter(PlayerInfo player)
|
||||
{
|
||||
DebugLog.DebugWrite($"{player.PlayerId} enter mask zone");
|
||||
|
||||
if (_playersInZone.Count == 0)
|
||||
{
|
||||
_controller._whiteSphere.SetActive(true);
|
||||
@ -86,8 +86,6 @@ namespace QSB.EyeOfTheUniverse.MaskSync
|
||||
|
||||
public void Exit(PlayerInfo player)
|
||||
{
|
||||
DebugLog.DebugWrite($"{player.PlayerId} exit mask zone");
|
||||
|
||||
_playersInZone.Remove(player);
|
||||
|
||||
if (_playersInZone.Count == 0 && !_controller._shuttle.HasLaunched())
|
||||
@ -99,5 +97,24 @@ namespace QSB.EyeOfTheUniverse.MaskSync
|
||||
_controller.enabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
public void FlickerOutShuttle()
|
||||
{
|
||||
FlickerMessage.IgnoreNextMessage = true;
|
||||
GlobalMessenger<float, float>.FireEvent("FlickerOffAndOn", 0.5f, 0.5f);
|
||||
_flickerOutTime = Time.time + 0.5f;
|
||||
_flickering = true;
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (_flickering && Time.time > _flickerOutTime)
|
||||
{
|
||||
var controller = QSBWorldSync.GetUnityObjects<EyeShuttleController>().First();
|
||||
controller._shuttleObject.SetActive(false);
|
||||
_flickering = false;
|
||||
_flickerOutTime = 0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
26
QSB/EyeOfTheUniverse/MaskSync/Patches/MaskPatches.cs
Normal file
26
QSB/EyeOfTheUniverse/MaskSync/Patches/MaskPatches.cs
Normal file
@ -0,0 +1,26 @@
|
||||
using HarmonyLib;
|
||||
using QSB.Patches;
|
||||
using QSB.Utility;
|
||||
|
||||
namespace QSB.EyeOfTheUniverse.MaskSync.Patches
|
||||
{
|
||||
internal class MaskPatches : QSBPatch
|
||||
{
|
||||
public override QSBPatchTypes Type => QSBPatchTypes.OnClientConnect;
|
||||
|
||||
[HarmonyPrefix]
|
||||
[HarmonyPatch(typeof(EyeShuttleController), nameof(EyeShuttleController.OnLaunchSlotActivated))]
|
||||
public static bool DontLaunch(EyeShuttleController __instance)
|
||||
{
|
||||
if (__instance._isPlayerInside)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
MaskManager.Instance.FlickerOutShuttle();
|
||||
__instance.enabled = false;
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
@ -59,12 +59,14 @@ namespace QSB.OrbSync.TransformSync
|
||||
_attachedBody = AttachedObject.GetAttachedOWRigidbody();
|
||||
SetReferenceTransform(_attachedBody.GetOrigParent());
|
||||
|
||||
/*
|
||||
if (_attachedBody.GetOrigParent() == Locator.GetRootTransform())
|
||||
{
|
||||
DebugLog.DebugWrite($"{LogName} with AttachedObject {AttachedObject.name} had it's original parent as SolarSystemRoot - Disabling...");
|
||||
enabled = false;
|
||||
return;
|
||||
}
|
||||
*/
|
||||
|
||||
if (QSBCore.IsHost)
|
||||
{
|
||||
|
@ -157,12 +157,20 @@ namespace QSB.Syncs
|
||||
return;
|
||||
}
|
||||
|
||||
if (ReferenceTransform != null && ReferenceTransform.position == Vector3.zero)
|
||||
if (!AttachedObject.gameObject.activeInHierarchy && !IgnoreDisabledAttachedObject)
|
||||
{
|
||||
DebugLog.ToConsole($"Warning - {LogName}'s ReferenceTransform is at (0,0,0). ReferenceTransform:{ReferenceTransform.name}, AttachedObject:{AttachedObject.name}", MessageType.Warning);
|
||||
base.Update();
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ReferenceTransform != null && ReferenceTransform.position == Vector3.zero && ReferenceTransform != Locator.GetRootTransform())
|
||||
{
|
||||
DebugLog.ToConsole($"Warning - {LogName}'s ReferenceTransform is at (0,0,0). ReferenceTransform:{ReferenceTransform.name}, AttachedObject:{AttachedObject.name}", MessageType.Warning);
|
||||
}
|
||||
}
|
||||
|
||||
if (!AttachedObject.gameObject.activeInHierarchy && !IgnoreDisabledAttachedObject)
|
||||
if (ReferenceTransform == Locator.GetRootTransform())
|
||||
{
|
||||
base.Update();
|
||||
return;
|
||||
|
Loading…
x
Reference in New Issue
Block a user