feat: added game audios
This commit is contained in:
@@ -1,12 +1,16 @@
|
||||
using System;
|
||||
|
||||
using Microsoft.Xna.Framework.Audio;
|
||||
using Microsoft.Xna.Framework.Content;
|
||||
|
||||
using Syntriax.Engine.Core;
|
||||
using Syntriax.Engine.Core.Debug;
|
||||
using Syntriax.Engine.Integration.MonoGame;
|
||||
using Syntriax.Engine.Network;
|
||||
|
||||
namespace Pong.Behaviours;
|
||||
|
||||
public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate,
|
||||
public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate, ILoadContent,
|
||||
IPacketListenerClient<PongManager.ScorePacket>
|
||||
{
|
||||
public Action<PongManager>? OnReset { get; set; } = null;
|
||||
@@ -17,6 +21,7 @@ public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate,
|
||||
|
||||
private INetworkCommunicatorServer? networkServer = null;
|
||||
private ILogger? logger = null;
|
||||
private SoundEffectInstance? gameEndSoundEffect = null;
|
||||
|
||||
public int ScoreLeft { get; private set; } = 0;
|
||||
public int ScoreRight { get; private set; } = 0;
|
||||
@@ -24,7 +29,6 @@ public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate,
|
||||
|
||||
public int WinScore { get; } = 5;
|
||||
public Ball Ball { get; private set; } = null!;
|
||||
|
||||
public bool IsGameInProgress { get; private set; } = false;
|
||||
|
||||
public PongManager() => WinScore = 5;
|
||||
@@ -37,6 +41,11 @@ public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate,
|
||||
logger = Universe.FindBehaviour<ILogger>();
|
||||
}
|
||||
|
||||
public void LoadContent(ContentManager content)
|
||||
{
|
||||
gameEndSoundEffect = content.Load<SoundEffect>("Audio/Win").CreateInstance();
|
||||
}
|
||||
|
||||
public void ScoreToLeft()
|
||||
{
|
||||
ScoreLeft++;
|
||||
@@ -92,6 +101,7 @@ public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate,
|
||||
if (ScoreLeft > halfwayScore || ScoreRight > halfwayScore)
|
||||
{
|
||||
IsGameInProgress = false;
|
||||
gameEndSoundEffect?.Play();
|
||||
OnFinished?.Invoke(this);
|
||||
logger?.Log(this, $"Game finished");
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user