feat: added game audios
This commit is contained in:
		@@ -4,7 +4,6 @@ using Microsoft.Xna.Framework.Input;
 | 
			
		||||
 | 
			
		||||
using Syntriax.Engine.Core;
 | 
			
		||||
using Syntriax.Engine.Core.Debug;
 | 
			
		||||
using Syntriax.Engine.Core.Exceptions;
 | 
			
		||||
using Syntriax.Engine.Integration.MonoGame;
 | 
			
		||||
using Syntriax.Engine.Network;
 | 
			
		||||
using Syntriax.Engine.Systems.Input;
 | 
			
		||||
@@ -13,7 +12,7 @@ using Syntriax.Engine.Systems.Tween;
 | 
			
		||||
 | 
			
		||||
namespace Pong.Behaviours;
 | 
			
		||||
 | 
			
		||||
public class PongGameStarter : Behaviour, INetworkEntity, IFirstFrameUpdate,
 | 
			
		||||
public class PongGameStarter : Behaviour, INetworkEntity, IFirstFrameUpdate, ILoadContent,
 | 
			
		||||
    IPacketListenerServer<PongGameStarter.RequestStartPacket>,
 | 
			
		||||
    IPacketListenerClient<PongGameStarter.RequestStartPacket>
 | 
			
		||||
{
 | 
			
		||||
@@ -29,6 +28,9 @@ public class PongGameStarter : Behaviour, INetworkEntity, IFirstFrameUpdate,
 | 
			
		||||
    private Label? label = null;
 | 
			
		||||
    private TickerTimer timer = null!;
 | 
			
		||||
 | 
			
		||||
    private SoundEffectInstance? tickSoundEffect = null;
 | 
			
		||||
    private SoundEffectInstance? startSoundEffect = null;
 | 
			
		||||
 | 
			
		||||
    public void FirstActiveFrame()
 | 
			
		||||
    {
 | 
			
		||||
        IButtonInputs<Keys>? buttonInputs = Universe.FindBehaviour<IButtonInputs<Keys>>();
 | 
			
		||||
@@ -50,6 +52,12 @@ public class PongGameStarter : Behaviour, INetworkEntity, IFirstFrameUpdate,
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void LoadContent(ContentManager content)
 | 
			
		||||
    {
 | 
			
		||||
        tickSoundEffect = content.Load<SoundEffect>("Audio/TimerTick").CreateInstance();
 | 
			
		||||
        startSoundEffect = content.Load<SoundEffect>("Audio/TimerEnd").CreateInstance();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void OnCountdownStart(IReadOnlyTimer sender)
 | 
			
		||||
    {
 | 
			
		||||
        pongManager.Reset();
 | 
			
		||||
@@ -58,6 +66,8 @@ public class PongGameStarter : Behaviour, INetworkEntity, IFirstFrameUpdate,
 | 
			
		||||
 | 
			
		||||
    private void DisplayCountdown(ITicker sender)
 | 
			
		||||
    {
 | 
			
		||||
        tickSoundEffect?.Play();
 | 
			
		||||
 | 
			
		||||
        if (label != null)
 | 
			
		||||
        {
 | 
			
		||||
            label.Text = $"{START_COUNTDOWN - timer.TickCounter}";
 | 
			
		||||
@@ -69,6 +79,7 @@ public class PongGameStarter : Behaviour, INetworkEntity, IFirstFrameUpdate,
 | 
			
		||||
 | 
			
		||||
    private void StartPong(IReadOnlyTimer sender)
 | 
			
		||||
    {
 | 
			
		||||
        startSoundEffect?.Play();
 | 
			
		||||
        pongManager.Start();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Shared/Content/Audio/Bounce.wav
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Shared/Content/Audio/Bounce.wav
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								Shared/Content/Audio/TimerEnd.wav
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Shared/Content/Audio/TimerEnd.wav
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								Shared/Content/Audio/TimerTick.wav
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Shared/Content/Audio/TimerTick.wav
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								Shared/Content/Audio/Win.wav
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Shared/Content/Audio/Win.wav
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							@@ -13,6 +13,30 @@
 | 
			
		||||
 | 
			
		||||
#---------------------------------- Content ---------------------------------#
 | 
			
		||||
 | 
			
		||||
#begin Audio/Bounce.wav
 | 
			
		||||
/importer:WavImporter
 | 
			
		||||
/processor:SoundEffectProcessor
 | 
			
		||||
/processorParam:Quality=Best
 | 
			
		||||
/build:Audio/Bounce.wav
 | 
			
		||||
 | 
			
		||||
#begin Audio/Win.wav
 | 
			
		||||
/importer:WavImporter
 | 
			
		||||
/processor:SoundEffectProcessor
 | 
			
		||||
/processorParam:Quality=Best
 | 
			
		||||
/build:Audio/Win.wav
 | 
			
		||||
 | 
			
		||||
#begin Audio/TimerTick.wav
 | 
			
		||||
/importer:WavImporter
 | 
			
		||||
/processor:SoundEffectProcessor
 | 
			
		||||
/processorParam:Quality=Best
 | 
			
		||||
/build:Audio/TimerTick.wav
 | 
			
		||||
 | 
			
		||||
#begin Audio/TimerEnd.wav
 | 
			
		||||
/importer:WavImporter
 | 
			
		||||
/processor:SoundEffectProcessor
 | 
			
		||||
/processorParam:Quality=Best
 | 
			
		||||
/build:Audio/TimerEnd.wav
 | 
			
		||||
 | 
			
		||||
#begin UbuntuMono.spritefont
 | 
			
		||||
/importer:FontDescriptionImporter
 | 
			
		||||
/processor:FontDescriptionProcessor
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user