fix: games not working when hosting a game
This commit is contained in:
@@ -10,7 +10,7 @@ using Engine.Systems.Network;
|
||||
|
||||
namespace Pong.Behaviours;
|
||||
|
||||
public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate, ILoadContent,
|
||||
public class PongManager : CommonNetworkBehaviour, INetworkEntity, IFirstFrameUpdate, ILoadContent,
|
||||
IPacketListenerClient<PongManager.StartPacket>,
|
||||
IPacketListenerClient<PongManager.ScorePacket>
|
||||
{
|
||||
@@ -20,7 +20,6 @@ public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate, ILoadCo
|
||||
|
||||
private Random random = new();
|
||||
|
||||
private INetworkCommunicatorServer? networkServer = null;
|
||||
private ILogger? logger = null;
|
||||
private SoundEffectInstance? scoreSoundEffect = null;
|
||||
private SoundEffectInstance? gameEndSoundEffect = null;
|
||||
@@ -36,10 +35,11 @@ public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate, ILoadCo
|
||||
public PongManager() => WinScore = 5;
|
||||
public PongManager(int winScore) => WinScore = winScore;
|
||||
|
||||
public void FirstActiveFrame()
|
||||
public override void FirstActiveFrame()
|
||||
{
|
||||
base.FirstActiveFrame();
|
||||
|
||||
Ball = Universe.FindRequiredBehaviour<Ball>();
|
||||
networkServer = Universe.FindBehaviour<INetworkCommunicatorServer>();
|
||||
logger = Universe.FindBehaviour<ILogger>();
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate, ILoadCo
|
||||
|
||||
public bool Start()
|
||||
{
|
||||
if (networkServer is null)
|
||||
if (!IsServer)
|
||||
return false;
|
||||
|
||||
if (Ball.RigidBody.Velocity.MagnitudeSquared > 0.01f)
|
||||
@@ -72,7 +72,7 @@ public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate, ILoadCo
|
||||
Reset();
|
||||
IsGameInProgress = true;
|
||||
PostScoreUpdate();
|
||||
networkServer.SendToAll(new StartPacket());
|
||||
Server.SendToAll(new StartPacket());
|
||||
logger?.Log(this, $"Game started");
|
||||
return true;
|
||||
}
|
||||
@@ -92,9 +92,9 @@ public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate, ILoadCo
|
||||
OnScoreUpdated?.Invoke(this);
|
||||
Ball.ResetBall();
|
||||
|
||||
if (networkServer is not null)
|
||||
if (IsServer)
|
||||
{
|
||||
networkServer.SendToAll(new ScorePacket(this));
|
||||
Server.SendToAll(new ScorePacket(this));
|
||||
logger?.Log(this, $"Sending score update packet to all: {ScoreLeft} - {ScoreRight}");
|
||||
}
|
||||
|
||||
@@ -121,6 +121,9 @@ public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate, ILoadCo
|
||||
|
||||
void IPacketListenerClient<ScorePacket>.OnClientPacketArrived(IConnection sender, ScorePacket packet)
|
||||
{
|
||||
if (IsServer)
|
||||
return;
|
||||
|
||||
ScoreLeft = packet.Left;
|
||||
ScoreRight = packet.Right;
|
||||
|
||||
@@ -134,6 +137,9 @@ public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate, ILoadCo
|
||||
|
||||
void IPacketListenerClient<StartPacket>.OnClientPacketArrived(IConnection sender, StartPacket packet)
|
||||
{
|
||||
if (IsServer)
|
||||
return;
|
||||
|
||||
IsGameInProgress = true;
|
||||
logger?.Log(this, $"Game started");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user