Merge pull request #198 from Raicuparta/crap-branch

null checks etc
This commit is contained in:
Mister_Nebula 2020-08-23 15:03:28 +01:00 committed by GitHub
commit d3f51d0f8e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 29 additions and 12 deletions

View File

@ -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));
}
}
}

View File

@ -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);

View File

@ -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));
}

View File

@ -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);

View File

@ -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)

View File

@ -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

View File

@ -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()

View File

@ -1,6 +1,6 @@
using OWML.ModHelper.Events;
using System.Linq;
using QSB.Utility;
using System.Linq;
using UnityEngine;
namespace QSB.Tools

View File

@ -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)