Add sounds to pong and fix audio bugs

This commit is contained in:
Michael 2017-04-15 15:08:21 -04:00
parent 51050a02d4
commit 0807e04881
4 changed files with 40 additions and 29 deletions

View file

@ -52,15 +52,7 @@ namespace ShiftOS.WinForms.Applications
public void OnLoad()
{
AppearanceManager.SetWindowTitle(this, this.Title);
var str = Properties.Resources.infobox;
var bytes = new byte[str.Length];
str.Read(bytes, 0, bytes.Length);
ShiftOS.Engine.AudioManager.Stop();
if (File.Exists("snd.wav"))
File.Delete("snd.wav");
File.WriteAllBytes("snd.wav", bytes);
ShiftOS.Engine.AudioManager.Play("snd.wav");
ShiftOS.Engine.AudioManager.PlayStream(Properties.Resources.infobox);
}
public void OnSkinLoad()

View file

@ -174,7 +174,7 @@ namespace ShiftOS.WinForms.Applications
this.pgcontents.Dock = System.Windows.Forms.DockStyle.Fill;
this.pgcontents.Location = new System.Drawing.Point(0, 0);
this.pgcontents.Name = "pgcontents";
this.pgcontents.Size = new System.Drawing.Size(1867, 819);
this.pgcontents.Size = new System.Drawing.Size(912, 504);
this.pgcontents.TabIndex = 20;
this.pgcontents.Paint += new System.Windows.Forms.PaintEventHandler(this.pgcontents_Paint);
this.pgcontents.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pongMain_MouseMove);
@ -617,7 +617,7 @@ namespace ShiftOS.WinForms.Applications
//
this.paddleComputer.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.paddleComputer.BackColor = System.Drawing.Color.Black;
this.paddleComputer.Location = new System.Drawing.Point(1833, 134);
this.paddleComputer.Location = new System.Drawing.Point(878, 134);
this.paddleComputer.MaximumSize = new System.Drawing.Size(20, 150);
this.paddleComputer.Name = "paddleComputer";
this.paddleComputer.Size = new System.Drawing.Size(20, 100);
@ -629,7 +629,7 @@ namespace ShiftOS.WinForms.Applications
this.lbllevelandtime.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lbllevelandtime.Location = new System.Drawing.Point(0, 0);
this.lbllevelandtime.Name = "lbllevelandtime";
this.lbllevelandtime.Size = new System.Drawing.Size(1867, 22);
this.lbllevelandtime.Size = new System.Drawing.Size(912, 22);
this.lbllevelandtime.TabIndex = 4;
this.lbllevelandtime.Tag = "header1";
this.lbllevelandtime.Text = "Level: 1 - 58 Seconds Left";
@ -641,7 +641,7 @@ namespace ShiftOS.WinForms.Applications
| System.Windows.Forms.AnchorStyles.Right)));
this.lblstatscodepoints.AutoSize = true;
this.lblstatscodepoints.Font = new System.Drawing.Font("Georgia", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblstatscodepoints.Location = new System.Drawing.Point(239, 775);
this.lblstatscodepoints.Location = new System.Drawing.Point(239, 460);
this.lblstatscodepoints.Name = "lblstatscodepoints";
this.lblstatscodepoints.Size = new System.Drawing.Size(116, 23);
this.lblstatscodepoints.TabIndex = 12;
@ -654,7 +654,7 @@ namespace ShiftOS.WinForms.Applications
this.lblstatsY.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.lblstatsY.AutoSize = true;
this.lblstatsY.Font = new System.Drawing.Font("Georgia", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblstatsY.Location = new System.Drawing.Point(1395, 775);
this.lblstatsY.Location = new System.Drawing.Point(440, 460);
this.lblstatsY.Name = "lblstatsY";
this.lblstatsY.Size = new System.Drawing.Size(76, 23);
this.lblstatsY.TabIndex = 11;
@ -667,7 +667,7 @@ namespace ShiftOS.WinForms.Applications
this.lblstatsX.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.lblstatsX.AutoSize = true;
this.lblstatsX.Font = new System.Drawing.Font("Georgia", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblstatsX.Location = new System.Drawing.Point(3, 775);
this.lblstatsX.Location = new System.Drawing.Point(3, 460);
this.lblstatsX.Name = "lblstatsX";
this.lblstatsX.Size = new System.Drawing.Size(83, 23);
this.lblstatsX.TabIndex = 5;
@ -683,7 +683,7 @@ namespace ShiftOS.WinForms.Applications
this.Controls.Add(this.pgcontents);
this.DoubleBuffered = true;
this.Name = "Pong";
this.Size = new System.Drawing.Size(1867, 819);
this.Size = new System.Drawing.Size(912, 504);
this.Load += new System.EventHandler(this.Pong_Load);
this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pongMain_MouseMove);
this.pgcontents.ResumeLayout(false);

View file

@ -167,6 +167,7 @@ namespace ShiftOS.WinForms.Applications
{
ball.Location = new Point(ball.Location.X, 0);
yVel = -yVel;
ShiftOS.Engine.AudioManager.PlayStream(Properties.Resources.typesound);
}
// Check for bottom wall.
@ -174,12 +175,13 @@ namespace ShiftOS.WinForms.Applications
{
ball.Location = new Point(ball.Location.X, pgcontents.Height - ball.Size.Height);
yVel = -yVel;
ShiftOS.Engine.AudioManager.PlayStream(Properties.Resources.typesound);
}
// Check for player paddle.
if (ball.Bounds.IntersectsWith(paddleHuman.Bounds))
{
ball.Location = new Point(paddleHuman.Location.X + ball.Size.Width, ball.Location.Y);
ball.Location = new Point(paddleHuman.Location.X + ball.Size.Width + 1, ball.Location.Y);
//randomly increase x or y speed of ball
switch (rand.Next(1, 3))
{
@ -194,14 +196,17 @@ namespace ShiftOS.WinForms.Applications
break;
}
xVel = -xVel;
ShiftOS.Engine.AudioManager.PlayStream(Properties.Resources.writesound);
}
// Check for computer paddle.
if (ball.Bounds.IntersectsWith(paddleComputer.Bounds))
{
ball.Location = new Point(paddleComputer.Location.X - paddleComputer.Size.Width + 1, ball.Location.Y);
ball.Location = new Point(paddleComputer.Location.X - paddleComputer.Size.Width - 1, ball.Location.Y);
xveldec = xveldec + incrementx;
xVel = -xVel;
ShiftOS.Engine.AudioManager.PlayStream(Properties.Resources.writesound);
}
// Check for left wall.
@ -288,6 +293,7 @@ namespace ShiftOS.WinForms.Applications
gameTimer.Stop();
SendHighscores();
}
lblstatscodepoints.Text = Localization.Parse("{CODEPOINTS}: ") + (levelrewards[level - 1] + beatairewardtotal).ToString();
}
SetupStats();
@ -508,15 +514,18 @@ namespace ShiftOS.WinForms.Applications
case 1:
lblcountdown.Text = "1";
countdown = countdown - 1;
ShiftOS.Engine.AudioManager.PlayStream(Properties.Resources.typesound);
break;
case 2:
lblcountdown.Text = "2";
countdown = countdown - 1;
ShiftOS.Engine.AudioManager.PlayStream(Properties.Resources.typesound);
break;
case 3:
lblcountdown.Text = "3";
countdown = countdown - 1;
lblcountdown.Show();
ShiftOS.Engine.AudioManager.PlayStream(Properties.Resources.typesound);
break;
}

View file

@ -26,6 +26,7 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
@ -62,20 +63,29 @@ namespace ShiftOS.Engine
public static void Play(string file)
{
new Thread(() =>
try
{
try
{
_reader = new AudioFileReader(file);
_out = new WaveOut();
_out.Init(_reader);
_out.Volume = _provider.Volume;
_out.Play();
}
catch { }
}).Start();
_reader = new AudioFileReader(file);
_out = new WaveOut();
_out.Init(_reader);
_out.Volume = _provider.Volume;
_out.Play();
}
catch { }
}
public static void PlayStream(Stream str)
{
var bytes = new byte[str.Length];
str.Read(bytes, 0, bytes.Length);
ShiftOS.Engine.AudioManager.Stop();
if (File.Exists("snd.wav"))
File.Delete("snd.wav");
File.WriteAllBytes("snd.wav", bytes);
ShiftOS.Engine.AudioManager.Play("snd.wav");
}
internal static void Kill()
{