moved sector stuff into events

This commit is contained in:
Mister_Nebula 2020-08-09 13:54:05 +01:00
parent a07e1a9a44
commit 7aa44afdb9
2 changed files with 22 additions and 35 deletions

View File

@ -1,4 +1,6 @@
using QSB.Messaging;
using QSB.TransformSync;
using QSB.Utility;
namespace QSB.Events
{
@ -8,7 +10,7 @@ namespace QSB.Events
public override void SetupListener()
{
GlobalMessenger<uint, int, string>.AddListener("QSBPlayerSectorChange", (netId, id, name) => SendEvent(
GlobalMessenger<uint, int, string>.AddListener("QSBSectorChange", (netId, id, name) => SendEvent(
new SectorMessage {
SenderId = netId,
SectorId = id,
@ -18,7 +20,17 @@ namespace QSB.Events
public override void OnReceive(SectorMessage message)
{
throw new System.NotImplementedException();
var sector = SectorSync.LocalInstance.FindSectorByName((Sector.Name)message.SectorId, message.SectorName);
if (sector == null)
{
DebugLog.ToScreen($"Sector {message.SectorName},{(Sector.Name)message.SectorId} not found!");
return;
}
var transformSync = PlayerRegistry.GetTransformSync(message.SenderId);
DebugLog.ToScreen($"{transformSync.GetType().Name} of ID {message.SenderId} set to {message.SectorName}");
transformSync.ReferenceTransform = sector.transform;
}
}
}

View File

@ -9,7 +9,8 @@ namespace QSB.TransformSync
public class SectorSync : MonoBehaviour
{
private readonly List<Sector> _allSectors = new List<Sector>();
private MessageHandler<SectorMessage> _sectorHandler;
public static SectorSync LocalInstance { get; private set; }
private readonly Sector.Name[] _sectorBlacklist =
{
@ -19,6 +20,7 @@ namespace QSB.TransformSync
private void Awake()
{
LocalInstance = this;
QSB.Helper.Events.Subscribe<Sector>(OWML.Common.Events.AfterAwake);
QSB.Helper.Events.Event += OnEvent;
}
@ -34,50 +36,23 @@ namespace QSB.TransformSync
}
}
private void Start()
{
_sectorHandler = new MessageHandler<SectorMessage>(MessageType.Sector);
_sectorHandler.OnClientReceiveMessage += OnClientReceiveMessage;
_sectorHandler.OnServerReceiveMessage += OnServerReceiveMessage;
}
private void SendSector(uint id, Sector sector)
{
DebugLog.ToScreen($"Sending sector {sector.name} for id {id}");
GlobalMessenger<uint, int, string>.FireEvent("QSBSectorChange", id, (int)sector.GetName(), sector.name);
}
private Sector FindSectorByName(Sector.Name sectorName, string goName)
public Sector FindSectorByName(Sector.Name sectorName, string goName)
{
return _allSectors
.FirstOrDefault(sector => sector != null &&
sector.GetName() == sectorName &&
sector.name == goName);
}
private void OnClientReceiveMessage(SectorMessage message)
{
var sector = FindSectorByName((Sector.Name)message.SectorId, message.SectorName);
if (_allSectors.Count == 0)
{
DebugLog.ToConsole("Error: _allSectors is empty!", OWML.Common.MessageType.Error);
}
if (sector == null)
{
DebugLog.ToScreen($"Sector {message.SectorName},{(Sector.Name)message.SectorId} not found!");
return;
}
var transformSync = PlayerRegistry.GetTransformSync(message.SenderId);
DebugLog.ToScreen($"{transformSync.GetType().Name} of ID {message.SenderId} set to {message.SectorName}");
transformSync.ReferenceTransform = sector.transform;
}
private void OnServerReceiveMessage(SectorMessage message)
{
_sectorHandler.SendToAll(message);
return _allSectors
.FirstOrDefault(sector => sector != null &&
sector.GetName() == sectorName &&
sector.name == goName);
}
private void Update()