mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-02-20 15:41:01 +00:00
test
This commit is contained in:
parent
3693dd25be
commit
4fc6d55537
@ -13,6 +13,12 @@ namespace QSB.Animation
|
||||
GlobalMessenger.AddListener(EventNames.RemoveSuit, () => SendEvent(CreateMessage(false)));
|
||||
}
|
||||
|
||||
public override void CloseListener()
|
||||
{
|
||||
GlobalMessenger.RemoveListener(EventNames.SuitUp, () => SendEvent(CreateMessage(true)));
|
||||
GlobalMessenger.RemoveListener(EventNames.RemoveSuit, () => SendEvent(CreateMessage(false)));
|
||||
}
|
||||
|
||||
private ToggleMessage CreateMessage(bool value) => new ToggleMessage
|
||||
{
|
||||
SenderId = LocalPlayerId,
|
||||
|
@ -13,6 +13,11 @@ namespace QSB.DeathSync
|
||||
GlobalMessenger<DeathType>.AddListener(EventNames.QSBPlayerDeath, type => SendEvent(CreateMessage(type)));
|
||||
}
|
||||
|
||||
public override void CloseListener()
|
||||
{
|
||||
GlobalMessenger<DeathType>.RemoveListener(EventNames.QSBPlayerDeath, type => SendEvent(CreateMessage(type)));
|
||||
}
|
||||
|
||||
private PlayerDeathMessage CreateMessage(DeathType type) => new PlayerDeathMessage
|
||||
{
|
||||
SenderId = LocalPlayerId,
|
||||
|
@ -13,6 +13,11 @@ namespace QSB.ElevatorSync
|
||||
GlobalMessenger<int, ElevatorDirection>.AddListener(EventNames.QSBStartLift, (id, direction) => SendEvent(CreateMessage(id, direction)));
|
||||
}
|
||||
|
||||
public override void CloseListener()
|
||||
{
|
||||
GlobalMessenger<int, ElevatorDirection>.RemoveListener(EventNames.QSBStartLift, (id, direction) => SendEvent(CreateMessage(id, direction)));
|
||||
}
|
||||
|
||||
private ElevatorMessage CreateMessage(int id, ElevatorDirection direction) => new ElevatorMessage
|
||||
{
|
||||
SenderId = PlayerRegistry.LocalPlayer.NetId,
|
||||
|
@ -1,10 +1,16 @@
|
||||
using QSB.Animation;
|
||||
using OWML.ModHelper.Events;
|
||||
using QSB.Animation;
|
||||
using QSB.DeathSync;
|
||||
using QSB.ElevatorSync;
|
||||
using QSB.GeyserSync;
|
||||
using QSB.Messaging;
|
||||
using QSB.TimeSync;
|
||||
using QSB.Tools;
|
||||
using QSB.TransformSync;
|
||||
using QSB.Utility;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine.Assertions.Must;
|
||||
using UnityEngine.Networking;
|
||||
|
||||
namespace QSB.Events
|
||||
{
|
||||
@ -15,25 +21,51 @@ namespace QSB.Events
|
||||
{
|
||||
public static bool Ready { get; private set; }
|
||||
|
||||
private static List<object> _eventList = new List<object>();
|
||||
|
||||
public static void Init()
|
||||
{
|
||||
new PlayerReadyEvent();
|
||||
new PlayerSuitEvent();
|
||||
new PlayerFlashlightEvent();
|
||||
new PlayerSignalscopeEvent();
|
||||
new PlayerTranslatorEvent();
|
||||
new PlayerProbeLauncherEvent();
|
||||
new PlayerProbeEvent();
|
||||
new PlayerSectorEvent();
|
||||
new PlayerJoinEvent();
|
||||
new PlayerLeaveEvent();
|
||||
new PlayerDeathEvent();
|
||||
new PlayerStatesRequestEvent();
|
||||
new ElevatorEvent();
|
||||
new GeyserEvent();
|
||||
new ServerTimeEvent();
|
||||
_eventList = new List<object>
|
||||
{
|
||||
new PlayerReadyEvent(),
|
||||
new PlayerSuitEvent(),
|
||||
new PlayerFlashlightEvent(),
|
||||
new PlayerSignalscopeEvent(),
|
||||
new PlayerTranslatorEvent(),
|
||||
new PlayerProbeLauncherEvent(),
|
||||
new PlayerProbeEvent(),
|
||||
new PlayerSectorEvent(),
|
||||
new PlayerLeaveEvent(),
|
||||
new PlayerDeathEvent(),
|
||||
new PlayerStatesRequestEvent(),
|
||||
new ElevatorEvent(),
|
||||
new GeyserEvent(),
|
||||
new ServerTimeEvent()
|
||||
};
|
||||
|
||||
var join = new PlayerJoinEvent();
|
||||
join.CloseListener();
|
||||
|
||||
GlobalMessenger<string>.AddListener(EventNames.QSBPlayerJoin, Write);
|
||||
GlobalMessenger<string>.RemoveListener(EventNames.QSBPlayerJoin, Write);
|
||||
|
||||
Ready = true;
|
||||
}
|
||||
|
||||
public static void Write(string test)
|
||||
{
|
||||
DebugLog.ToConsole("GET EVENT");
|
||||
}
|
||||
|
||||
public static void Reset()
|
||||
{
|
||||
Ready = false;
|
||||
foreach (var item in _eventList)
|
||||
{
|
||||
DebugLog.ToConsole("Closing listener for " + item.GetType().Name);
|
||||
item.Invoke("CloseListener");
|
||||
}
|
||||
_eventList = new List<object>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,10 @@
|
||||
using QSB.Messaging;
|
||||
using QSB.TransformSync;
|
||||
using QSB.Utility;
|
||||
using OWML.ModHelper.Events;
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using System.Collections;
|
||||
|
||||
namespace QSB.Events
|
||||
{
|
||||
@ -10,7 +14,19 @@ namespace QSB.Events
|
||||
|
||||
public override void SetupListener()
|
||||
{
|
||||
GlobalMessenger<string>.AddListener(EventNames.QSBPlayerJoin, name => SendEvent(CreateMessage(name)));
|
||||
GlobalMessenger<string>.AddListener(EventNames.QSBPlayerJoin, name => StartSendEvent(CreateMessage(name)));
|
||||
}
|
||||
|
||||
public override void CloseListener()
|
||||
{
|
||||
DebugLog.ToConsole("Close listener for join event");
|
||||
GlobalMessenger<string>.RemoveListener(EventNames.QSBPlayerJoin, name => StartSendEvent(CreateMessage(name)));
|
||||
}
|
||||
|
||||
private void StartSendEvent(PlayerJoinMessage message)
|
||||
{
|
||||
DebugLog.ToConsole("Got fire event for player join, sending message");
|
||||
SendEvent(message);
|
||||
}
|
||||
|
||||
private PlayerJoinMessage CreateMessage(string name) => new PlayerJoinMessage
|
||||
@ -29,6 +45,7 @@ namespace QSB.Events
|
||||
|
||||
public override void OnReceiveLocal(PlayerJoinMessage message)
|
||||
{
|
||||
DebugLog.ToConsole($"OnReceiveLocal player join event, from {message.SenderId}");
|
||||
var player = PlayerRegistry.CreatePlayer(PlayerTransformSync.LocalInstance.netId.Value);
|
||||
player.Name = message.PlayerName;
|
||||
var text = $"Connected to server as {player.Name}.";
|
||||
|
@ -15,6 +15,11 @@ namespace QSB.Events
|
||||
GlobalMessenger<uint, uint[]>.AddListener(EventNames.QSBPlayerLeave, (id, objects) => SendEvent(CreateMessage(id, objects)));
|
||||
}
|
||||
|
||||
public override void CloseListener()
|
||||
{
|
||||
GlobalMessenger<uint, uint[]>.RemoveListener(EventNames.QSBPlayerLeave, (id, objects) => SendEvent(CreateMessage(id, objects)));
|
||||
}
|
||||
|
||||
private PlayerLeaveMessage CreateMessage(uint id, uint[] objects) => new PlayerLeaveMessage
|
||||
{
|
||||
SenderId = id,
|
||||
|
@ -1,4 +1,5 @@
|
||||
using QSB.Messaging;
|
||||
using QSB.Utility;
|
||||
|
||||
namespace QSB.Events
|
||||
{
|
||||
@ -11,6 +12,12 @@ namespace QSB.Events
|
||||
GlobalMessenger<bool>.AddListener(EventNames.QSBPlayerReady, ready => SendEvent(CreateMessage(ready)));
|
||||
}
|
||||
|
||||
public override void CloseListener()
|
||||
{
|
||||
DebugLog.ToConsole("Close listener for ready event");
|
||||
GlobalMessenger<bool>.RemoveListener(EventNames.QSBPlayerReady, ready => SendEvent(CreateMessage(ready)));
|
||||
}
|
||||
|
||||
private ToggleMessage CreateMessage(bool ready) => new ToggleMessage
|
||||
{
|
||||
SenderId = LocalPlayerId,
|
||||
|
@ -13,6 +13,11 @@ namespace QSB.Events
|
||||
GlobalMessenger.AddListener(EventNames.QSBPlayerStatesRequest, () => SendEvent(CreateMessage()));
|
||||
}
|
||||
|
||||
public override void CloseListener()
|
||||
{
|
||||
GlobalMessenger.RemoveListener(EventNames.QSBPlayerStatesRequest, () => SendEvent(CreateMessage()));
|
||||
}
|
||||
|
||||
private PlayerMessage CreateMessage() => new PlayerMessage
|
||||
{
|
||||
SenderId = PlayerTransformSync.LocalInstance.netId.Value
|
||||
|
@ -36,6 +36,11 @@ namespace QSB.Events
|
||||
/// </summary>
|
||||
public abstract void SetupListener();
|
||||
|
||||
/// <summary>
|
||||
/// Called to remove all set up activators.
|
||||
/// </summary>
|
||||
public abstract void CloseListener();
|
||||
|
||||
/// <summary>
|
||||
/// Called on every client that didn't send the event.
|
||||
/// </summary>
|
||||
@ -58,20 +63,25 @@ namespace QSB.Events
|
||||
/// <param name="message"></param>
|
||||
public virtual void OnServerReceive(T message)
|
||||
{
|
||||
DebugLog.ToConsole("server get message");
|
||||
_eventHandler.SendToAll(message);
|
||||
}
|
||||
|
||||
public void SendEvent(T message)
|
||||
{
|
||||
DebugLog.ToConsole("Starting wait to send event...");
|
||||
UnityHelper.Instance.RunWhen(() => PlayerTransformSync.LocalInstance != null, () => Send(message));
|
||||
}
|
||||
|
||||
private void Send(T message)
|
||||
{
|
||||
DebugLog.ToConsole("sending event!");
|
||||
_eventHandler.SendToServer(message);
|
||||
}
|
||||
|
||||
private void OnClientReceive(T message)
|
||||
{
|
||||
DebugLog.ToConsole("Got event!");
|
||||
if (PlayerRegistry.IsBelongingToLocalPlayer(message.SenderId))
|
||||
{
|
||||
OnReceiveLocal(message);
|
||||
|
@ -13,6 +13,11 @@ namespace QSB.GeyserSync
|
||||
GlobalMessenger<int, bool>.AddListener(EventNames.QSBGeyserState, (id, state) => SendEvent(CreateMessage(id, state)));
|
||||
}
|
||||
|
||||
public override void CloseListener()
|
||||
{
|
||||
GlobalMessenger<int, bool>.RemoveListener(EventNames.QSBGeyserState, (id, state) => SendEvent(CreateMessage(id, state)));
|
||||
}
|
||||
|
||||
private GeyserMessage CreateMessage(int id, bool state) => new GeyserMessage
|
||||
{
|
||||
SenderId = PlayerRegistry.LocalPlayer.NetId,
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using QSB.Utility;
|
||||
using System;
|
||||
using UnityEngine.Networking;
|
||||
|
||||
namespace QSB.Messaging
|
||||
@ -26,6 +27,7 @@ namespace QSB.Messaging
|
||||
|
||||
private void Init()
|
||||
{
|
||||
DebugLog.ToConsole($"Registering handler on server id {NetworkServer.serverHostId}");
|
||||
NetworkServer.RegisterHandler((short)_messageType, OnServerReceiveMessageHandler);
|
||||
NetworkManager.singleton.client.RegisterHandler((short)_messageType, OnClientReceiveMessageHandler);
|
||||
}
|
||||
|
@ -117,6 +117,7 @@ namespace QSB
|
||||
|
||||
public override void OnClientConnect(NetworkConnection connection) // Called on the client when connecting to a server
|
||||
{
|
||||
DebugLog.ToConsole("OnClientConnect (connected to server)");
|
||||
base.OnClientConnect(connection);
|
||||
|
||||
gameObject.AddComponent<SectorSync>();
|
||||
@ -137,16 +138,22 @@ namespace QSB
|
||||
|
||||
UnityHelper.Instance.RunWhen(() => PlayerTransformSync.LocalInstance != null, EventList.Init);
|
||||
|
||||
UnityHelper.Instance.RunWhen(() => EventList.Ready,
|
||||
() => GlobalMessenger<string>.FireEvent(EventNames.QSBPlayerJoin, _playerName));
|
||||
UnityHelper.Instance.RunWhen(() => EventList.Ready, () => FireJoinEvent());
|
||||
}
|
||||
|
||||
private void FireJoinEvent()
|
||||
{
|
||||
DebugLog.ToConsole("Firing join event!");
|
||||
GlobalMessenger<string>.FireEvent(EventNames.QSBPlayerJoin, _playerName);
|
||||
}
|
||||
|
||||
public override void OnStopClient() // Called on the client when closing connection
|
||||
{
|
||||
DebugLog.ToScreen("OnStopClient");
|
||||
DebugLog.ToConsole("OnStopClient (disconnecting from server)");
|
||||
Destroy(GetComponent<SectorSync>());
|
||||
Destroy(GetComponent<RespawnOnDeath>());
|
||||
Destroy(GetComponent<PreventShipDestruction>());
|
||||
EventList.Reset();
|
||||
if (IsClientConnected())
|
||||
{
|
||||
PlayerTransformSync.LocalInstance.gameObject.GetComponent<AnimationSync>().Reset();
|
||||
@ -156,7 +163,7 @@ namespace QSB
|
||||
|
||||
public override void OnServerDisconnect(NetworkConnection connection) // Called on the server when any client disconnects
|
||||
{
|
||||
DebugLog.ToScreen("OnServerDisconnect");
|
||||
DebugLog.ToConsole("OnServerDisconnect");
|
||||
|
||||
var playerId = connection.playerControllers[0].gameObject.GetComponent<PlayerTransformSync>().netId.Value;
|
||||
var objectIds = connection.clientOwnedObjects.Select(x => x.Value).ToArray();
|
||||
@ -165,6 +172,11 @@ namespace QSB
|
||||
base.OnServerDisconnect(connection);
|
||||
}
|
||||
|
||||
public override void OnStopServer()
|
||||
{
|
||||
NetworkServer.Reset();
|
||||
}
|
||||
|
||||
private void OnGUI()
|
||||
{
|
||||
GUI.Label(new Rect(10, 10, 200f, 20f), "Name:");
|
||||
|
@ -12,6 +12,11 @@ namespace QSB.TimeSync
|
||||
GlobalMessenger<float, int>.AddListener(EventNames.QSBServerTime, (time, count) => SendEvent(CreateMessage(time, count)));
|
||||
}
|
||||
|
||||
public override void CloseListener()
|
||||
{
|
||||
GlobalMessenger<float, int>.RemoveListener(EventNames.QSBServerTime, (time, count) => SendEvent(CreateMessage(time, count)));
|
||||
}
|
||||
|
||||
private ServerTimeMessage CreateMessage(float time, int count) => new ServerTimeMessage
|
||||
{
|
||||
SenderId = PlayerRegistry.LocalPlayer.NetId,
|
||||
|
@ -13,6 +13,12 @@ namespace QSB.Tools
|
||||
GlobalMessenger.AddListener(EventNames.TurnOffFlashlight, () => SendEvent(CreateMessage(false)));
|
||||
}
|
||||
|
||||
public override void CloseListener()
|
||||
{
|
||||
GlobalMessenger.RemoveListener(EventNames.TurnOnFlashlight, () => SendEvent(CreateMessage(true)));
|
||||
GlobalMessenger.RemoveListener(EventNames.TurnOffFlashlight, () => SendEvent(CreateMessage(false)));
|
||||
}
|
||||
|
||||
private ToggleMessage CreateMessage(bool value) => new ToggleMessage
|
||||
{
|
||||
SenderId = LocalPlayerId,
|
||||
|
@ -13,6 +13,12 @@ namespace QSB.Tools
|
||||
GlobalMessenger<SurveyorProbe>.AddListener(EventNames.RetrieveProbe, probe => SendEvent(CreateMessage(false)));
|
||||
}
|
||||
|
||||
public override void CloseListener()
|
||||
{
|
||||
GlobalMessenger<SurveyorProbe>.RemoveListener(EventNames.LaunchProbe, probe => SendEvent(CreateMessage(true)));
|
||||
GlobalMessenger<SurveyorProbe>.RemoveListener(EventNames.RetrieveProbe, probe => SendEvent(CreateMessage(false)));
|
||||
}
|
||||
|
||||
private ToggleMessage CreateMessage(bool value) => new ToggleMessage
|
||||
{
|
||||
SenderId = LocalPlayerId,
|
||||
|
@ -14,6 +14,12 @@ namespace QSB.Tools
|
||||
GlobalMessenger<ProbeLauncher>.AddListener(EventNames.ProbeLauncherUnequipped, var => SendEvent(CreateMessage(false)));
|
||||
}
|
||||
|
||||
public override void CloseListener()
|
||||
{
|
||||
GlobalMessenger<ProbeLauncher>.RemoveListener(EventNames.ProbeLauncherEquipped, var => SendEvent(CreateMessage(true)));
|
||||
GlobalMessenger<ProbeLauncher>.RemoveListener(EventNames.ProbeLauncherUnequipped, var => SendEvent(CreateMessage(false)));
|
||||
}
|
||||
|
||||
private ToggleMessage CreateMessage(bool value) => new ToggleMessage
|
||||
{
|
||||
SenderId = LocalPlayerId,
|
||||
|
@ -14,6 +14,12 @@ namespace QSB.Tools
|
||||
GlobalMessenger.AddListener(EventNames.UnequipSignalscope, () => SendEvent(CreateMessage(false)));
|
||||
}
|
||||
|
||||
public override void CloseListener()
|
||||
{
|
||||
GlobalMessenger<Signalscope>.RemoveListener(EventNames.EquipSignalscope, var => SendEvent(CreateMessage(true)));
|
||||
GlobalMessenger.RemoveListener(EventNames.UnequipSignalscope, () => SendEvent(CreateMessage(false)));
|
||||
}
|
||||
|
||||
private ToggleMessage CreateMessage(bool value) => new ToggleMessage
|
||||
{
|
||||
SenderId = LocalPlayerId,
|
||||
|
@ -14,6 +14,12 @@ namespace QSB.Tools
|
||||
GlobalMessenger.AddListener(EventNames.UnequipTranslator, () => SendEvent(CreateMessage(false)));
|
||||
}
|
||||
|
||||
public override void CloseListener()
|
||||
{
|
||||
GlobalMessenger.RemoveListener(EventNames.EquipTranslator, () => SendEvent(CreateMessage(true)));
|
||||
GlobalMessenger.RemoveListener(EventNames.UnequipTranslator, () => SendEvent(CreateMessage(false)));
|
||||
}
|
||||
|
||||
private ToggleMessage CreateMessage(bool value) => new ToggleMessage
|
||||
{
|
||||
SenderId = LocalPlayerId,
|
||||
|
@ -13,6 +13,11 @@ namespace QSB.TransformSync
|
||||
GlobalMessenger<uint, Sector.Name, string>.AddListener(EventNames.QSBSectorChange, (netId, sectorId, sectorName) => SendEvent(CreateMessage(netId, sectorId, sectorName)));
|
||||
}
|
||||
|
||||
public override void CloseListener()
|
||||
{
|
||||
GlobalMessenger<uint, Sector.Name, string>.RemoveListener(EventNames.QSBSectorChange, (netId, sectorId, sectorName) => SendEvent(CreateMessage(netId, sectorId, sectorName)));
|
||||
}
|
||||
|
||||
private SectorMessage CreateMessage(uint netId, Sector.Name sectorId, string sectorName) => new SectorMessage
|
||||
{
|
||||
SenderId = netId,
|
||||
|
Loading…
x
Reference in New Issue
Block a user