mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-12-11 20:15:10 +01:00
stuff
This commit is contained in:
parent
a1674ac542
commit
6cfb546933
@ -41,7 +41,7 @@ namespace QSB.Animation
|
||||
_netAnim.enabled = false;
|
||||
_netAnim.animator = _anim;
|
||||
|
||||
QSBSceneManager.OnSceneLoaded += (OWScene scene, bool universe) => LoadControllers(universe);
|
||||
QSBSceneManager.OnUniverseSceneLoaded += (OWScene scene) => LoadControllers();
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
@ -55,15 +55,11 @@ namespace QSB.Animation
|
||||
_playerController.OnBecomeGrounded -= OnBecomeGrounded;
|
||||
_playerController.OnBecomeUngrounded -= OnBecomeUngrounded;
|
||||
|
||||
QSBSceneManager.OnSceneLoaded -= (OWScene scene, bool universe) => LoadControllers(universe);
|
||||
QSBSceneManager.OnUniverseSceneLoaded -= (OWScene scene) => LoadControllers();
|
||||
}
|
||||
|
||||
private void LoadControllers(bool universe)
|
||||
private void LoadControllers()
|
||||
{
|
||||
if (!universe)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var bundle = QSB.InstrumentAssetBundle;
|
||||
_chertController = bundle.LoadAsset("assets/Chert/Traveller_Chert.controller") as RuntimeAnimatorController;
|
||||
_riebeckController = bundle.LoadAsset("assets/Riebeck/Traveller_Riebeck.controller") as RuntimeAnimatorController;
|
||||
@ -73,7 +69,7 @@ namespace QSB.Animation
|
||||
{
|
||||
if (QSBSceneManager.IsInUniverse)
|
||||
{
|
||||
LoadControllers(true);
|
||||
LoadControllers();
|
||||
}
|
||||
_netAnim.enabled = true;
|
||||
_bodyAnim = body.GetComponent<Animator>();
|
||||
|
||||
@ -17,6 +17,11 @@ namespace QSB.ElevatorSync
|
||||
QSBSceneManager.OnSceneLoaded += OnSceneLoaded;
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
QSBSceneManager.OnSceneLoaded -= OnSceneLoaded;
|
||||
}
|
||||
|
||||
private void OnSceneLoaded(OWScene scene, bool isInUniverse)
|
||||
{
|
||||
_elevators = Resources.FindObjectsOfTypeAll<Elevator>().ToList();
|
||||
|
||||
@ -15,6 +15,12 @@ namespace QSB.GeyserSync
|
||||
QSBPatchManager.OnPatchType += OnPatchType;
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
QSBSceneManager.OnSceneLoaded -= OnSceneLoaded;
|
||||
QSBPatchManager.OnPatchType -= OnPatchType;
|
||||
}
|
||||
|
||||
private void OnSceneLoaded(OWScene scene, bool isInUniverse)
|
||||
{
|
||||
var geyserControllers = Resources.FindObjectsOfTypeAll<GeyserController>();
|
||||
|
||||
@ -3,7 +3,6 @@ using QSB.Player.Events;
|
||||
using QSB.TransformSync;
|
||||
using QSB.Utility;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using UnityEngine.Networking;
|
||||
|
||||
@ -21,8 +20,6 @@ namespace QSB.Player
|
||||
{
|
||||
if (id == uint.MaxValue || id == 0U)
|
||||
{
|
||||
var stacktrace = new StackTrace();
|
||||
DebugLog.ToConsole($"GetPlayer() called with uint.MaxValue or 0 - returning default. Ran from {stacktrace.GetFrame(1).GetMethod().DeclaringType.Name}.{stacktrace.GetFrame(1).GetMethod().Name}.", MessageType.Warning);
|
||||
return default;
|
||||
}
|
||||
var player = PlayerList.FirstOrDefault(x => x.PlayerId == id);
|
||||
@ -91,7 +88,7 @@ namespace QSB.Player
|
||||
}
|
||||
// Get all Player IDs
|
||||
var playerIds = PlayerList.Select(x => x.PlayerId).ToList();
|
||||
// Get highest ID below the given syncobject's netid. A netid cannot belong to a netid above it, only below or equal to it.
|
||||
// Get highest ID below the given syncobject's netid. A netid cannot belong to a playerid above it, only below or equal to it.
|
||||
var lowerBound = playerIds.Where(x => x <= syncObject.AttachedNetId).ToList().Max();
|
||||
if (playerIds.Min() > syncObject.AttachedNetId)
|
||||
{
|
||||
|
||||
@ -167,6 +167,7 @@
|
||||
<Compile Include="Patches\QSBPatch.cs" />
|
||||
<Compile Include="Patches\QSBPatchTypes.cs" />
|
||||
<Compile Include="QSBSceneManager.cs" />
|
||||
<Compile Include="TimeSync\FastForwardUI.cs" />
|
||||
<Compile Include="TimeSync\WakeUpPatches.cs" />
|
||||
<Compile Include="Tools\Events\PlayerFlashlightEvent.cs" />
|
||||
<Compile Include="Player\Events\PlayerJoinEvent.cs" />
|
||||
|
||||
@ -68,17 +68,19 @@ namespace QSB
|
||||
spawnPrefabs.Add(OrbPrefab);
|
||||
|
||||
ConfigureNetworkManager();
|
||||
QSBSceneManager.OnSceneLoaded += OnSceneLoaded;
|
||||
QSBSceneManager.OnUniverseSceneLoaded += OnSceneLoaded;
|
||||
}
|
||||
|
||||
private void OnSceneLoaded(OWScene scene, bool inUniverse)
|
||||
private void OnDestroy()
|
||||
{
|
||||
if (inUniverse)
|
||||
{
|
||||
OrbManager.Instance.BuildOrbs();
|
||||
WorldRegistry.OldDialogueTrees.Clear();
|
||||
WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll<CharacterDialogueTree>().ToList();
|
||||
}
|
||||
QSBSceneManager.OnUniverseSceneLoaded -= OnSceneLoaded;
|
||||
}
|
||||
|
||||
private void OnSceneLoaded(OWScene scene)
|
||||
{
|
||||
OrbManager.Instance.BuildOrbs();
|
||||
WorldRegistry.OldDialogueTrees.Clear();
|
||||
WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll<CharacterDialogueTree>().ToList();
|
||||
}
|
||||
|
||||
private void ConfigureNetworkManager()
|
||||
@ -135,7 +137,10 @@ namespace QSB
|
||||
gameObject.AddComponent<RespawnOnDeath>();
|
||||
gameObject.AddComponent<PreventShipDestruction>();
|
||||
|
||||
QSBSectorManager.Instance.RebuildSectors();
|
||||
if (QSBSceneManager.IsInUniverse)
|
||||
{
|
||||
QSBSectorManager.Instance.RebuildSectors();
|
||||
}
|
||||
OrbManager.Instance.QueueBuildSlots();
|
||||
|
||||
if (!NetworkServer.localClientActive)
|
||||
|
||||
@ -11,6 +11,7 @@ namespace QSB
|
||||
public static bool IsInUniverse => InUniverse(CurrentScene);
|
||||
|
||||
public static event Action<OWScene, bool> OnSceneLoaded;
|
||||
public static event Action<OWScene> OnUniverseSceneLoaded;
|
||||
|
||||
static QSBSceneManager()
|
||||
{
|
||||
@ -20,7 +21,12 @@ namespace QSB
|
||||
|
||||
private static void OnCompleteSceneLoad(OWScene oldScene, OWScene newScene)
|
||||
{
|
||||
OnSceneLoaded?.Invoke(newScene, InUniverse(newScene));
|
||||
var universe = InUniverse(newScene);
|
||||
OnSceneLoaded?.Invoke(newScene, universe);
|
||||
if (universe)
|
||||
{
|
||||
OnUniverseSceneLoaded?.Invoke(newScene);
|
||||
}
|
||||
}
|
||||
|
||||
private static bool InUniverse(OWScene scene)
|
||||
|
||||
@ -20,16 +20,16 @@ namespace QSB.SectorSync
|
||||
private void Awake()
|
||||
{
|
||||
Instance = this;
|
||||
QSBSceneManager.OnSceneLoaded += (OWScene scene, bool universe) => RebuildSectors();
|
||||
QSBSceneManager.OnUniverseSceneLoaded += (OWScene scene) => RebuildSectors();
|
||||
DebugLog.DebugWrite("Sector Manager ready.", MessageType.Success);
|
||||
}
|
||||
private void OnDestroy()
|
||||
{
|
||||
QSBSceneManager.OnUniverseSceneLoaded -= (OWScene scene) => RebuildSectors();
|
||||
}
|
||||
|
||||
public void RebuildSectors()
|
||||
{
|
||||
if (!QSBSceneManager.IsInUniverse)
|
||||
{
|
||||
return;
|
||||
}
|
||||
DebugLog.DebugWrite("Rebuilding sectors...", MessageType.Warning);
|
||||
WorldRegistry.RemoveObjects<QSBSector>();
|
||||
var sectors = Resources.FindObjectsOfTypeAll<Sector>().ToList();
|
||||
|
||||
63
QSB/TimeSync/FastForwardUI.cs
Normal file
63
QSB/TimeSync/FastForwardUI.cs
Normal file
@ -0,0 +1,63 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace QSB.TimeSync
|
||||
{
|
||||
class FastForwardUI : MonoBehaviour
|
||||
{
|
||||
public static FastForwardUI Instance;
|
||||
|
||||
private Canvas _canvas;
|
||||
private Text _text;
|
||||
private float _sleepStartTime;
|
||||
private float _sleepStartTimeUnscaled;
|
||||
private Color _textColor;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
Instance = this;
|
||||
enabled = false;
|
||||
_canvas.enabled = false;
|
||||
_textColor = _text.color;
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
if (_canvas.enabled)
|
||||
{
|
||||
Canvas.willRenderCanvases -= OnWillRenderCanvases;
|
||||
}
|
||||
}
|
||||
|
||||
public static void Start() => Instance.StartFastForward();
|
||||
public static void Stop() => Instance.EndFastForward();
|
||||
|
||||
private void StartFastForward()
|
||||
{
|
||||
_sleepStartTime = Time.timeSinceLevelLoad;
|
||||
_sleepStartTimeUnscaled = Time.unscaledTime;
|
||||
enabled = true;
|
||||
_canvas.enabled = true;
|
||||
_text.text = "00:00";
|
||||
_text.color = new Color(_textColor.r, _textColor.g, _textColor.b, 0f);
|
||||
Canvas.willRenderCanvases += OnWillRenderCanvases;
|
||||
}
|
||||
|
||||
private void EndFastForward()
|
||||
{
|
||||
enabled = false;
|
||||
_canvas.enabled = false;
|
||||
Canvas.willRenderCanvases -= OnWillRenderCanvases;
|
||||
}
|
||||
|
||||
private void OnWillRenderCanvases()
|
||||
{
|
||||
var totalSeconds = Mathf.Max(Time.timeSinceLevelLoad - _sleepStartTime, 0f);
|
||||
var minutes = Mathf.FloorToInt(totalSeconds / 60f);
|
||||
var seconds = Mathf.FloorToInt(totalSeconds) % 60;
|
||||
_text.text = $"{minutes.ToString("D2")}:{seconds.ToString("D2")}";
|
||||
var alpha = Mathf.Clamp01((Time.unscaledTime - _sleepStartTimeUnscaled) / 3f);
|
||||
_text.color = new Color(_textColor.r, _textColor.g, _textColor.b, alpha);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,8 +1,6 @@
|
||||
using OWML.ModHelper.Events;
|
||||
using QSB.DeathSync;
|
||||
using QSB.DeathSync;
|
||||
using QSB.EventsCore;
|
||||
using QSB.TimeSync.Events;
|
||||
using QSB.Utility;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Networking;
|
||||
|
||||
@ -87,7 +85,6 @@ namespace QSB.TimeSync
|
||||
|
||||
private void Init()
|
||||
{
|
||||
DebugLog.DebugWrite("WakeUpSync init - Request state!");
|
||||
GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest);
|
||||
_state = State.Loaded;
|
||||
gameObject.AddComponent<PreserveTimeScale>();
|
||||
@ -152,7 +149,7 @@ namespace QSB.TimeSync
|
||||
}
|
||||
_timeScale = MaxFastForwardSpeed;
|
||||
_state = State.FastForwarding;
|
||||
FindObjectOfType<SleepTimerUI>().Invoke("OnStartFastForward");
|
||||
FastForwardUI.Start();
|
||||
}
|
||||
|
||||
private void StartPausing()
|
||||
@ -179,8 +176,7 @@ namespace QSB.TimeSync
|
||||
QSB.HasWokenUp = true;
|
||||
Physics.SyncTransforms();
|
||||
SpinnerUI.Hide();
|
||||
DebugLog.DebugWrite("ResetTimeScale - Request state!");
|
||||
FindObjectOfType<SleepTimerUI>().Invoke("OnEndFastForward");
|
||||
FastForwardUI.Stop();
|
||||
GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest);
|
||||
RespawnOnDeath.Instance.Init();
|
||||
}
|
||||
|
||||
@ -29,6 +29,11 @@ namespace QSB.TransformSync
|
||||
QSBSceneManager.OnSceneLoaded += OnSceneLoaded;
|
||||
}
|
||||
|
||||
protected virtual void OnDestroy()
|
||||
{
|
||||
QSBSceneManager.OnSceneLoaded -= OnSceneLoaded;
|
||||
}
|
||||
|
||||
private void OnSceneLoaded(OWScene scene, bool isInUniverse)
|
||||
{
|
||||
_isInitialized = false;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user