This commit is contained in:
Mister_Nebula 2020-08-10 11:45:24 +01:00
parent 83e8d9d714
commit ff6f771098
17 changed files with 93 additions and 20 deletions

View File

@ -6,6 +6,7 @@
public static void Init()
{
new PlayerReadyEvent();
new PlayerSuitEvent();
new PlayerFlashlightEvent();
new PlayerSignalscopeEvent();

View File

@ -30,7 +30,7 @@ namespace QSB.Events
public override void OnReceiveLocal(ToggleMessage message)
{
PlayerRegistry.LocalPlayer.UpdateState(State.Flashlight, message.ToggleValue);
PlayerRegistry.LocalPlayer.FlashLight.UpdateState(message.ToggleValue);
//PlayerRegistry.LocalPlayer.FlashLight.UpdateState(message.ToggleValue);
}
}
}

View File

@ -31,7 +31,7 @@ namespace QSB.Events
public override void OnReceiveLocal(ToggleMessage message)
{
PlayerRegistry.LocalPlayer.UpdateState(State.ProbeLauncher, message.ToggleValue);
PlayerRegistry.LocalPlayer.ProbeLauncher.ChangeEquipState(message.ToggleValue);
//PlayerRegistry.LocalPlayer.ProbeLauncher.ChangeEquipState(message.ToggleValue);
}
}
}

View File

@ -0,0 +1,35 @@
using QSB.Messaging;
using QSB.Utility;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace QSB.Events
{
class PlayerReadyEvent : QSBEvent<ToggleMessage>
{
public override MessageType Type => MessageType.PlayerReady;
public override void SetupListener()
{
GlobalMessenger<bool>.AddListener("QSBPlayerReady", ready => SendEvent(
new ToggleMessage {
SenderId = PlayerRegistry.LocalPlayer.NetId,
ToggleValue = ready
}));
}
public override void OnReceive(ToggleMessage message)
{
return;
}
public override void OnServerReceive(ToggleMessage message)
{
DebugLog.ToConsole("Received ready message from " + message.SenderId);
PlayerRegistry.GetPlayer(message.SenderId).IsReady = message.ToggleValue;
PlayerState.LocalInstance.Send();
}
}
}

View File

@ -31,7 +31,7 @@ namespace QSB.Events
public override void OnReceiveLocal(ToggleMessage message)
{
PlayerRegistry.LocalPlayer.UpdateState(State.Signalscope, message.ToggleValue);
PlayerRegistry.LocalPlayer.Signalscope.ChangeEquipState(message.ToggleValue);
//PlayerRegistry.LocalPlayer.Signalscope.ChangeEquipState(message.ToggleValue);
}
}
}

View File

@ -31,7 +31,7 @@ namespace QSB.Events
public override void OnReceiveLocal(ToggleMessage message)
{
PlayerRegistry.LocalPlayer.UpdateState(State.Translator, message.ToggleValue);
PlayerRegistry.LocalPlayer.Translator.ChangeEquipState(message.ToggleValue);
//PlayerRegistry.LocalPlayer.Translator.ChangeEquipState(message.ToggleValue);
}
}
}

View File

@ -27,8 +27,8 @@ namespace QSB.Events
protected QSBEvent()
{
_eventHandler = new MessageHandler<T>(Type);
_eventHandler.OnClientReceiveMessage += OnClientReceiveMessage;
_eventHandler.OnServerReceiveMessage += OnServerReceiveMessage;
_eventHandler.OnClientReceiveMessage += OnClientReceive;
_eventHandler.OnServerReceiveMessage += OnServerReceive;
SetupListener();
}
@ -38,12 +38,12 @@ namespace QSB.Events
_eventHandler.SendToServer(message);
}
private void OnServerReceiveMessage(T message)
public virtual void OnServerReceive(T message)
{
_eventHandler.SendToAll(message);
}
private void OnClientReceiveMessage(T message)
private void OnClientReceive(T message)
{
if (message.SenderId == PlayerTransformSync.LocalInstance?.netId.Value)
{

View File

@ -7,9 +7,9 @@ using System.Text;
namespace QSB.Events
{
class WakeUpEvent : QSBEvent<ServerTimeMessage>
class ServerTimeEvent : QSBEvent<ServerTimeMessage>
{
public override MessageType Type => MessageType.WakeUp;
public override MessageType Type => MessageType.ServerTime;
public override void SetupListener()
{

View File

@ -5,7 +5,7 @@ namespace QSB.Messaging
public enum MessageType
{
Sector,
WakeUp,
ServerTime,
AnimTrigger,
FullState,
FullStateRequest,
@ -17,6 +17,7 @@ namespace QSB.Messaging
PlayerJoin,
PlayerLeave,
PlayerDeath,
PlayerSectorChange
PlayerSectorChange,
PlayerReady
}
}

View File

@ -5,12 +5,14 @@ namespace QSB.Messaging
public class PlayerStateMessage : PlayerMessage
{
public string PlayerName { get; set; }
public bool PlayerReady { get; set; }
public State PlayerState { get; set; }
public override void Deserialize(NetworkReader reader)
{
base.Deserialize(reader);
PlayerName = reader.ReadString();
PlayerReady = reader.ReadBoolean();
PlayerState = (State)reader.ReadInt32();
}
@ -18,6 +20,7 @@ namespace QSB.Messaging
{
base.Serialize(writer);
writer.Write(PlayerName);
writer.Write(PlayerReady);
writer.Write((int)PlayerState);
}
}

View File

@ -18,7 +18,7 @@ namespace QSB
public QSBTool ProbeLauncher => GetToolByType(ToolType.ProbeLauncher);
public string Name { get; set; }
public bool IsReady { get; set; }
public State State { get; private set; }
public State State { get; set; }
public PlayerInfo(uint id)
{
@ -39,9 +39,14 @@ namespace QSB
State = states;
}
public void UpdateStates(State newState)
public void UpdateStateObjects()
{
State = newState;
if (!QSB.WokenUp)
{
DebugLog.ToConsole("Tried to update state objects, but local player hasn't woken up!");
return;
}
DebugLog.ToConsole($"Updating state objects for player {NetId}");
FlashLight.UpdateState(FlagsHelper.IsSet(State, State.Flashlight));
Translator.ChangeEquipState(FlagsHelper.IsSet(State, State.Translator));
ProbeLauncher.ChangeEquipState(FlagsHelper.IsSet(State, State.ProbeLauncher));

View File

@ -47,10 +47,17 @@ namespace QSB
{
var player = GetPlayer(message.SenderId) ?? CreatePlayer(message.SenderId);
player.Name = message.PlayerName;
player.IsReady = message.PlayerReady;
player.State = message.PlayerState;
if (LocalPlayer.IsReady == true)
{
player.UpdateStates(message.PlayerState);
DebugLog.ToConsole("LocalPlayer is ready, update state objects.");
player.UpdateStateObjects();
}
else
{
DebugLog.ToConsole("LocalPlayer is NOT ready.");
}
}

View File

@ -12,6 +12,7 @@ namespace QSB
public static IModHelper Helper;
public static string DefaultServerIP;
public static bool DebugMode;
public static bool WokenUp;
private void Awake()
{
@ -28,6 +29,19 @@ namespace QSB
gameObject.AddComponent<DebugActions>();
gameObject.AddComponent<PlayerStatesRequest>();
gameObject.AddComponent<UnityHelper>();
GlobalMessenger.AddListener("RestartTimeLoop", OnLoopStart);
GlobalMessenger.AddListener("WakeUp", OnWakeUp);
}
private void OnWakeUp()
{
WokenUp = true;
}
private void OnLoopStart()
{
WokenUp = false;
}
public override void Configure(IModConfig config)

View File

@ -120,9 +120,10 @@
<Compile Include="Events\PlayerFlashlightEvent.cs" />
<Compile Include="Events\PlayerJoinEvent.cs" />
<Compile Include="Events\PlayerLeaveEvent.cs" />
<Compile Include="Events\PlayerReadyEvent.cs" />
<Compile Include="Events\PlayerSectorEvent.cs" />
<Compile Include="Events\PlayerSuitEvent.cs" />
<Compile Include="Events\WakeUpEvent.cs" />
<Compile Include="Events\ServerTimeEvent.cs" />
<Compile Include="Messaging\PlayerDeathMessage.cs" />
<Compile Include="Messaging\PlayerLeaveMessage.cs" />
<Compile Include="Events\PlayerProbeLauncherEvent.cs" />

View File

@ -72,7 +72,6 @@ namespace QSB.TimeSync
private void OnWakeUp()
{
PlayerRegistry.GetPlayer(netId.Value).IsReady = true;
PlayerStatesRequest.Instance.Request();
}

View File

@ -1,5 +1,6 @@
using System.Linq;
using OWML.ModHelper.Events;
using QSB.Events;
using QSB.Utility;
using UnityEngine;
@ -29,7 +30,7 @@ namespace QSB.Tools
CreateFlashlight();
CreateSignalscope();
CreateProbeLauncher();
CreateTranslator();
CreateTranslator();
}
public static void CreateProbe(Transform body, PlayerInfo player)

View File

@ -1,4 +1,5 @@
using QSB.Tools;
using QSB.Events;
using QSB.Tools;
using QSB.Utility;
using UnityEngine;
@ -23,6 +24,11 @@ namespace QSB.TransformSync
Player.Camera = body.gameObject;
DebugLog.ToConsole("Setting player " + Player.NetId + " to ready - all tools done!");
Player.IsReady = true;
GlobalMessenger<bool>.FireEvent("QSBPlayerReady", true);
PlayerStatesRequest.Instance.Request();
return body;
}