This commit is contained in:
Mister_Nebula 2020-12-11 13:14:58 +00:00
parent a1c08dd0d1
commit 90016973fe
33 changed files with 99 additions and 111 deletions

View File

@ -10,7 +10,6 @@ namespace QSB.Animation.Events
public override EventType Type => EventType.PlayInstrument;
public override void SetupListener() => GlobalMessenger<uint, AnimationType>.AddListener(EventNames.QSBChangeAnimType, Handler);
public override void CloseListener() => GlobalMessenger<uint, AnimationType>.RemoveListener(EventNames.QSBChangeAnimType, Handler);
private void Handler(uint player, AnimationType type) => SendEvent(CreateMessage(player, type));

View File

@ -9,7 +9,6 @@ namespace QSB.Animation.Events
public override EventType Type => EventType.AnimTrigger;
public override void SetupListener() => GlobalMessenger<float>.AddListener(EventNames.QSBCrouch, Handler);
public override void CloseListener() => GlobalMessenger<float>.RemoveListener(EventNames.QSBCrouch, Handler);
private void Handler(float value) => SendEvent(CreateMessage(value));

View File

@ -37,7 +37,7 @@ namespace QSB.ConversationSync
public uint GetPlayerTalkingToTree(CharacterDialogueTree tree)
{
var treeIndex = WorldRegistry.OldDialogueTrees.IndexOf(tree);
var treeIndex = QSBWorldSync.OldDialogueTrees.IndexOf(tree);
if (!QSBPlayerManager.PlayerList.Any(x => x.CurrentDialogueID == treeIndex))
{
// No player talking to tree
@ -109,14 +109,14 @@ namespace QSB.ConversationSync
public void DisplayCharacterConversationBox(int index, string text)
{
if (WorldRegistry.OldDialogueTrees.ElementAtOrDefault(index) == null)
if (QSBWorldSync.OldDialogueTrees.ElementAtOrDefault(index) == null)
{
DebugLog.ToConsole($"Error - Tried to display character conversation box for id {index}! (Doesn't exist!)", MessageType.Error);
return;
}
// Remove old box if it exists
var oldDialogueTree = WorldRegistry.OldDialogueTrees[index];
var oldDialogueTree = QSBWorldSync.OldDialogueTrees[index];
if (BoxMappings.ContainsKey(oldDialogueTree))
{
Destroy(BoxMappings[oldDialogueTree]);

View File

@ -13,7 +13,7 @@ namespace QSB.ConversationSync
public static void StartConversation(CharacterDialogueTree __instance)
{
var index = WorldRegistry.OldDialogueTrees.FindIndex(x => x == __instance);
var index = QSBWorldSync.OldDialogueTrees.FindIndex(x => x == __instance);
if (index == -1)
{
DebugLog.ToConsole($"Warning - Index for tree {__instance.name} was -1.", MessageType.Warning);

View File

@ -9,7 +9,6 @@ namespace QSB.ConversationSync.Events
public override EventType Type => EventType.Conversation;
public override void SetupListener() => GlobalMessenger<uint, string, ConversationType>.AddListener(EventNames.QSBConversation, Handler);
public override void CloseListener() => GlobalMessenger<uint, string, ConversationType>.RemoveListener(EventNames.QSBConversation, Handler);
private void Handler(uint id, string message, ConversationType type) => SendEvent(CreateMessage(id, message, type));
@ -40,7 +39,7 @@ namespace QSB.ConversationSync.Events
{
break;
}
var tree = WorldRegistry.OldDialogueTrees[message.ObjectId];
var tree = QSBWorldSync.OldDialogueTrees[message.ObjectId];
UnityEngine.Object.Destroy(ConversationManager.Instance.BoxMappings[tree]);
break;

View File

@ -14,7 +14,6 @@ namespace QSB.ConversationSync.Events
public override EventsCore.EventType Type => EventsCore.EventType.ConversationStartEnd;
public override void SetupListener() => GlobalMessenger<int, uint, bool>.AddListener(EventNames.QSBConversationStartEnd, Handler);
public override void CloseListener() => GlobalMessenger<int, uint, bool>.RemoveListener(EventNames.QSBConversationStartEnd, Handler);
private void Handler(int charId, uint playerId, bool state) => SendEvent(CreateMessage(charId, playerId, state));
@ -34,7 +33,7 @@ namespace QSB.ConversationSync.Events
DebugLog.ToConsole("Warning - Received conv. start/end event with char id -1.", MessageType.Warning);
return;
}
var dialogueTree = WorldRegistry.OldDialogueTrees[message.CharacterId];
var dialogueTree = QSBWorldSync.OldDialogueTrees[message.CharacterId];
var animController = Resources.FindObjectsOfTypeAll<CharacterAnimController>().FirstOrDefault(x => x.GetValue<CharacterDialogueTree>("_dialogueTree") == dialogueTree);
// Make character face player and talk

View File

@ -10,7 +10,6 @@ namespace QSB.DeathSync.Events
public override EventType Type => EventType.PlayerDeath;
public override void SetupListener() => GlobalMessenger<DeathType>.AddListener(EventNames.QSBPlayerDeath, Handler);
public override void CloseListener() => GlobalMessenger<DeathType>.RemoveListener(EventNames.QSBPlayerDeath, Handler);
private void Handler(DeathType type) => SendEvent(CreateMessage(type));

View File

@ -1,14 +1,14 @@
using QSB.EventsCore;
using QSB.Utility;
using QSB.WorldSync;
namespace QSB.DialogueConditionSync
namespace QSB.DialogueConditionSync.Events
{
public class DialogueConditionEvent : QSBEvent<DialogueConditionMessage>
{
public override EventType Type => EventType.DialogueCondition;
public override void SetupListener() => GlobalMessenger<string, bool>.AddListener(EventNames.DialogueCondition, Handler);
public override void CloseListener() => GlobalMessenger<string, bool>.RemoveListener(EventNames.DialogueCondition, Handler);
private void Handler(string name, bool state) => SendEvent(CreateMessage(name, state));
@ -21,9 +21,12 @@ namespace QSB.DialogueConditionSync
};
public override void OnReceiveRemote(DialogueConditionMessage message)
=> DialogueConditionManager.SharedInstance.SetConditionState(message.ConditionName, message.ConditionState);
public override void OnServerReceive(DialogueConditionMessage message)
{
DebugLog.DebugWrite($"dialoguecondition \"{message.ConditionName} to {message.ConditionState}\"");
DialogueConditionManager.SharedInstance.SetConditionState(message.ConditionName, message.ConditionState);
QSBWorldSync.AddDialogueCondition(message.ConditionName, message.ConditionState);
}
}
}

View File

@ -1,7 +1,7 @@
using QSB.Messaging;
using QuantumUNET;
namespace QSB.DialogueConditionSync
namespace QSB.DialogueConditionSync.Events
{
public class DialogueConditionMessage : PlayerMessage
{

View File

@ -27,9 +27,9 @@ namespace QSB.ElevatorSync
_elevators = Resources.FindObjectsOfTypeAll<Elevator>().ToList();
for (var id = 0; id < _elevators.Count; id++)
{
var qsbElevator = WorldRegistry.GetObject<QSBElevator>(id) ?? new QSBElevator();
var qsbElevator = QSBWorldSync.GetWorldObject<QSBElevator>(id) ?? new QSBElevator();
qsbElevator.Init(_elevators[id], id);
WorldRegistry.AddObject(qsbElevator);
QSBWorldSync.AddWorldObject(qsbElevator);
}
}

View File

@ -9,7 +9,6 @@ namespace QSB.ElevatorSync.Events
public override EventType Type => EventType.Elevator;
public override void SetupListener() => GlobalMessenger<int, bool>.AddListener(EventNames.QSBStartLift, Handler);
public override void CloseListener() => GlobalMessenger<int, bool>.RemoveListener(EventNames.QSBStartLift, Handler);
private void Handler(int id, bool isGoingUp) => SendEvent(CreateMessage(id, isGoingUp));
@ -22,7 +21,7 @@ namespace QSB.ElevatorSync.Events
public override void OnReceiveRemote(BoolWorldObjectMessage message)
{
var elevator = WorldRegistry.GetObject<QSBElevator>(message.ObjectId);
var elevator = QSBWorldSync.GetWorldObject<QSBElevator>(message.ObjectId);
elevator?.RemoteCall(message.State);
}
}

View File

@ -3,7 +3,7 @@ using QSB.Animation;
using QSB.Animation.Events;
using QSB.ConversationSync.Events;
using QSB.DeathSync.Events;
using QSB.DialogueConditionSync;
using QSB.DialogueConditionSync.Events;
using QSB.ElevatorSync.Events;
using QSB.GeyserSync.Events;
using QSB.OrbSync.Events;

View File

@ -8,15 +8,8 @@ namespace QSB.GeyserSync.Events
{
public override EventType Type => EventType.Geyser;
public override void SetupListener()
{
GlobalMessenger<int, bool>.AddListener(EventNames.QSBGeyserState, Handler);
}
public override void CloseListener()
{
GlobalMessenger<int, bool>.RemoveListener(EventNames.QSBGeyserState, Handler);
}
public override void SetupListener() => GlobalMessenger<int, bool>.AddListener(EventNames.QSBGeyserState, Handler);
public override void CloseListener() => GlobalMessenger<int, bool>.RemoveListener(EventNames.QSBGeyserState, Handler);
private void Handler(int id, bool state) => SendEvent(CreateMessage(id, state));
@ -29,7 +22,7 @@ namespace QSB.GeyserSync.Events
public override void OnReceiveRemote(BoolWorldObjectMessage message)
{
var geyser = WorldRegistry.GetObject<QSBGeyser>(message.ObjectId);
var geyser = QSBWorldSync.GetWorldObject<QSBGeyser>(message.ObjectId);
geyser?.SetState(message.State);
}
}

View File

@ -26,9 +26,9 @@ namespace QSB.GeyserSync
var geyserControllers = Resources.FindObjectsOfTypeAll<GeyserController>();
for (var id = 0; id < geyserControllers.Length; id++)
{
var qsbGeyser = WorldRegistry.GetObject<QSBGeyser>(id) ?? new QSBGeyser();
var qsbGeyser = QSBWorldSync.GetWorldObject<QSBGeyser>(id) ?? new QSBGeyser();
qsbGeyser.Init(geyserControllers[id], id);
WorldRegistry.AddObject(qsbGeyser);
QSBWorldSync.AddWorldObject(qsbGeyser);
}
}

View File

@ -40,7 +40,7 @@ namespace QSB.Messaging
QSBNetworkServer.handlers.Remove((short)_eventType);
}
QSBNetworkServer.RegisterHandler((short)_eventType, OnServerReceiveMessageHandler);
QSBNetworkManager.singleton.client.RegisterHandler((short)_eventType, OnClientReceiveMessageHandler);
QuantumUNET.Components.QSBNetworkManagerUNET.singleton.client.RegisterHandler((short)_eventType, OnClientReceiveMessageHandler);
}
public void SendToAll(T message)
@ -58,7 +58,7 @@ namespace QSB.Messaging
{
return;
}
QSBNetworkManager.singleton.client.Send((short)_eventType, message);
QuantumUNET.Components.QSBNetworkManagerUNET.singleton.client.Send((short)_eventType, message);
}
private void OnClientReceiveMessageHandler(QSBNetworkMessage netMsg)

View File

@ -8,7 +8,6 @@ namespace QSB.OrbSync.Events
public override EventType Type => EventType.OrbSlot;
public override void SetupListener() => GlobalMessenger<int, int, bool>.AddListener(EventNames.QSBOrbSlot, Handler);
public override void CloseListener() => GlobalMessenger<int, int, bool>.RemoveListener(EventNames.QSBOrbSlot, Handler);
private void Handler(int slotId, int orbId, bool slotState) => SendEvent(CreateMessage(slotId, orbId, slotState));
@ -23,7 +22,7 @@ namespace QSB.OrbSync.Events
public override void OnReceiveRemote(OrbSlotMessage message)
{
var orbSlot = WorldRegistry.GetObject<QSBOrbSlot>(message.SlotId);
var orbSlot = QSBWorldSync.GetWorldObject<QSBOrbSlot>(message.SlotId);
orbSlot?.SetState(message.SlotState, message.OrbId);
}
}

View File

@ -14,7 +14,6 @@ namespace QSB.OrbSync.Events
public override EventType Type => EventType.OrbUser;
public override void SetupListener() => GlobalMessenger<int>.AddListener(EventNames.QSBOrbUser, Handler);
public override void CloseListener() => GlobalMessenger<int>.RemoveListener(EventNames.QSBOrbUser, Handler);
private void Handler(int id) => SendEvent(CreateMessage(id));
@ -28,7 +27,7 @@ namespace QSB.OrbSync.Events
public override void OnServerReceive(WorldObjectMessage message)
{
var fromPlayer = QSBNetworkServer.connections.First(x => x.GetPlayer().PlayerId == message.FromId);
if (WorldRegistry.OrbSyncList.Count == 0)
if (QSBWorldSync.OrbSyncList.Count == 0)
{
DebugLog.ToConsole($"Error - OrbSyncList is empty. (ID {message.ObjectId})", MessageType.Error);
return;
@ -37,8 +36,8 @@ namespace QSB.OrbSync.Events
{
DebugLog.DebugWrite("Error - FromPlayer is null!", MessageType.Error);
}
var orb = WorldRegistry.OrbSyncList
.First(x => x.AttachedOrb == WorldRegistry.OldOrbList[message.ObjectId]);
var orb = QSBWorldSync.OrbSyncList
.First(x => x.AttachedOrb == QSBWorldSync.OldOrbList[message.ObjectId]);
if (orb == null)
{
DebugLog.ToConsole($"Error - No orb found for user event. (ID {message.ObjectId})", MessageType.Error);
@ -60,13 +59,13 @@ namespace QSB.OrbSync.Events
public override void OnReceiveRemote(WorldObjectMessage message)
{
if (WorldRegistry.OrbSyncList.Count < message.ObjectId)
if (QSBWorldSync.OrbSyncList.Count < message.ObjectId)
{
DebugLog.DebugWrite($"Error - Orb id {message.ObjectId} out of range of orb sync list {WorldRegistry.OrbSyncList.Count}.", MessageType.Error);
DebugLog.DebugWrite($"Error - Orb id {message.ObjectId} out of range of orb sync list {QSBWorldSync.OrbSyncList.Count}.", MessageType.Error);
return;
}
var orb = WorldRegistry.OrbSyncList
.First(x => x.AttachedOrb == WorldRegistry.OldOrbList[message.ObjectId]);
var orb = QSBWorldSync.OrbSyncList
.First(x => x.AttachedOrb == QSBWorldSync.OldOrbList[message.ObjectId]);
orb.enabled = true;
}

View File

@ -19,11 +19,11 @@ namespace QSB.OrbSync
private void BuildOrbSlots()
{
DebugLog.DebugWrite("Building QSBOrbSlots...", MessageType.Info);
WorldRegistry.RemoveObjects<QSBOrbSlot>();
QSBWorldSync.RemoveWorldObjects<QSBOrbSlot>();
var orbSlots = Resources.FindObjectsOfTypeAll<NomaiInterfaceSlot>();
for (var id = 0; id < orbSlots.Length; id++)
{
var qsbOrbSlot = WorldRegistry.GetObject<QSBOrbSlot>(id) ?? new QSBOrbSlot();
var qsbOrbSlot = QSBWorldSync.GetWorldObject<QSBOrbSlot>(id) ?? new QSBOrbSlot();
qsbOrbSlot.Init(orbSlots[id], id);
}
@ -33,16 +33,16 @@ namespace QSB.OrbSync
public void BuildOrbs()
{
DebugLog.DebugWrite("Building orb syncs...", MessageType.Info);
WorldRegistry.OldOrbList.Clear();
WorldRegistry.OldOrbList = Resources.FindObjectsOfTypeAll<NomaiInterfaceOrb>().ToList();
QSBWorldSync.OldOrbList.Clear();
QSBWorldSync.OldOrbList = Resources.FindObjectsOfTypeAll<NomaiInterfaceOrb>().ToList();
if (QSBNetworkServer.active)
{
DebugLog.DebugWrite("- Is server, instantiating orb prefabs.");
WorldRegistry.OrbSyncList.ForEach(x => QSBNetworkServer.Destroy(x.gameObject));
WorldRegistry.OrbSyncList.Clear();
WorldRegistry.OldOrbList.ForEach(x => QSBNetworkServer.Spawn(Instantiate(QSBNetworkManager.Instance.OrbPrefab)));
QSBWorldSync.OrbSyncList.ForEach(x => QSBNetworkServer.Destroy(x.gameObject));
QSBWorldSync.OrbSyncList.Clear();
QSBWorldSync.OldOrbList.ForEach(x => QSBNetworkServer.Spawn(Instantiate(QSBNetworkManager.Instance.OrbPrefab)));
}
DebugLog.DebugWrite($"Finished orb build with {WorldRegistry.OldOrbList.Count} orbs.", MessageType.Success);
DebugLog.DebugWrite($"Finished orb build with {QSBWorldSync.OldOrbList.Count} orbs.", MessageType.Success);
}
public void QueueBuildSlots()

View File

@ -12,7 +12,7 @@ namespace QSB.OrbSync
{
if (__result)
{
GlobalMessenger<int>.FireEvent(EventNames.QSBOrbUser, WorldRegistry.OldOrbList.FindIndex(x => x == __instance));
GlobalMessenger<int>.FireEvent(EventNames.QSBOrbUser, QSBWorldSync.OldOrbList.FindIndex(x => x == __instance));
}
}
@ -31,8 +31,8 @@ namespace QSB.OrbSync
____occupyingOrb = orb;
if (Time.timeSinceLevelLoad > 1f)
{
WorldRegistry.HandleSlotStateChange(__instance, orb, true);
WorldRegistry.RaiseEvent(__instance, "OnSlotActivated");
QSBWorldSync.HandleSlotStateChange(__instance, orb, true);
QSBWorldSync.RaiseEvent(__instance, "OnSlotActivated");
}
__result = true;
return false;
@ -44,9 +44,9 @@ namespace QSB.OrbSync
}
if (orbDistance > triggerRadius)
{
WorldRegistry.HandleSlotStateChange(__instance, orb, false);
QSBWorldSync.HandleSlotStateChange(__instance, orb, false);
____occupyingOrb = null;
WorldRegistry.RaiseEvent(__instance, "OnSlotDeactivated");
QSBWorldSync.RaiseEvent(__instance, "OnSlotDeactivated");
__result = false;
return false;
}

View File

@ -16,7 +16,7 @@ namespace QSB.OrbSync
ObjectId = id;
InterfaceSlot = slot;
_initialized = true;
WorldRegistry.AddObject(this);
QSBWorldSync.AddWorldObject(this);
}
public void HandleEvent(bool state, int orbId)
@ -33,10 +33,10 @@ namespace QSB.OrbSync
{
return;
}
var occOrb = state ? WorldRegistry.OldOrbList[orbId] : null;
var occOrb = state ? QSBWorldSync.OldOrbList[orbId] : null;
InterfaceSlot.SetValue("_occupyingOrb", occOrb);
var ev = state ? "OnSlotActivated" : "OnSlotDeactivated";
WorldRegistry.RaiseEvent(InterfaceSlot, ev);
QSBWorldSync.RaiseEvent(InterfaceSlot, ev);
Activated = state;
}
}

View File

@ -9,7 +9,6 @@ namespace QSB.Player.Events
public override EventType Type => EventType.PlayerJoin;
public override void SetupListener() => GlobalMessenger<string>.AddListener(EventNames.QSBPlayerJoin, Handler);
public override void CloseListener() => GlobalMessenger<string>.RemoveListener(EventNames.QSBPlayerJoin, Handler);
private void Handler(string name) => SendEvent(CreateMessage(name));

View File

@ -10,7 +10,6 @@ namespace QSB.Player.Events
public override EventType Type => EventType.PlayerLeave;
public override void SetupListener() => GlobalMessenger<uint, uint[]>.AddListener(EventNames.QSBPlayerLeave, Handler);
public override void CloseListener() => GlobalMessenger<uint, uint[]>.RemoveListener(EventNames.QSBPlayerLeave, Handler);
private void Handler(uint playerId, uint[] netIds) => SendEvent(CreateMessage(playerId, netIds));

View File

@ -12,7 +12,6 @@ namespace QSB.Player.Events
public override EventType Type => EventType.PlayerReady;
public override void SetupListener() => GlobalMessenger<bool>.AddListener(EventNames.QSBPlayerReady, Handler);
public override void CloseListener() => GlobalMessenger<bool>.RemoveListener(EventNames.QSBPlayerReady, Handler);
private void Handler(bool ready) => SendEvent(CreateMessage(ready));

View File

@ -11,15 +11,8 @@ namespace QSB.Player.Events
{
public override EventType Type => EventType.PlayerSectorChange;
public override void SetupListener()
{
GlobalMessenger<uint, QSBSector>.AddListener(EventNames.QSBSectorChange, Handler);
}
public override void CloseListener()
{
GlobalMessenger<uint, QSBSector>.RemoveListener(EventNames.QSBSectorChange, Handler);
}
public override void SetupListener() => GlobalMessenger<uint, QSBSector>.AddListener(EventNames.QSBSectorChange, Handler);
public override void CloseListener() => GlobalMessenger<uint, QSBSector>.RemoveListener(EventNames.QSBSectorChange, Handler);
private void Handler(uint netId, QSBSector sector) => SendEvent(CreateMessage(netId, sector));
@ -35,7 +28,7 @@ namespace QSB.Player.Events
{
return;
}
var sector = WorldRegistry.GetObject<QSBSector>(message.ObjectId);
var sector = QSBWorldSync.GetWorldObject<QSBSector>(message.ObjectId);
if (sector == null)
{

View File

@ -11,7 +11,6 @@ namespace QSB.Player.Events
public override EventType Type => EventType.PlayerStatesRequest;
public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerStatesRequest, Handler);
public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerStatesRequest, Handler);
private void Handler() => SendEvent(CreateMessage());

View File

@ -9,7 +9,6 @@ namespace QSB.Player.Events
public override EventType Type => EventType.PlayerState;
public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBServerSendPlayerStates, Handler);
public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBServerSendPlayerStates, Handler);
private void Handler()

View File

@ -9,6 +9,7 @@ using QSB.Patches;
using QSB.SectorSync;
using QSB.TimeSync;
using QSB.Utility;
using QuantumUNET;
using QuantumUNET.Components;
using UnityEngine;
using UnityEngine.Networking;
@ -25,6 +26,7 @@ namespace QSB
public static AssetBundle NetworkAssetBundle { get; private set; }
public static AssetBundle InstrumentAssetBundle { get; private set; }
public static bool HasWokenUp { get; set; }
public static bool IsServer => QSBNetworkServer.active;
private void Awake()
{

View File

@ -128,8 +128,8 @@
<Compile Include="Animation\AnimFloatParam.cs" />
<Compile Include="Animation\CrouchSync.cs" />
<Compile Include="Animation\PlayerHeadRotationSync.cs" />
<Compile Include="DialogueConditionSync\DialogueConditionEvent.cs" />
<Compile Include="DialogueConditionSync\DialogueConditionMessage.cs" />
<Compile Include="DialogueConditionSync\Events\DialogueConditionEvent.cs" />
<Compile Include="DialogueConditionSync\Events\DialogueConditionMessage.cs" />
<Compile Include="ConversationSync\Events\ConversationEvent.cs" />
<Compile Include="ConversationSync\Events\ConversationMessage.cs" />
<Compile Include="ConversationSync\ConversationPatches.cs" />
@ -230,7 +230,7 @@
<Compile Include="QSB.cs" />
<Compile Include="TransformSync\PlayerTransformSync.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="WorldSync\WorldRegistry.cs" />
<Compile Include="WorldSync\QSBWorldSync.cs" />
<Compile Include="WorldSync\WorldObject.cs" />
</ItemGroup>
<ItemGroup>

View File

@ -127,8 +127,8 @@ namespace QSB
DebugLog.DebugWrite("scene loaded");
OrbManager.Instance.BuildOrbs();
OrbManager.Instance.QueueBuildSlots();
WorldRegistry.OldDialogueTrees.Clear();
WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll<CharacterDialogueTree>().ToList();
QSBWorldSync.OldDialogueTrees.Clear();
QSBWorldSync.OldDialogueTrees = Resources.FindObjectsOfTypeAll<CharacterDialogueTree>().ToList();
}
private void ConfigureNetworkManager()
@ -149,13 +149,13 @@ namespace QSB
public override void OnStartServer()
{
DebugLog.DebugWrite("OnStartServer", MessageType.Info);
if (WorldRegistry.OrbSyncList.Count == 0 && QSBSceneManager.IsInUniverse)
if (QSBWorldSync.OrbSyncList.Count == 0 && QSBSceneManager.IsInUniverse)
{
OrbManager.Instance.QueueBuildOrbs();
}
if (WorldRegistry.OldDialogueTrees.Count == 0 && QSBSceneManager.IsInUniverse)
if (QSBWorldSync.OldDialogueTrees.Count == 0 && QSBSceneManager.IsInUniverse)
{
WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll<CharacterDialogueTree>().ToList();
QSBWorldSync.OldDialogueTrees = Resources.FindObjectsOfTypeAll<CharacterDialogueTree>().ToList();
}
}
@ -221,12 +221,12 @@ namespace QSB
}
QSBPlayerManager.RemoveAllPlayers();
WorldRegistry.RemoveObjects<QSBOrbSlot>();
WorldRegistry.RemoveObjects<QSBElevator>();
WorldRegistry.RemoveObjects<QSBGeyser>();
WorldRegistry.RemoveObjects<QSBSector>();
WorldRegistry.OrbSyncList.Clear();
WorldRegistry.OldDialogueTrees.Clear();
QSBWorldSync.RemoveWorldObjects<QSBOrbSlot>();
QSBWorldSync.RemoveWorldObjects<QSBElevator>();
QSBWorldSync.RemoveWorldObjects<QSBGeyser>();
QSBWorldSync.RemoveWorldObjects<QSBSector>();
QSBWorldSync.OrbSyncList.Clear();
QSBWorldSync.OldDialogueTrees.Clear();
_lobby.CanEditName = true;
}
@ -238,7 +238,7 @@ namespace QSB
var netIds = connection.ClientOwnedObjects.Select(x => x.Value).ToArray();
GlobalMessenger<uint, uint[]>.FireEvent(EventNames.QSBPlayerLeave, player.PlayerId, netIds);
foreach (var item in WorldRegistry.OrbSyncList)
foreach (var item in QSBWorldSync.OrbSyncList)
{
var identity = item.GetComponent<QSBNetworkIdentity>();
if (identity.ClientAuthorityOwner == connection)
@ -262,10 +262,10 @@ namespace QSB
QSBPlayerManager.PlayerList.ForEach(player => player.HudMarker?.Remove());
QSBNetworkServer.connections.ToList().ForEach(CleanupConnection);
WorldRegistry.RemoveObjects<QSBOrbSlot>();
WorldRegistry.RemoveObjects<QSBElevator>();
WorldRegistry.RemoveObjects<QSBGeyser>();
WorldRegistry.RemoveObjects<QSBSector>();
QSBWorldSync.RemoveWorldObjects<QSBOrbSlot>();
QSBWorldSync.RemoveWorldObjects<QSBElevator>();
QSBWorldSync.RemoveWorldObjects<QSBGeyser>();
QSBWorldSync.RemoveWorldObjects<QSBSector>();
base.OnStopServer();
}

View File

@ -32,20 +32,20 @@ namespace QSB.SectorSync
public void RebuildSectors()
{
DebugLog.DebugWrite("Rebuilding sectors...", MessageType.Warning);
WorldRegistry.RemoveObjects<QSBSector>();
QSBWorldSync.RemoveWorldObjects<QSBSector>();
var sectors = Resources.FindObjectsOfTypeAll<Sector>().ToList();
for (var id = 0; id < sectors.Count; id++)
{
var qsbSector = WorldRegistry.GetObject<QSBSector>(id) ?? new QSBSector();
var qsbSector = QSBWorldSync.GetWorldObject<QSBSector>(id) ?? new QSBSector();
qsbSector.Init(sectors[id], id);
WorldRegistry.AddObject(qsbSector);
QSBWorldSync.AddWorldObject(qsbSector);
}
IsReady = WorldRegistry.GetObjects<QSBSector>().Any();
IsReady = QSBWorldSync.GetWorldObjects<QSBSector>().Any();
}
public QSBSector GetClosestSector(Transform trans)
{
return WorldRegistry.GetObjects<QSBSector>()
return QSBWorldSync.GetWorldObjects<QSBSector>()
.Where(sector => sector.Sector != null && !_sectorBlacklist.Contains(sector.Type))
.OrderBy(sector => Vector3.Distance(sector.Position, trans.position))
.First();

View File

@ -7,7 +7,6 @@ namespace QSB.TimeSync.Events
public override EventType Type => EventType.ServerTime;
public override void SetupListener() => GlobalMessenger<float, int>.AddListener(EventNames.QSBServerTime, Handler);
public override void CloseListener() => GlobalMessenger<float, int>.RemoveListener(EventNames.QSBServerTime, Handler);
private void Handler(float time, int count) => SendEvent(CreateMessage(time, count));

View File

@ -9,7 +9,7 @@ namespace QSB.TransformSync
public NomaiInterfaceOrb AttachedOrb { get; private set; }
public Transform OrbTransform { get; private set; }
private int Index => WorldRegistry.OrbSyncList.IndexOf(this);
private int Index => QSBWorldSync.OrbSyncList.IndexOf(this);
private bool _isInitialized;
private bool _isReady;
@ -18,20 +18,20 @@ namespace QSB.TransformSync
public override void OnStartClient()
{
DontDestroyOnLoad(this);
WorldRegistry.OrbSyncList.Add(this);
QSBWorldSync.OrbSyncList.Add(this);
QSB.Helper.Events.Unity.RunWhen(() => QSB.HasWokenUp, () => QSB.Helper.Events.Unity.FireOnNextUpdate(OnReady));
}
private void OnReady()
{
AttachedOrb = WorldRegistry.OldOrbList[Index];
AttachedOrb = QSBWorldSync.OldOrbList[Index];
_isReady = true;
}
private void OnDestroy()
{
WorldRegistry.OrbSyncList.Remove(this);
QSBWorldSync.OrbSyncList.Remove(this);
}
protected void Init()

View File

@ -9,14 +9,15 @@ using System.Reflection;
namespace QSB.WorldSync
{
public static class WorldRegistry
public static class QSBWorldSync
{
private static readonly List<WorldObject> WorldObjects = new List<WorldObject>();
public static List<NomaiOrbTransformSync> OrbSyncList = new List<NomaiOrbTransformSync>();
public static List<NomaiInterfaceOrb> OldOrbList = new List<NomaiInterfaceOrb>();
public static List<CharacterDialogueTree> OldDialogueTrees = new List<CharacterDialogueTree>();
public static Dictionary<string, bool> DialogueConditions { get; } = new Dictionary<string, bool>();
public static void AddObject(WorldObject worldObject)
public static void AddWorldObject(WorldObject worldObject)
{
if (WorldObjects.Contains(worldObject))
{
@ -25,17 +26,17 @@ namespace QSB.WorldSync
WorldObjects.Add(worldObject);
}
public static IEnumerable<T> GetObjects<T>()
public static IEnumerable<T> GetWorldObjects<T>()
{
return WorldObjects.OfType<T>();
}
public static T GetObject<T>(int id) where T : WorldObject
public static T GetWorldObject<T>(int id) where T : WorldObject
{
return GetObjects<T>().FirstOrDefault(x => x.ObjectId == id);
return GetWorldObjects<T>().FirstOrDefault(x => x.ObjectId == id);
}
public static void RemoveObjects<T>() where T : WorldObject
public static void RemoveWorldObjects<T>() where T : WorldObject
{
WorldObjects.RemoveAll(x => x.GetType() == typeof(T));
}
@ -44,7 +45,7 @@ namespace QSB.WorldSync
{
QSBOrbSlot qsbSlot = null;
NomaiOrbTransformSync orbSync = null;
var slotList = GetObjects<QSBOrbSlot>();
var slotList = GetWorldObjects<QSBOrbSlot>();
if (slotList.Count() == 0)
{
return;
@ -82,5 +83,15 @@ namespace QSB.WorldSync
del.DynamicInvoke(instance);
}
}
public static void AddDialogueCondition(string name, bool state)
{
if (!QSB.IsServer)
{
DebugLog.DebugWrite("Warning - Cannot write to condition dict when not server!", MessageType.Warning);
return;
}
DialogueConditions[name] = state;
}
}
}