feat: score audio added

This commit is contained in:
Syntriax 2025-07-27 20:34:43 +03:00
parent 52d5c8fc47
commit 8dbda18a80
4 changed files with 25 additions and 7 deletions

2
Engine

@ -1 +1 @@
Subproject commit 37aca44e45923511500ee1e6a8f39a30810b7f63
Subproject commit 03232f72e8f045fa3b5731a2b3839425f8ea9721

View File

@ -11,6 +11,7 @@ using Syntriax.Engine.Network;
namespace Pong.Behaviours;
public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate, ILoadContent,
IPacketListenerClient<PongManager.StartPacket>,
IPacketListenerClient<PongManager.ScorePacket>
{
public Action<PongManager>? OnReset { get; set; } = null;
@ -21,6 +22,7 @@ public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate, ILoadCo
private INetworkCommunicatorServer? networkServer = null;
private ILogger? logger = null;
private SoundEffectInstance? scoreSoundEffect = null;
private SoundEffectInstance? gameEndSoundEffect = null;
public int ScoreLeft { get; private set; } = 0;
@ -44,21 +46,18 @@ public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate, ILoadCo
public void LoadContent(ContentManager content)
{
gameEndSoundEffect = content.Load<SoundEffect>("Audio/Win").CreateInstance();
scoreSoundEffect = content.Load<SoundEffect>("Audio/Score").CreateInstance();
}
public void ScoreToLeft()
{
ScoreLeft++;
OnScoreUpdated?.Invoke(this);
PostScoreUpdate();
}
public void ScoreToRight()
{
ScoreRight++;
OnScoreUpdated?.Invoke(this);
PostScoreUpdate();
}
@ -73,6 +72,7 @@ public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate, ILoadCo
Reset();
IsGameInProgress = true;
PostScoreUpdate();
networkServer.SendToAll(new StartPacket());
logger?.Log(this, $"Game started");
return true;
}
@ -89,6 +89,7 @@ public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate, ILoadCo
private void PostScoreUpdate()
{
OnScoreUpdated?.Invoke(this);
Ball.ResetBall();
if (networkServer is not null)
@ -103,7 +104,7 @@ public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate, ILoadCo
IsGameInProgress = false;
gameEndSoundEffect?.Play();
OnFinished?.Invoke(this);
logger?.Log(this, $"Game finished");
logger?.Log(this, $"Game finished: {ScoreLeft} - {ScoreRight}");
return;
}
@ -123,10 +124,21 @@ public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate, ILoadCo
ScoreLeft = packet.Left;
ScoreRight = packet.Right;
OnScoreUpdated?.Invoke(this);
PostScoreUpdate();
if (IsGameInProgress && (ScoreLeft != 0 || ScoreRight != 0))
scoreSoundEffect?.Play();
logger?.Log(this, $"Client score update packet arrived: {packet.Left} - {packet.Right}");
}
void IPacketListenerClient<StartPacket>.OnClientPacketArrived(IConnection sender, StartPacket packet)
{
IsGameInProgress = true;
logger?.Log(this, $"Game started");
}
private class StartPacket : INetworkPacket;
private class ScorePacket : INetworkPacket
{
public int Left { get; set; }

Binary file not shown.

View File

@ -19,6 +19,12 @@
/processorParam:Quality=Best
/build:Audio/Bounce.wav
#begin Audio/Score.wav
/importer:WavImporter
/processor:SoundEffectProcessor
/processorParam:Quality=Best
/build:Audio/Score.wav
#begin Audio/Win.wav
/importer:WavImporter
/processor:SoundEffectProcessor