mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-03-11 19:13:32 +00:00
help
This commit is contained in:
parent
83e8d9d714
commit
ff6f771098
@ -6,6 +6,7 @@
|
||||
|
||||
public static void Init()
|
||||
{
|
||||
new PlayerReadyEvent();
|
||||
new PlayerSuitEvent();
|
||||
new PlayerFlashlightEvent();
|
||||
new PlayerSignalscopeEvent();
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
35
QSB/Events/PlayerReadyEvent.cs
Normal file
35
QSB/Events/PlayerReadyEvent.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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()
|
||||
{
|
@ -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
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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));
|
||||
|
@ -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.");
|
||||
}
|
||||
}
|
||||
|
||||
|
14
QSB/QSB.cs
14
QSB/QSB.cs
@ -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)
|
||||
|
@ -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" />
|
||||
|
@ -72,7 +72,6 @@ namespace QSB.TimeSync
|
||||
|
||||
private void OnWakeUp()
|
||||
{
|
||||
PlayerRegistry.GetPlayer(netId.Value).IsReady = true;
|
||||
PlayerStatesRequest.Instance.Request();
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user