mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-02-25 21:40:49 +00:00
commit
d3f51d0f8e
@ -24,5 +24,12 @@ namespace QSB.DeathSync
|
||||
{
|
||||
GlobalMessenger<DeathType>.FireEvent(EventNames.QSBPlayerDeath, deathType);
|
||||
}
|
||||
|
||||
public static void DoPatches()
|
||||
{
|
||||
QSB.Helper.HarmonyHelper.AddPrefix<DeathManager>("KillPlayer", typeof(DeathPatches), nameof(PreFinishDeathSequence));
|
||||
QSB.Helper.HarmonyHelper.AddPostfix<DeathManager>("KillPlayer", typeof(DeathPatches), nameof(BroadcastDeath));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -28,13 +28,12 @@ namespace QSB.DeathSync
|
||||
private HatchController _hatchController;
|
||||
private ShipCockpitController _cockpitController;
|
||||
private PlayerSpacesuit _spaceSuit;
|
||||
private bool _isSetUp;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
Instance = this;
|
||||
|
||||
QSB.Helper.HarmonyHelper.AddPrefix<DeathManager>("KillPlayer", typeof(DeathPatches), nameof(DeathPatches.PreFinishDeathSequence));
|
||||
QSB.Helper.HarmonyHelper.AddPostfix<DeathManager>("KillPlayer", typeof(DeathPatches), nameof(DeathPatches.BroadcastDeath));
|
||||
QSB.Helper.Events.Subscribe<PlayerResources>(OWML.Common.Events.AfterStart);
|
||||
QSB.Helper.Events.Event += OnEvent;
|
||||
}
|
||||
@ -47,8 +46,13 @@ namespace QSB.DeathSync
|
||||
}
|
||||
}
|
||||
|
||||
private void Init()
|
||||
public void Init()
|
||||
{
|
||||
if (_isSetUp)
|
||||
{
|
||||
return;
|
||||
}
|
||||
_isSetUp = true;
|
||||
var playerTransform = Locator.GetPlayerTransform();
|
||||
_playerResources = playerTransform.GetComponent<PlayerResources>();
|
||||
_spaceSuit = playerTransform.GetComponentInChildren<PlayerSpacesuit>(true);
|
||||
|
@ -31,6 +31,7 @@ namespace QSB.Events
|
||||
{
|
||||
var playerName = PlayerRegistry.GetPlayer(message.AboutId).Name;
|
||||
DebugLog.ToAll($"{playerName} disconnected.", MessageType.Info);
|
||||
PlayerRegistry.GetPlayer(message.AboutId).HudMarker?.Remove();
|
||||
PlayerRegistry.RemovePlayer(message.AboutId);
|
||||
message.NetIds.ToList().ForEach(netId => QSBNetworkManager.Instance.CleanupNetworkBehaviour(netId));
|
||||
}
|
||||
|
@ -32,9 +32,8 @@ namespace QSB.Messaging
|
||||
if (NetworkServer.handlers.Keys.Contains((short)_eventType))
|
||||
{
|
||||
DebugLog.LogState($"{_eventType} HANDLER", false);
|
||||
DebugLog.ToConsole($"Error - NetworkServer already contains a handler for EventType {_eventType} : You probably used the wrong type in an event.",
|
||||
MessageType.Error);
|
||||
return;
|
||||
DebugLog.ToConsole($"Warning - NetworkServer already contains a handler for EventType {_eventType}", MessageType.Warning);
|
||||
NetworkServer.handlers.Remove((short)_eventType);
|
||||
}
|
||||
NetworkServer.RegisterHandler((short)_eventType, OnServerReceiveMessageHandler);
|
||||
NetworkManager.singleton.client.RegisterHandler((short)_eventType, OnClientReceiveMessageHandler);
|
||||
|
@ -61,17 +61,18 @@ namespace QSB
|
||||
|
||||
public static IEnumerable<T> GetSyncObjects<T>() where T : PlayerSyncObject
|
||||
{
|
||||
return PlayerSyncObjects.OfType<T>();
|
||||
return PlayerSyncObjects.OfType<T>().Where(x => x != null);
|
||||
}
|
||||
|
||||
public static T GetSyncObject<T>(uint id) where T : PlayerSyncObject
|
||||
{
|
||||
return GetSyncObjects<T>().FirstOrDefault(x => x.NetId == id);
|
||||
return GetSyncObjects<T>().FirstOrDefault(x => x != null && x.NetId == id);
|
||||
}
|
||||
|
||||
public static bool IsBelongingToLocalPlayer(uint id)
|
||||
{
|
||||
return id == LocalPlayerId || GetSyncObject<PlayerSyncObject>(id)?.PlayerId == LocalPlayerId;
|
||||
return id == LocalPlayerId ||
|
||||
PlayerSyncObjects.Any(x => x != null && x.NetId == id && x.PlayerId == LocalPlayerId);
|
||||
}
|
||||
|
||||
public static List<uint> GetPlayerNetIds(PlayerInfo player)
|
||||
|
@ -1,5 +1,6 @@
|
||||
using OWML.Common;
|
||||
using OWML.ModHelper;
|
||||
using QSB.DeathSync;
|
||||
using QSB.ElevatorSync;
|
||||
using QSB.GeyserSync;
|
||||
using QSB.Tools;
|
||||
@ -30,7 +31,9 @@ namespace QSB
|
||||
|
||||
NetworkAssetBundle = Helper.Assets.LoadBundle("assets/network");
|
||||
DebugLog.LogState("NetworkBundle", NetworkAssetBundle);
|
||||
|
||||
ProbePatches.DoPatches();
|
||||
DeathPatches.DoPatches();
|
||||
|
||||
// Turns out these are very finicky about what order they go. QSBNetworkManager seems to
|
||||
// want to go first-ish, otherwise the NetworkManager complains about the PlayerPrefab being
|
||||
|
@ -1,4 +1,5 @@
|
||||
using OWML.ModHelper.Events;
|
||||
using QSB.DeathSync;
|
||||
using QSB.Events;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Networking;
|
||||
@ -166,6 +167,7 @@ namespace QSB.TimeSync
|
||||
SpinnerUI.Hide();
|
||||
FindObjectOfType<SleepTimerUI>().Invoke("OnEndFastForward");
|
||||
GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest);
|
||||
RespawnOnDeath.Instance.Init();
|
||||
}
|
||||
|
||||
private void DisableInput()
|
||||
|
@ -1,6 +1,6 @@
|
||||
using OWML.ModHelper.Events;
|
||||
using System.Linq;
|
||||
using QSB.Utility;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
|
||||
namespace QSB.Tools
|
||||
|
@ -33,12 +33,12 @@ namespace QSB.Tools
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
ToolGameObject.SetActive(true);
|
||||
ToolGameObject?.SetActive(true);
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
ToolGameObject.SetActive(false);
|
||||
ToolGameObject?.SetActive(false);
|
||||
}
|
||||
|
||||
public void ChangeEquipState(bool equipState)
|
||||
|
Loading…
x
Reference in New Issue
Block a user