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);
|
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 HatchController _hatchController;
|
||||||
private ShipCockpitController _cockpitController;
|
private ShipCockpitController _cockpitController;
|
||||||
private PlayerSpacesuit _spaceSuit;
|
private PlayerSpacesuit _spaceSuit;
|
||||||
|
private bool _isSetUp;
|
||||||
|
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
Instance = this;
|
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.Subscribe<PlayerResources>(OWML.Common.Events.AfterStart);
|
||||||
QSB.Helper.Events.Event += OnEvent;
|
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();
|
var playerTransform = Locator.GetPlayerTransform();
|
||||||
_playerResources = playerTransform.GetComponent<PlayerResources>();
|
_playerResources = playerTransform.GetComponent<PlayerResources>();
|
||||||
_spaceSuit = playerTransform.GetComponentInChildren<PlayerSpacesuit>(true);
|
_spaceSuit = playerTransform.GetComponentInChildren<PlayerSpacesuit>(true);
|
||||||
|
@ -31,6 +31,7 @@ namespace QSB.Events
|
|||||||
{
|
{
|
||||||
var playerName = PlayerRegistry.GetPlayer(message.AboutId).Name;
|
var playerName = PlayerRegistry.GetPlayer(message.AboutId).Name;
|
||||||
DebugLog.ToAll($"{playerName} disconnected.", MessageType.Info);
|
DebugLog.ToAll($"{playerName} disconnected.", MessageType.Info);
|
||||||
|
PlayerRegistry.GetPlayer(message.AboutId).HudMarker?.Remove();
|
||||||
PlayerRegistry.RemovePlayer(message.AboutId);
|
PlayerRegistry.RemovePlayer(message.AboutId);
|
||||||
message.NetIds.ToList().ForEach(netId => QSBNetworkManager.Instance.CleanupNetworkBehaviour(netId));
|
message.NetIds.ToList().ForEach(netId => QSBNetworkManager.Instance.CleanupNetworkBehaviour(netId));
|
||||||
}
|
}
|
||||||
|
@ -32,9 +32,8 @@ namespace QSB.Messaging
|
|||||||
if (NetworkServer.handlers.Keys.Contains((short)_eventType))
|
if (NetworkServer.handlers.Keys.Contains((short)_eventType))
|
||||||
{
|
{
|
||||||
DebugLog.LogState($"{_eventType} HANDLER", false);
|
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.",
|
DebugLog.ToConsole($"Warning - NetworkServer already contains a handler for EventType {_eventType}", MessageType.Warning);
|
||||||
MessageType.Error);
|
NetworkServer.handlers.Remove((short)_eventType);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
NetworkServer.RegisterHandler((short)_eventType, OnServerReceiveMessageHandler);
|
NetworkServer.RegisterHandler((short)_eventType, OnServerReceiveMessageHandler);
|
||||||
NetworkManager.singleton.client.RegisterHandler((short)_eventType, OnClientReceiveMessageHandler);
|
NetworkManager.singleton.client.RegisterHandler((short)_eventType, OnClientReceiveMessageHandler);
|
||||||
|
@ -61,17 +61,18 @@ namespace QSB
|
|||||||
|
|
||||||
public static IEnumerable<T> GetSyncObjects<T>() where T : PlayerSyncObject
|
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
|
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)
|
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)
|
public static List<uint> GetPlayerNetIds(PlayerInfo player)
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
using OWML.Common;
|
using OWML.Common;
|
||||||
using OWML.ModHelper;
|
using OWML.ModHelper;
|
||||||
|
using QSB.DeathSync;
|
||||||
using QSB.ElevatorSync;
|
using QSB.ElevatorSync;
|
||||||
using QSB.GeyserSync;
|
using QSB.GeyserSync;
|
||||||
using QSB.Tools;
|
using QSB.Tools;
|
||||||
@ -30,7 +31,9 @@ namespace QSB
|
|||||||
|
|
||||||
NetworkAssetBundle = Helper.Assets.LoadBundle("assets/network");
|
NetworkAssetBundle = Helper.Assets.LoadBundle("assets/network");
|
||||||
DebugLog.LogState("NetworkBundle", NetworkAssetBundle);
|
DebugLog.LogState("NetworkBundle", NetworkAssetBundle);
|
||||||
|
|
||||||
ProbePatches.DoPatches();
|
ProbePatches.DoPatches();
|
||||||
|
DeathPatches.DoPatches();
|
||||||
|
|
||||||
// Turns out these are very finicky about what order they go. QSBNetworkManager seems to
|
// 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
|
// want to go first-ish, otherwise the NetworkManager complains about the PlayerPrefab being
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using OWML.ModHelper.Events;
|
using OWML.ModHelper.Events;
|
||||||
|
using QSB.DeathSync;
|
||||||
using QSB.Events;
|
using QSB.Events;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.Networking;
|
using UnityEngine.Networking;
|
||||||
@ -166,6 +167,7 @@ namespace QSB.TimeSync
|
|||||||
SpinnerUI.Hide();
|
SpinnerUI.Hide();
|
||||||
FindObjectOfType<SleepTimerUI>().Invoke("OnEndFastForward");
|
FindObjectOfType<SleepTimerUI>().Invoke("OnEndFastForward");
|
||||||
GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest);
|
GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest);
|
||||||
|
RespawnOnDeath.Instance.Init();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DisableInput()
|
private void DisableInput()
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
using OWML.ModHelper.Events;
|
using OWML.ModHelper.Events;
|
||||||
using System.Linq;
|
|
||||||
using QSB.Utility;
|
using QSB.Utility;
|
||||||
|
using System.Linq;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace QSB.Tools
|
namespace QSB.Tools
|
||||||
|
@ -33,12 +33,12 @@ namespace QSB.Tools
|
|||||||
|
|
||||||
private void OnEnable()
|
private void OnEnable()
|
||||||
{
|
{
|
||||||
ToolGameObject.SetActive(true);
|
ToolGameObject?.SetActive(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnDisable()
|
private void OnDisable()
|
||||||
{
|
{
|
||||||
ToolGameObject.SetActive(false);
|
ToolGameObject?.SetActive(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ChangeEquipState(bool equipState)
|
public void ChangeEquipState(bool equipState)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user