Add most AI lines

This commit is contained in:
2021-04-24 18:47:51 +02:00
parent b4f2e85503
commit a7765e5355
13 changed files with 159 additions and 3 deletions
Binary file not shown.
Binary file not shown.
+141
View File
@@ -0,0 +1,141 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SynthySound;
namespace EvilSatellites
{
public class AI
{
public Synthy Engine;
public Dictionary<string, AIVoiceClip> Clips;
public Random rnd = new Random();
public AI(Synthy engine)
{
Engine = engine;
Clips = new Dictionary<string, AIVoiceClip>();
SetupClips();
}
public void SetupClips()
{
Clips.Add("GameStart", new AIVoiceClip
{
Name = "GameStart",
NumFiles = 3,
Probability = new int[2] { 1, 1 }
});
Clips.Add("CollectDebris", new AIVoiceClip
{
Name = "CollectDebris",
NumFiles = 3,
Probability = new int[2] { 5, 10 }
});
Clips.Add("DamageBullet", new AIVoiceClip
{
Name = "DamageBullet",
NumFiles = 4,
Probability = new int[2] { 5, 10 }
});
Clips.Add("DamageDebris", new AIVoiceClip
{
Name = "DamageDebris",
NumFiles = 3,
Probability = new int[2] { 2, 4 }
});
// TODO
Clips.Add("FarMiss", new AIVoiceClip
{
Name = "FarMiss",
NumFiles = 6,
Probability = new int[2] { 5, 50 }
});
Clips.Add("GameOver", new AIVoiceClip
{
Name = "GameOver",
NumFiles = 4,
Probability = new int[2] { 1, 1 }
});
Clips.Add("Hit", new AIVoiceClip
{
Name = "Hit",
NumFiles = 5,
Probability = new int[2] { 5, 20 }
});
Clips.Add("LowHealth", new AIVoiceClip
{
Name = "LowHealth",
NumFiles = 5,
Probability = new int[2] { 1, 3 }
});
// TODO
Clips.Add("NearMiss", new AIVoiceClip
{
Name = "NearMiss",
NumFiles = 4,
Probability = new int[2] { 50, 100 }
});
// TODO
Clips.Add("Spinning", new AIVoiceClip
{
Name = "Spinning",
NumFiles = 2,
Probability = new int[2] { 2, 4 }
});
// TODO
Clips.Add("Still", new AIVoiceClip
{
Name = "Still",
NumFiles = 5,
Probability = new int[2] { 2, 4 }
});
// TODO
Clips.Add("Void", new AIVoiceClip
{
Name = "Void",
NumFiles = 3,
Probability = new int[2] { 50, 200 }
});
Clips.Add("Wave", new AIVoiceClip
{
Name = "Wave",
NumFiles = 4,
Probability = new int[2] { 1, 2 }
});
}
public void Play(string name)
{
if (Clips.ContainsKey(name))
{
var clip = Clips[name];
var prob = rnd.Next(clip.Probability[1]);
if (prob == clip.Probability[0] || (clip.Probability[0] == 1 && clip.Probability[1] == 1))
{
var file = rnd.Next(clip.NumFiles - 1) + 1;
Engine.PlayOneshot(@"sfx/ai/" + name + file.ToString() + ".wav");
}
}
}
}
public struct AIVoiceClip
{
public string Name;
public int NumFiles;
public int[] Probability;
}
}
+1 -1
View File
@@ -57,7 +57,7 @@ namespace EvilSatellites.Objects
if (player.Vacuuming) if (player.Vacuuming)
{ {
player.CurrentWeapon.Reload(rnd.Next(player.CurrentWeapon.MaxAmmo/4)); player.CurrentWeapon.Reload(rnd.Next(player.CurrentWeapon.MaxAmmo/4));
Screen.Manager.Computer.Play("CollectDebris");
Destroy(); Destroy();
GameStats.DebrisCollected++; GameStats.DebrisCollected++;
return; return;
+6
View File
@@ -189,6 +189,7 @@ namespace EvilSatellites.Objects
{ {
IsDamaged = true; IsDamaged = true;
sfxDamage.Play(); sfxDamage.Play();
Screen.Manager.Computer.Play("LowHealth");
} }
string dmgSound = @"sfx/physics/collisions/"; string dmgSound = @"sfx/physics/collisions/";
if (dmg > 60) if (dmg > 60)
@@ -231,10 +232,15 @@ namespace EvilSatellites.Objects
override public void OnCollision(IGameObject obj) override public void OnCollision(IGameObject obj)
{ {
if (obj.Type == ObjectType.Debris)
{
Screen.Manager.Computer.Play("DamageDebris");
}
if (obj.Type == ObjectType.Projectile) if (obj.Type == ObjectType.Projectile)
{ {
var proj = (Projectile)obj; var proj = (Projectile)obj;
if (proj.Owner == this) return; if (proj.Owner == this) return;
Screen.Manager.Computer.Play("DamageBullet");
TakeDamage(rnd.Next(20)); TakeDamage(rnd.Next(20));
} }
} }
+5
View File
@@ -70,6 +70,11 @@ namespace EvilSatellites.Objects
{ {
var proj = (Projectile)obj; var proj = (Projectile)obj;
if (proj.Owner == this) return; if (proj.Owner == this) return;
var scr = (GameScreen)Screen;
if (proj.Owner == scr.GetPlayer())
{
scr.Manager.Computer.Play("Hit");
}
} }
Health -= 10; Health -= 10;
if (obj.Type == ObjectType.Player) if (obj.Type == ObjectType.Player)
+1
View File
@@ -54,6 +54,7 @@ namespace EvilSatellites
GameStats.Wave++; GameStats.Wave++;
Level++; Level++;
Spawn(); Spawn();
Screen.Manager.Computer.Play("Wave");
} }
} }
+2 -1
View File
@@ -20,12 +20,14 @@ namespace EvilSatellites
private bool _Running = false; private bool _Running = false;
public Synthy Sound; public Synthy Sound;
public MusicManager Music; public MusicManager Music;
public AI Computer;
public VibrationManager Vibrations; public VibrationManager Vibrations;
public FDNReverb EnvironmentEffect; public FDNReverb EnvironmentEffect;
public ScreenManager(Game instance): base(instance) public ScreenManager(Game instance): base(instance)
{ {
Sound = new Synthy(); Sound = new Synthy();
Music = new MusicManager(Sound); Music = new MusicManager(Sound);
Computer = new AI(Sound);
Vibrations = new VibrationManager(PlayerIndex.One); Vibrations = new VibrationManager(PlayerIndex.One);
EnvironmentEffect = Sound.CreateReverb(); EnvironmentEffect = Sound.CreateReverb();
EnvironmentEffect.Delay = 0.03; EnvironmentEffect.Delay = 0.03;
@@ -48,7 +50,6 @@ namespace EvilSatellites
{ {
screen.Activate(); screen.Activate();
} }
Vibrations.AddVibration(1, 1, 500);
base.Initialize(); base.Initialize();
} }
+3 -1
View File
@@ -36,6 +36,7 @@ namespace EvilSatellites.Screens
Spawner.Spawn(); Spawner.Spawn();
GameStats.Reset(); GameStats.Reset();
Manager.Music.Play("game1"); Manager.Music.Play("game1");
Manager.Computer.Play("GameStart");
return; return;
} }
@@ -56,7 +57,7 @@ namespace EvilSatellites.Screens
ObjectRadar.Destroy(); ObjectRadar.Destroy();
Spawner.Destroy(); Spawner.Destroy();
// TODO: figure out why cleanup doesn't work // TODO: figure out why cleanup doesn't work
// Manager.Sound.Cleanup(); Manager.Sound.Cleanup();
HandleGameOver(gameTime); HandleGameOver(gameTime);
} }
@@ -277,6 +278,7 @@ namespace EvilSatellites.Screens
public void EndGame() public void EndGame()
{ {
GameOver = true; GameOver = true;
Manager.Computer.Play("GameOver");
} }
} }
} }