feat: score audio added
This commit is contained in:
parent
52d5c8fc47
commit
8dbda18a80
2
Engine
2
Engine
@ -1 +1 @@
|
|||||||
Subproject commit 37aca44e45923511500ee1e6a8f39a30810b7f63
|
Subproject commit 03232f72e8f045fa3b5731a2b3839425f8ea9721
|
@ -11,6 +11,7 @@ using Syntriax.Engine.Network;
|
|||||||
namespace Pong.Behaviours;
|
namespace Pong.Behaviours;
|
||||||
|
|
||||||
public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate, ILoadContent,
|
public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate, ILoadContent,
|
||||||
|
IPacketListenerClient<PongManager.StartPacket>,
|
||||||
IPacketListenerClient<PongManager.ScorePacket>
|
IPacketListenerClient<PongManager.ScorePacket>
|
||||||
{
|
{
|
||||||
public Action<PongManager>? OnReset { get; set; } = null;
|
public Action<PongManager>? OnReset { get; set; } = null;
|
||||||
@ -21,6 +22,7 @@ public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate, ILoadCo
|
|||||||
|
|
||||||
private INetworkCommunicatorServer? networkServer = null;
|
private INetworkCommunicatorServer? networkServer = null;
|
||||||
private ILogger? logger = null;
|
private ILogger? logger = null;
|
||||||
|
private SoundEffectInstance? scoreSoundEffect = null;
|
||||||
private SoundEffectInstance? gameEndSoundEffect = null;
|
private SoundEffectInstance? gameEndSoundEffect = null;
|
||||||
|
|
||||||
public int ScoreLeft { get; private set; } = 0;
|
public int ScoreLeft { get; private set; } = 0;
|
||||||
@ -44,21 +46,18 @@ public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate, ILoadCo
|
|||||||
public void LoadContent(ContentManager content)
|
public void LoadContent(ContentManager content)
|
||||||
{
|
{
|
||||||
gameEndSoundEffect = content.Load<SoundEffect>("Audio/Win").CreateInstance();
|
gameEndSoundEffect = content.Load<SoundEffect>("Audio/Win").CreateInstance();
|
||||||
|
scoreSoundEffect = content.Load<SoundEffect>("Audio/Score").CreateInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ScoreToLeft()
|
public void ScoreToLeft()
|
||||||
{
|
{
|
||||||
ScoreLeft++;
|
ScoreLeft++;
|
||||||
OnScoreUpdated?.Invoke(this);
|
|
||||||
|
|
||||||
PostScoreUpdate();
|
PostScoreUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ScoreToRight()
|
public void ScoreToRight()
|
||||||
{
|
{
|
||||||
ScoreRight++;
|
ScoreRight++;
|
||||||
OnScoreUpdated?.Invoke(this);
|
|
||||||
|
|
||||||
PostScoreUpdate();
|
PostScoreUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -73,6 +72,7 @@ public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate, ILoadCo
|
|||||||
Reset();
|
Reset();
|
||||||
IsGameInProgress = true;
|
IsGameInProgress = true;
|
||||||
PostScoreUpdate();
|
PostScoreUpdate();
|
||||||
|
networkServer.SendToAll(new StartPacket());
|
||||||
logger?.Log(this, $"Game started");
|
logger?.Log(this, $"Game started");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -89,6 +89,7 @@ public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate, ILoadCo
|
|||||||
|
|
||||||
private void PostScoreUpdate()
|
private void PostScoreUpdate()
|
||||||
{
|
{
|
||||||
|
OnScoreUpdated?.Invoke(this);
|
||||||
Ball.ResetBall();
|
Ball.ResetBall();
|
||||||
|
|
||||||
if (networkServer is not null)
|
if (networkServer is not null)
|
||||||
@ -103,7 +104,7 @@ public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate, ILoadCo
|
|||||||
IsGameInProgress = false;
|
IsGameInProgress = false;
|
||||||
gameEndSoundEffect?.Play();
|
gameEndSoundEffect?.Play();
|
||||||
OnFinished?.Invoke(this);
|
OnFinished?.Invoke(this);
|
||||||
logger?.Log(this, $"Game finished");
|
logger?.Log(this, $"Game finished: {ScoreLeft} - {ScoreRight}");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -123,10 +124,21 @@ public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate, ILoadCo
|
|||||||
ScoreLeft = packet.Left;
|
ScoreLeft = packet.Left;
|
||||||
ScoreRight = packet.Right;
|
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}");
|
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
|
private class ScorePacket : INetworkPacket
|
||||||
{
|
{
|
||||||
public int Left { get; set; }
|
public int Left { get; set; }
|
||||||
|
BIN
Shared/Content/Audio/Score.wav
Normal file
BIN
Shared/Content/Audio/Score.wav
Normal file
Binary file not shown.
@ -19,6 +19,12 @@
|
|||||||
/processorParam:Quality=Best
|
/processorParam:Quality=Best
|
||||||
/build:Audio/Bounce.wav
|
/build:Audio/Bounce.wav
|
||||||
|
|
||||||
|
#begin Audio/Score.wav
|
||||||
|
/importer:WavImporter
|
||||||
|
/processor:SoundEffectProcessor
|
||||||
|
/processorParam:Quality=Best
|
||||||
|
/build:Audio/Score.wav
|
||||||
|
|
||||||
#begin Audio/Win.wav
|
#begin Audio/Win.wav
|
||||||
/importer:WavImporter
|
/importer:WavImporter
|
||||||
/processor:SoundEffectProcessor
|
/processor:SoundEffectProcessor
|
||||||
|
Loading…
x
Reference in New Issue
Block a user