mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-02-10 12:39:53 +00:00
added mor events
This commit is contained in:
parent
1effae0bd3
commit
3e6adf984c
@ -41,9 +41,7 @@ namespace QSB.Events
|
||||
|
||||
private void OnClientReceiveMessage(EventMessage message)
|
||||
{
|
||||
DebugLog.ToConsole($"Received event message of {message.EventType}");
|
||||
var player = PlayerRegistry.GetPlayer(message.SenderId);
|
||||
if (message.SenderId == PlayerRegistry.LocalPlayer.NetId)
|
||||
if (message.SenderId == PlayerRegistry.LocalPlayer?.NetId)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -21,7 +21,6 @@ namespace QSB.Events
|
||||
EventType = reader.ReadInt32();
|
||||
var guff = reader.ReadString();
|
||||
var strings = guff.Split('|');
|
||||
DebugLog.ToConsole($"Read {guff}");
|
||||
var temp = new List<object>();
|
||||
foreach (var item in strings)
|
||||
{
|
||||
@ -40,7 +39,6 @@ namespace QSB.Events
|
||||
data += "|" + ObjectToString(item);
|
||||
}
|
||||
data = data.TrimStart('|');
|
||||
DebugLog.ToConsole($"Writing {data}");
|
||||
writer.Write(data);
|
||||
}
|
||||
|
||||
|
@ -14,6 +14,13 @@ namespace QSB.Events
|
||||
public static void Init()
|
||||
{
|
||||
EventList.Add(new PlayerFlashlightEvent());
|
||||
EventList.Add(new PlayerSignalscopeEvent());
|
||||
EventList.Add(new PlayerTrasnlatorEvent());
|
||||
//EventList.Add(new PlayerProbeLauncherEvent());
|
||||
//EventList.Add(new PlayerProbeEvent());
|
||||
//EventList.Add(new PlayerSectorChange());
|
||||
EventList.Add(new PlayerJoinEvent());
|
||||
//EventList.Add(new PlayerLeaveEvent());
|
||||
|
||||
foreach (var item in EventList)
|
||||
{
|
||||
@ -22,12 +29,11 @@ namespace QSB.Events
|
||||
}
|
||||
}
|
||||
|
||||
public static void SendEvent(QSBEvent _event, params object[] data)
|
||||
public static void SendEvent(QSBEvent _event, uint sender, params object[] data)
|
||||
{
|
||||
DebugLog.ToConsole($"Sending {_event.Type}");
|
||||
var message = new EventMessage
|
||||
{
|
||||
SenderId = PlayerRegistry.LocalPlayer.NetId,
|
||||
SenderId = sender,
|
||||
EventType = (int)_event.Type,
|
||||
Data = data
|
||||
};
|
||||
|
@ -5,6 +5,9 @@
|
||||
FlashlightActiveChange,
|
||||
SignalscopeActiveChange,
|
||||
TranslatorActiveChange,
|
||||
ProbeLauncherActiveChange
|
||||
ProbeLauncherActiveChange,
|
||||
PlayerJoin,
|
||||
PlayerLeave,
|
||||
PlayerSectorChange
|
||||
}
|
||||
}
|
||||
|
@ -1,24 +0,0 @@
|
||||
using QSB.Messaging;
|
||||
using UnityEngine.Networking;
|
||||
|
||||
namespace QSB.Events
|
||||
{
|
||||
public class JoinMessage : PlayerMessage
|
||||
{
|
||||
public override MessageType MessageType => MessageType.Join;
|
||||
|
||||
public string PlayerName { get; set; }
|
||||
|
||||
public override void Deserialize(NetworkReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
PlayerName = reader.ReadString();
|
||||
}
|
||||
|
||||
public override void Serialize(NetworkWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(PlayerName);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,46 +1,41 @@
|
||||
using QSB.Utility;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace QSB.Events
|
||||
namespace QSB.Events
|
||||
{
|
||||
class PlayerFlashlightEvent : QSBEvent
|
||||
{
|
||||
public override EventType Type => EventType.FlashlightActiveChange;
|
||||
|
||||
public override void SetupListener()
|
||||
{
|
||||
GlobalMessenger.AddListener("TurnOnFlashlight", () => EventSender.SendEvent(this, PlayerRegistry.LocalPlayer.NetId, true));
|
||||
GlobalMessenger.AddListener("TurnOffFlashlight", () => EventSender.SendEvent(this, PlayerRegistry.LocalPlayer.NetId, false));
|
||||
}
|
||||
|
||||
public override void OnReceive(uint sender, object[] data)
|
||||
{
|
||||
var player = PlayerRegistry.GetPlayer(sender);
|
||||
|
||||
var tool = player.FlashLight;
|
||||
player.UpdateState(State.Flashlight, (bool)data[0]);
|
||||
if ((bool)data[0] == true)
|
||||
{
|
||||
player.FlashLight.TurnOn();
|
||||
tool.TurnOn();
|
||||
}
|
||||
else
|
||||
{
|
||||
player.FlashLight.TurnOff();
|
||||
tool.TurnOff();
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnReceiveLocal(object[] data)
|
||||
{
|
||||
var tool = PlayerRegistry.LocalPlayer.FlashLight;
|
||||
if ((bool)data[0] == true)
|
||||
{
|
||||
PlayerRegistry.LocalPlayer.FlashLight.TurnOn();
|
||||
tool.TurnOn();
|
||||
}
|
||||
else
|
||||
{
|
||||
PlayerRegistry.LocalPlayer.FlashLight.TurnOff();
|
||||
tool.TurnOff();
|
||||
}
|
||||
}
|
||||
|
||||
public override void SetupListener()
|
||||
{
|
||||
GlobalMessenger.AddListener("TurnOnFlashlight", () => EventSender.SendEvent(this, true));
|
||||
GlobalMessenger.AddListener("TurnOffFlashlight", () => EventSender.SendEvent(this, true));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,55 +0,0 @@
|
||||
using System.Collections;
|
||||
using QSB.Messaging;
|
||||
using QSB.TransformSync;
|
||||
using QSB.Utility;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Networking;
|
||||
|
||||
namespace QSB.Events
|
||||
{
|
||||
public class PlayerJoin : NetworkBehaviour
|
||||
{
|
||||
public static string MyName { get; private set; }
|
||||
|
||||
private MessageHandler<JoinMessage> _joinHandler;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
_joinHandler = new MessageHandler<JoinMessage>();
|
||||
_joinHandler.OnClientReceiveMessage += OnClientReceiveMessage;
|
||||
_joinHandler.OnServerReceiveMessage += OnServerReceiveMessage;
|
||||
}
|
||||
|
||||
// Called when joining a server
|
||||
public void Join(string playerName)
|
||||
{
|
||||
MyName = playerName;
|
||||
StartCoroutine(SendJoinMessage(playerName));
|
||||
}
|
||||
|
||||
// Send join message with player name and ID
|
||||
private IEnumerator SendJoinMessage(string playerName)
|
||||
{
|
||||
yield return new WaitUntil(() => PlayerTransformSync.LocalInstance != null);
|
||||
var message = new JoinMessage
|
||||
{
|
||||
PlayerName = playerName,
|
||||
SenderId = PlayerTransformSync.LocalInstance.netId.Value
|
||||
};
|
||||
_joinHandler.SendToServer(message);
|
||||
}
|
||||
|
||||
private void OnServerReceiveMessage(JoinMessage message)
|
||||
{
|
||||
_joinHandler.SendToAll(message);
|
||||
}
|
||||
|
||||
private void OnClientReceiveMessage(JoinMessage message)
|
||||
{
|
||||
var player = PlayerRegistry.CreatePlayer(message.SenderId);
|
||||
player.Name = message.PlayerName;
|
||||
player.IsReady = true;
|
||||
DebugLog.ToAll(message.PlayerName, "joined!");
|
||||
}
|
||||
}
|
||||
}
|
28
QSB/Events/PlayerJoinEvent.cs
Normal file
28
QSB/Events/PlayerJoinEvent.cs
Normal file
@ -0,0 +1,28 @@
|
||||
using QSB.TransformSync;
|
||||
using QSB.Utility;
|
||||
|
||||
namespace QSB.Events
|
||||
{
|
||||
class PlayerJoinEvent : QSBEvent
|
||||
{
|
||||
public override EventType Type => EventType.PlayerJoin;
|
||||
|
||||
public override void SetupListener()
|
||||
{
|
||||
GlobalMessenger<string>.AddListener("QSBPlayerJoin", var => EventSender.SendEvent(this, PlayerTransformSync.LocalInstance.netId.Value, var));
|
||||
}
|
||||
|
||||
public override void OnReceive(uint sender, object[] data)
|
||||
{
|
||||
var player = PlayerRegistry.CreatePlayer(sender);
|
||||
player.Name = (string)data[0];
|
||||
player.IsReady = true;
|
||||
DebugLog.ToAll($"{player.Name} joined!");
|
||||
}
|
||||
|
||||
public override void OnReceiveLocal(object[] data)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
41
QSB/Events/PlayerSignalscopeEvent.cs
Normal file
41
QSB/Events/PlayerSignalscopeEvent.cs
Normal file
@ -0,0 +1,41 @@
|
||||
namespace QSB.Events
|
||||
{
|
||||
class PlayerSignalscopeEvent : QSBEvent
|
||||
{
|
||||
public override EventType Type => EventType.SignalscopeActiveChange;
|
||||
|
||||
public override void SetupListener()
|
||||
{
|
||||
GlobalMessenger<Signalscope>.AddListener("EquipSignalscope", var => EventSender.SendEvent(this, PlayerRegistry.LocalPlayer.NetId, true));
|
||||
GlobalMessenger.AddListener("UnequipSignalscope", () => EventSender.SendEvent(this, PlayerRegistry.LocalPlayer.NetId, false));
|
||||
}
|
||||
|
||||
public override void OnReceive(uint sender, object[] data)
|
||||
{
|
||||
var player = PlayerRegistry.GetPlayer(sender);
|
||||
var tool = player.Signalscope;
|
||||
player.UpdateState(State.Signalscope, (bool)data[0]);
|
||||
if ((bool)data[0] == true)
|
||||
{
|
||||
tool.EquipTool();
|
||||
}
|
||||
else
|
||||
{
|
||||
tool.UnequipTool();
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnReceiveLocal(object[] data)
|
||||
{
|
||||
var tool = PlayerRegistry.LocalPlayer.Signalscope;
|
||||
if ((bool)data[0] == true)
|
||||
{
|
||||
tool.EquipTool();
|
||||
}
|
||||
else
|
||||
{
|
||||
tool.UnequipTool();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
41
QSB/Events/PlayerTranslatorEvent.cs
Normal file
41
QSB/Events/PlayerTranslatorEvent.cs
Normal file
@ -0,0 +1,41 @@
|
||||
namespace QSB.Events
|
||||
{
|
||||
class PlayerTrasnlatorEvent : QSBEvent
|
||||
{
|
||||
public override EventType Type => EventType.TranslatorActiveChange;
|
||||
|
||||
public override void SetupListener()
|
||||
{
|
||||
GlobalMessenger.AddListener("EquipTranslator", () => EventSender.SendEvent(this, PlayerRegistry.LocalPlayer.NetId, true));
|
||||
GlobalMessenger.AddListener("UnequipTranslator", () => EventSender.SendEvent(this, PlayerRegistry.LocalPlayer.NetId, false));
|
||||
}
|
||||
|
||||
public override void OnReceive(uint sender, object[] data)
|
||||
{
|
||||
var player = PlayerRegistry.GetPlayer(sender);
|
||||
var tool = player.Translator;
|
||||
player.UpdateState(State.Translator, (bool)data[0]);
|
||||
if ((bool)data[0] == true)
|
||||
{
|
||||
tool.EquipTool();
|
||||
}
|
||||
else
|
||||
{
|
||||
tool.UnequipTool();
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnReceiveLocal(object[] data)
|
||||
{
|
||||
var tool = PlayerRegistry.LocalPlayer.Translator;
|
||||
if ((bool)data[0] == true)
|
||||
{
|
||||
tool.EquipTool();
|
||||
}
|
||||
else
|
||||
{
|
||||
tool.UnequipTool();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -9,8 +9,8 @@ namespace QSB.Events
|
||||
{
|
||||
public abstract EventType Type { get; }
|
||||
|
||||
public abstract void SetupListener();
|
||||
public abstract void OnReceive(uint sender, object[] data);
|
||||
public abstract void OnReceiveLocal(object[] data);
|
||||
public abstract void SetupListener();
|
||||
}
|
||||
}
|
||||
|
@ -114,6 +114,9 @@
|
||||
<Compile Include="Animation\AnimTriggerMessage.cs" />
|
||||
<Compile Include="Animation\AnimTrigger.cs" />
|
||||
<Compile Include="Events\PlayerFlashlightEvent.cs" />
|
||||
<Compile Include="Events\PlayerJoinEvent.cs" />
|
||||
<Compile Include="Events\PlayerSignalscopeEvent.cs" />
|
||||
<Compile Include="Events\PlayerTranslatorEvent.cs" />
|
||||
<Compile Include="Events\QSBEvent.cs" />
|
||||
<Compile Include="Tools\QSBFlashlight.cs" />
|
||||
<Compile Include="Tools\QSBProbe.cs" />
|
||||
@ -129,12 +132,10 @@
|
||||
<Compile Include="Events\EventHandler.cs" />
|
||||
<Compile Include="Events\EventMessage.cs" />
|
||||
<Compile Include="Events\Necronomicon.cs" />
|
||||
<Compile Include="Events\JoinMessage.cs" />
|
||||
<Compile Include="Events\LeaveMessage.cs" />
|
||||
<Compile Include="Events\PlayerLeave.cs" />
|
||||
<Compile Include="Utility\DebugLog.cs" />
|
||||
<Compile Include="Events\DeathMessage.cs" />
|
||||
<Compile Include="Events\PlayerJoin.cs" />
|
||||
<Compile Include="Events\PlayerMessage.cs" />
|
||||
<Compile Include="Events\StateRequestMessage.cs" />
|
||||
<Compile Include="Messaging\MessageHandler.cs" />
|
||||
|
@ -119,7 +119,6 @@ namespace QSB
|
||||
base.OnClientConnect(connection);
|
||||
|
||||
gameObject.AddComponent<SectorSync>();
|
||||
gameObject.AddComponent<PlayerJoin>().Join(_playerName);
|
||||
gameObject.AddComponent<PlayerLeave>();
|
||||
gameObject.AddComponent<RespawnOnDeath>();
|
||||
gameObject.AddComponent<PreventShipDestruction>();
|
||||
@ -134,13 +133,14 @@ namespace QSB
|
||||
|
||||
OnNetworkManagerReady.Invoke();
|
||||
IsReady = true;
|
||||
|
||||
GlobalMessenger<string>.FireEvent("QSBPlayerJoin", _playerName);
|
||||
}
|
||||
|
||||
public override void OnStopClient() // Called on the client when closing connection
|
||||
{
|
||||
DebugLog.ToScreen("OnStopClient");
|
||||
Destroy(GetComponent<SectorSync>());
|
||||
Destroy(GetComponent<PlayerJoin>());
|
||||
Destroy(GetComponent<PlayerLeave>());
|
||||
Destroy(GetComponent<RespawnOnDeath>());
|
||||
Destroy(GetComponent<PreventShipDestruction>());
|
||||
|
Loading…
x
Reference in New Issue
Block a user