feat: added game audios
This commit is contained in:
parent
a781d92996
commit
d30d1e0d5c
@ -4,7 +4,6 @@ using Microsoft.Xna.Framework.Input;
|
|||||||
|
|
||||||
using Syntriax.Engine.Core;
|
using Syntriax.Engine.Core;
|
||||||
using Syntriax.Engine.Core.Debug;
|
using Syntriax.Engine.Core.Debug;
|
||||||
using Syntriax.Engine.Core.Exceptions;
|
|
||||||
using Syntriax.Engine.Integration.MonoGame;
|
using Syntriax.Engine.Integration.MonoGame;
|
||||||
using Syntriax.Engine.Network;
|
using Syntriax.Engine.Network;
|
||||||
using Syntriax.Engine.Systems.Input;
|
using Syntriax.Engine.Systems.Input;
|
||||||
@ -13,7 +12,7 @@ using Syntriax.Engine.Systems.Tween;
|
|||||||
|
|
||||||
namespace Pong.Behaviours;
|
namespace Pong.Behaviours;
|
||||||
|
|
||||||
public class PongGameStarter : Behaviour, INetworkEntity, IFirstFrameUpdate,
|
public class PongGameStarter : Behaviour, INetworkEntity, IFirstFrameUpdate, ILoadContent,
|
||||||
IPacketListenerServer<PongGameStarter.RequestStartPacket>,
|
IPacketListenerServer<PongGameStarter.RequestStartPacket>,
|
||||||
IPacketListenerClient<PongGameStarter.RequestStartPacket>
|
IPacketListenerClient<PongGameStarter.RequestStartPacket>
|
||||||
{
|
{
|
||||||
@ -29,6 +28,9 @@ public class PongGameStarter : Behaviour, INetworkEntity, IFirstFrameUpdate,
|
|||||||
private Label? label = null;
|
private Label? label = null;
|
||||||
private TickerTimer timer = null!;
|
private TickerTimer timer = null!;
|
||||||
|
|
||||||
|
private SoundEffectInstance? tickSoundEffect = null;
|
||||||
|
private SoundEffectInstance? startSoundEffect = null;
|
||||||
|
|
||||||
public void FirstActiveFrame()
|
public void FirstActiveFrame()
|
||||||
{
|
{
|
||||||
IButtonInputs<Keys>? buttonInputs = Universe.FindBehaviour<IButtonInputs<Keys>>();
|
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)
|
private void OnCountdownStart(IReadOnlyTimer sender)
|
||||||
{
|
{
|
||||||
pongManager.Reset();
|
pongManager.Reset();
|
||||||
@ -58,6 +66,8 @@ public class PongGameStarter : Behaviour, INetworkEntity, IFirstFrameUpdate,
|
|||||||
|
|
||||||
private void DisplayCountdown(ITicker sender)
|
private void DisplayCountdown(ITicker sender)
|
||||||
{
|
{
|
||||||
|
tickSoundEffect?.Play();
|
||||||
|
|
||||||
if (label != null)
|
if (label != null)
|
||||||
{
|
{
|
||||||
label.Text = $"{START_COUNTDOWN - timer.TickCounter}";
|
label.Text = $"{START_COUNTDOWN - timer.TickCounter}";
|
||||||
@ -69,6 +79,7 @@ public class PongGameStarter : Behaviour, INetworkEntity, IFirstFrameUpdate,
|
|||||||
|
|
||||||
private void StartPong(IReadOnlyTimer sender)
|
private void StartPong(IReadOnlyTimer sender)
|
||||||
{
|
{
|
||||||
|
startSoundEffect?.Play();
|
||||||
pongManager.Start();
|
pongManager.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,12 +1,16 @@
|
|||||||
using System;
|
using System;
|
||||||
|
|
||||||
|
using Microsoft.Xna.Framework.Audio;
|
||||||
|
using Microsoft.Xna.Framework.Content;
|
||||||
|
|
||||||
using Syntriax.Engine.Core;
|
using Syntriax.Engine.Core;
|
||||||
using Syntriax.Engine.Core.Debug;
|
using Syntriax.Engine.Core.Debug;
|
||||||
|
using Syntriax.Engine.Integration.MonoGame;
|
||||||
using Syntriax.Engine.Network;
|
using Syntriax.Engine.Network;
|
||||||
|
|
||||||
namespace Pong.Behaviours;
|
namespace Pong.Behaviours;
|
||||||
|
|
||||||
public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate,
|
public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate, ILoadContent,
|
||||||
IPacketListenerClient<PongManager.ScorePacket>
|
IPacketListenerClient<PongManager.ScorePacket>
|
||||||
{
|
{
|
||||||
public Action<PongManager>? OnReset { get; set; } = null;
|
public Action<PongManager>? OnReset { get; set; } = null;
|
||||||
@ -17,6 +21,7 @@ public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate,
|
|||||||
|
|
||||||
private INetworkCommunicatorServer? networkServer = null;
|
private INetworkCommunicatorServer? networkServer = null;
|
||||||
private ILogger? logger = null;
|
private ILogger? logger = null;
|
||||||
|
private SoundEffectInstance? gameEndSoundEffect = null;
|
||||||
|
|
||||||
public int ScoreLeft { get; private set; } = 0;
|
public int ScoreLeft { get; private set; } = 0;
|
||||||
public int ScoreRight { 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 int WinScore { get; } = 5;
|
||||||
public Ball Ball { get; private set; } = null!;
|
public Ball Ball { get; private set; } = null!;
|
||||||
|
|
||||||
public bool IsGameInProgress { get; private set; } = false;
|
public bool IsGameInProgress { get; private set; } = false;
|
||||||
|
|
||||||
public PongManager() => WinScore = 5;
|
public PongManager() => WinScore = 5;
|
||||||
@ -37,6 +41,11 @@ public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate,
|
|||||||
logger = Universe.FindBehaviour<ILogger>();
|
logger = Universe.FindBehaviour<ILogger>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void LoadContent(ContentManager content)
|
||||||
|
{
|
||||||
|
gameEndSoundEffect = content.Load<SoundEffect>("Audio/Win").CreateInstance();
|
||||||
|
}
|
||||||
|
|
||||||
public void ScoreToLeft()
|
public void ScoreToLeft()
|
||||||
{
|
{
|
||||||
ScoreLeft++;
|
ScoreLeft++;
|
||||||
@ -92,6 +101,7 @@ public class PongManager : Behaviour, INetworkEntity, IFirstFrameUpdate,
|
|||||||
if (ScoreLeft > halfwayScore || ScoreRight > halfwayScore)
|
if (ScoreLeft > halfwayScore || ScoreRight > halfwayScore)
|
||||||
{
|
{
|
||||||
IsGameInProgress = false;
|
IsGameInProgress = false;
|
||||||
|
gameEndSoundEffect?.Play();
|
||||||
OnFinished?.Invoke(this);
|
OnFinished?.Invoke(this);
|
||||||
logger?.Log(this, $"Game finished");
|
logger?.Log(this, $"Game finished");
|
||||||
return;
|
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 ---------------------------------#
|
#---------------------------------- 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
|
#begin UbuntuMono.spritefont
|
||||||
/importer:FontDescriptionImporter
|
/importer:FontDescriptionImporter
|
||||||
/processor:FontDescriptionProcessor
|
/processor:FontDescriptionProcessor
|
||||||
|
Loading…
x
Reference in New Issue
Block a user