mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-02-28 12:40:28 +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.Messaging;
|
||||||
using QSB.Player.TransformSync;
|
using QSB.Player.TransformSync;
|
||||||
using QSB.Utility;
|
|
||||||
using QSB.WorldSync;
|
using QSB.WorldSync;
|
||||||
using QuantumUNET.Transport;
|
using QuantumUNET.Transport;
|
||||||
using System;
|
using System;
|
||||||
@ -10,10 +9,18 @@ namespace QSB.EyeOfTheUniverse.EyeStateSync.Messages
|
|||||||
{
|
{
|
||||||
internal class FlickerMessage : QSBMessage
|
internal class FlickerMessage : QSBMessage
|
||||||
{
|
{
|
||||||
|
public static bool IgnoreNextMessage;
|
||||||
|
|
||||||
static FlickerMessage() => GlobalMessenger<float, float>.AddListener(OWEvents.FlickerOffAndOn, Handler);
|
static FlickerMessage() => GlobalMessenger<float, float>.AddListener(OWEvents.FlickerOffAndOn, Handler);
|
||||||
|
|
||||||
private static void Handler(float offDuration, float onDuration)
|
private static void Handler(float offDuration, float onDuration)
|
||||||
{
|
{
|
||||||
|
if (IgnoreNextMessage)
|
||||||
|
{
|
||||||
|
IgnoreNextMessage = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (PlayerTransformSync.LocalInstance)
|
if (PlayerTransformSync.LocalInstance)
|
||||||
{
|
{
|
||||||
new FlickerMessage(offDuration, onDuration).Send();
|
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;
|
||||||
using QSB.Player.Messages;
|
using QSB.Player.Messages;
|
||||||
using QSB.Utility;
|
|
||||||
using QSB.WorldSync;
|
using QSB.WorldSync;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -15,6 +15,8 @@ namespace QSB.EyeOfTheUniverse.MaskSync
|
|||||||
|
|
||||||
private readonly List<PlayerInfo> _playersInZone = new();
|
private readonly List<PlayerInfo> _playersInZone = new();
|
||||||
private MaskZoneController _controller;
|
private MaskZoneController _controller;
|
||||||
|
private bool _flickering;
|
||||||
|
private float _flickerOutTime;
|
||||||
|
|
||||||
public override WorldObjectType WorldObjectType => WorldObjectType.Eye;
|
public override WorldObjectType WorldObjectType => WorldObjectType.Eye;
|
||||||
|
|
||||||
@ -70,8 +72,6 @@ namespace QSB.EyeOfTheUniverse.MaskSync
|
|||||||
|
|
||||||
public void Enter(PlayerInfo player)
|
public void Enter(PlayerInfo player)
|
||||||
{
|
{
|
||||||
DebugLog.DebugWrite($"{player.PlayerId} enter mask zone");
|
|
||||||
|
|
||||||
if (_playersInZone.Count == 0)
|
if (_playersInZone.Count == 0)
|
||||||
{
|
{
|
||||||
_controller._whiteSphere.SetActive(true);
|
_controller._whiteSphere.SetActive(true);
|
||||||
@ -86,8 +86,6 @@ namespace QSB.EyeOfTheUniverse.MaskSync
|
|||||||
|
|
||||||
public void Exit(PlayerInfo player)
|
public void Exit(PlayerInfo player)
|
||||||
{
|
{
|
||||||
DebugLog.DebugWrite($"{player.PlayerId} exit mask zone");
|
|
||||||
|
|
||||||
_playersInZone.Remove(player);
|
_playersInZone.Remove(player);
|
||||||
|
|
||||||
if (_playersInZone.Count == 0 && !_controller._shuttle.HasLaunched())
|
if (_playersInZone.Count == 0 && !_controller._shuttle.HasLaunched())
|
||||||
@ -99,5 +97,24 @@ namespace QSB.EyeOfTheUniverse.MaskSync
|
|||||||
_controller.enabled = false;
|
_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();
|
_attachedBody = AttachedObject.GetAttachedOWRigidbody();
|
||||||
SetReferenceTransform(_attachedBody.GetOrigParent());
|
SetReferenceTransform(_attachedBody.GetOrigParent());
|
||||||
|
|
||||||
|
/*
|
||||||
if (_attachedBody.GetOrigParent() == Locator.GetRootTransform())
|
if (_attachedBody.GetOrigParent() == Locator.GetRootTransform())
|
||||||
{
|
{
|
||||||
DebugLog.DebugWrite($"{LogName} with AttachedObject {AttachedObject.name} had it's original parent as SolarSystemRoot - Disabling...");
|
DebugLog.DebugWrite($"{LogName} with AttachedObject {AttachedObject.name} had it's original parent as SolarSystemRoot - Disabling...");
|
||||||
enabled = false;
|
enabled = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
if (QSBCore.IsHost)
|
if (QSBCore.IsHost)
|
||||||
{
|
{
|
||||||
|
@ -157,12 +157,20 @@ namespace QSB.Syncs
|
|||||||
return;
|
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();
|
base.Update();
|
||||||
return;
|
return;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user