From 589124c5fc2e46bf38e797447b4881f8b6327877 Mon Sep 17 00:00:00 2001 From: Talon Date: Mon, 19 Apr 2021 15:41:37 +0200 Subject: [PATCH] Lots of stuff --- .../DesignTimeBuild/.dtbcache.v2 | Bin 63123 -> 63123 bytes .vs/EvilSatellites/v16/.suo | Bin 102400 -> 104448 bytes EvilSatellites/Objects/Debris.cs | 24 +++++++++-- EvilSatellites/Objects/ObjectType.cs | 3 +- EvilSatellites/Objects/Player.cs | 40 +++++++++++++++++- EvilSatellites/Objects/Projectile.cs | 13 ++++-- EvilSatellites/Objects/Satellite.cs | 13 +++++- EvilSatellites/Radar.cs | 16 ++++++- EvilSatellites/Screens/GameScreen.cs | 32 ++++++++------ EvilSatellites/sfx/bullets/1.wav | 3 ++ 10 files changed, 120 insertions(+), 24 deletions(-) create mode 100644 EvilSatellites/sfx/bullets/1.wav diff --git a/.vs/EvilSatellites/DesignTimeBuild/.dtbcache.v2 b/.vs/EvilSatellites/DesignTimeBuild/.dtbcache.v2 index 796ccc9828787d55984a946101ee81b9a1cd3087..ad0b3ac0f17e0e0796666d7285f59118790f6e07 100644 GIT binary patch delta 75 zcmV~$u@%4|2nE2xg@7Lgn+%Z+K$3ZU&q*?vZR*^uUDhu1I-z5DW86_iTe#IaVB(7A Y&U&Z>2}O!P%rfI4AWfM%cYkO3et2~jr2qf` delta 75 zcmWN_u@QhE3nq;Uv0knl4PcTD17wAT8{w{}`P&Fgf{Wt1F>W*r{TB3?<5 Z6hyvT7)JmA diff --git a/.vs/EvilSatellites/v16/.suo b/.vs/EvilSatellites/v16/.suo index 44c37e21807f57eefedf1dcb34b945ab1aebe599..ca4f3884af18d394601a79ea961d563966b2975f 100644 GIT binary patch delta 6753 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 I{+E;e1DAg2CIA2c delta 6083 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 diff --git a/EvilSatellites/Objects/Debris.cs b/EvilSatellites/Objects/Debris.cs index f2978d3..b1dfb66 100644 --- a/EvilSatellites/Objects/Debris.cs +++ b/EvilSatellites/Objects/Debris.cs @@ -12,14 +12,19 @@ namespace EvilSatellites.Objects public class Debris : AbstractGameObject { private ISoundEffect3D Sound; - + private Random rnd = new Random(); + private Vector3 MovementVector; public Debris(IScreen screen, Vector3 pos) : base(screen) { + Type = ObjectType.Debris; Sound = Screen.Manager.Sound.Load3D(@"sfx/debris/1/loop.wav"); Sound.Loop = true; + Sound.Pitch = 0.9 + (float)rnd.NextDouble()*2; Position = pos; Dimensions = new Vector3(5, 5, 5); Sound.Position = new System.Numerics.Vector3(pos.X, pos.Y, pos.Z); + MovementVector = new Vector3(-0.02f + (float)rnd.NextDouble() * 0.01f, -0.02f + (float)rnd.NextDouble() * 0.01f, -0.02f + (float) rnd.NextDouble() * 0.01f); + Rotation = Matrix.CreateFromAxisAngle(new Vector3(0, 0, 1), 0); Sound.ConnectToEffect(Screen.Manager.EnvironmentEffect); Activate(); } @@ -33,16 +38,29 @@ namespace EvilSatellites.Objects public override void Destroy() { Sound.Destroy(); + ShouldDestroy = true; + Active = false; } override public void Update(GameTime gameTime) { - Sound.Position = new System.Numerics.Vector3(Position.X, Position.Y, Position.Z); + Move(MovementVector); + Sound.Position = new System.Numerics.Vector3(Position.X+Dimensions.X/2, Position.Y+Dimensions.Y/2, Position.Z+Dimensions.Z/2); } public override void OnCollision(IGameObject obj) { - Sound.Stop(); + if (obj.Type == ObjectType.Projectile) return; + if (obj.Type == ObjectType.Player) + { + var player = (Player)obj; + if (player.Vacuuming) + { + return; + } + player.TakeDamage(25); + Destroy(); + } } } } diff --git a/EvilSatellites/Objects/ObjectType.cs b/EvilSatellites/Objects/ObjectType.cs index 60cdd4b..95d4195 100644 --- a/EvilSatellites/Objects/ObjectType.cs +++ b/EvilSatellites/Objects/ObjectType.cs @@ -9,6 +9,7 @@ namespace EvilSatellites.Objects Generic, Player, Satellite, - Projectile + Projectile, + Debris } } diff --git a/EvilSatellites/Objects/Player.cs b/EvilSatellites/Objects/Player.cs index a69f5e4..3a270b5 100644 --- a/EvilSatellites/Objects/Player.cs +++ b/EvilSatellites/Objects/Player.cs @@ -12,7 +12,7 @@ namespace EvilSatellites.Objects { private Vector3 _PrevPos; private Vector3 MaxSpeed = new Vector3(0.2f, 0.2f, 0.2f); - public Vector3 Acceleration = new Vector3(0.008f, 0.008f, 0.008f); + public Vector3 Acceleration = new Vector3(0.002wf, 0.004f, 0.004f); private Vector3 Deceleration = new Vector3(0.0025f, 0.0025f, 0.0025f); private ISoundEffect sfxEngine; private ISoundEffect sfxWhine; @@ -22,18 +22,24 @@ namespace EvilSatellites.Objects public IWeapon CurrentWeapon; private int Turning; private int Elevating; + public bool Vacuuming; + public float Health; + private Random rnd = new Random(); public Player(IScreen screen): base(screen) { ShouldDestroy = false; Active = true; Type = ObjectType.Player; - Position = new Vector3(0, 0, 0); + Position = new Vector3(5000, 5000, 4990); Dimensions = new Vector3(5, 5, 5); Movement = new Vector3(0, 0, 0); Rotation = Matrix.Identity; Orientation = Rotation.Forward; CurrentWeapon = new LaserMG(this, (GameScreen)Screen); Turning = 0; + Elevating = 0; + Vacuuming = false; + Health = 100; Activate(); } @@ -144,5 +150,35 @@ namespace EvilSatellites.Objects Elevating = 0; sfxElevator.Stop(); } + + public void StartVacuuming(GameTime time) + { + Vacuuming = true; + sfxVacuum.Start(time); + } + + public void StopVacuuming() + { + Vacuuming = false; + sfxVacuum.Stop(); + } + + public void TakeDamage(float dmg) + { + Health -= dmg; + string dmgSound = @"sfx/physics/collisions/"; + if (dmg > 60) + { + dmgSound += "heavy"; + } else if (dmg > 30) + { + dmgSound += "medium"; + } else + { + dmgSound += "light"; + } + dmgSound += "/int/" + (rnd.Next(2)+1).ToString()+".wav"; + Screen.Manager.Sound.PlayOneshot(dmgSound); + } } } diff --git a/EvilSatellites/Objects/Projectile.cs b/EvilSatellites/Objects/Projectile.cs index 7b389d6..7ee95e8 100644 --- a/EvilSatellites/Objects/Projectile.cs +++ b/EvilSatellites/Objects/Projectile.cs @@ -32,9 +32,16 @@ namespace EvilSatellites.Objects { ShouldDestroy = false; Active = true; + Sound = Screen.Manager.Sound.Load3D(@"sfx/bullets/1.wav"); + Sound.Loop = true; + Sound.Play(); + Sound.Pitch = 0.9 + rnd.NextDouble()*0.3; + Sound.Position = new System.Numerics.Vector3(Position.X+Dimensions.X/2, Position.Y+Dimensions.Y/2, Position.Z+Dimensions.Z/2); } public override void Destroy() { + Sound.Stop(); + Sound.Destroy(); ShouldDestroy = true; Active = false; } @@ -46,13 +53,13 @@ namespace EvilSatellites.Objects { Destroy(); } + Sound.Position = new System.Numerics.Vector3(Position.X + Dimensions.X / 2, Position.Y + Dimensions.Y / 2, Position.Z + Dimensions.Z / 2); } public override void OnCollision(IGameObject obj) { - if (obj.Type == ObjectType.Projectile) return; - if (obj.Type == ObjectType.Player) return; - Screen.Manager.Sound.PlayOneshot(@"sfx/physics/impacts/bullet/"+(rnd.Next(5)+1)+".wav", new System.Numerics.Vector3(Position.X, Position.Y, Position.Z), Screen.Manager.EnvironmentEffect); + if (obj.Type == ObjectType.Projectile || obj.Type == ObjectType.Player || obj.Type == ObjectType.Debris) return; + Screen.Manager.Sound.PlayOneshot(@"sfx/physics/impacts/bullet/"+(rnd.Next(5)+1)+".wav", new System.Numerics.Vector3(Position.X+Dimensions.X/2, Position.Y+Dimensions.Y/2, Position.Z+Dimensions.Z/2), Screen.Manager.EnvironmentEffect); Destroy(); } } diff --git a/EvilSatellites/Objects/Satellite.cs b/EvilSatellites/Objects/Satellite.cs index 79e6d71..5e390ae 100644 --- a/EvilSatellites/Objects/Satellite.cs +++ b/EvilSatellites/Objects/Satellite.cs @@ -15,16 +15,20 @@ namespace EvilSatellites.Objects private int Health; private int SatelliteID; private Random rnd = new Random(); + private Matrix FlightPath; public Satellite(IScreen screen, Vector3 pos, int satelliteID = 1) : base(screen) { Type = ObjectType.Satellite; SatelliteID = satelliteID; Sound = Screen.Manager.Sound.Load3D(@"sfx/satellite/"+SatelliteID.ToString()+"/loop.wav"); Sound.Loop = true; + Sound.Pitch = 0.9 + rnd.NextDouble()*0.5; Position = pos; Dimensions = new Vector3(5, 5, 5); Sound.Position = new System.Numerics.Vector3(pos.X, pos.Y, pos.Z); Sound.ConnectToEffect(Screen.Manager.EnvironmentEffect); + FlightPath = Matrix.CreateFromAxisAngle(Rotation.Right, (float)rnd.NextDouble()*0.1f); + Rotation = FlightPath; Activate(); } @@ -44,12 +48,19 @@ namespace EvilSatellites.Objects override public void Update(GameTime gameTime) { - Sound.Position = new System.Numerics.Vector3(Position.X, Position.Y, Position.Z); + Move(new Vector3(0, 0, -0.05f)); + Sound.Position = new System.Numerics.Vector3(Position.X+Dimensions.X/2, Position.Y+Dimensions.Y/2, Position.Z+Dimensions.Z/2); } public override void OnCollision(IGameObject obj) { Health -= 10; + if (obj.Type == ObjectType.Player) + { + var player = (Player)obj; + player.TakeDamage(66); + Destroy(); + } if (Health <= 0) { Screen.Manager.Sound.PlayOneshot(@"sfx/satellite/"+SatelliteID.ToString()+"/explode.wav", new System.Numerics.Vector3(Position.X, Position.Y, Position.Z)); diff --git a/EvilSatellites/Radar.cs b/EvilSatellites/Radar.cs index 343247d..fbe9b7e 100644 --- a/EvilSatellites/Radar.cs +++ b/EvilSatellites/Radar.cs @@ -17,15 +17,22 @@ namespace EvilSatellites public IGameObject Target; public IScreen Screen; public ISoundEffect RadarNoise; + public ObjectType Filter; public Radar(IGameObject owner, IScreen screen) { Owner = owner; Screen = screen; RadarNoise = Screen.Manager.Sound.Load(@"sfx/ui/radar/pingEnemy.wav", false); RadarNoise.Loop = true; + Filter = ObjectType.Satellite; Active = false; } + public void SetObjectType(ObjectType type) + { + Filter = type; + } + public void Start() { RadarNoise.Reset(); @@ -43,9 +50,10 @@ namespace EvilSatellites { if (objects.Count < 1) return; float minDistance = 1000; + Target = null; foreach (var obj in objects) { - if (obj.Type != ObjectType.Satellite) continue; + if (obj.Type != Filter) continue; float distance = Vector3.Distance(obj.Position, Owner.Position); if (distance < minDistance) { @@ -53,7 +61,11 @@ namespace EvilSatellites Target = obj; } } - if (Target == null) return; + if (Target == null) + { + RadarNoise.Pitch = 0.1; + return; + } Vector3 radarTarget = (Target.Position - Owner.Position); radarTarget.Normalize(); RadarNoise.Pitch = MathHelper.Clamp(0.1f / Vector3.Distance(Owner.Rotation.Forward, radarTarget) * 3f, 0, 1); diff --git a/EvilSatellites/Screens/GameScreen.cs b/EvilSatellites/Screens/GameScreen.cs index 23e3311..bf69667 100644 --- a/EvilSatellites/Screens/GameScreen.cs +++ b/EvilSatellites/Screens/GameScreen.cs @@ -29,7 +29,7 @@ namespace EvilSatellites.Screens Player player = new Player(this); Objects.Add(player); _player = player; - Satellite prop = new Satellite(this, new Vector3(15, 0, 15)); + Satellite prop = new Satellite(this, new Vector3(5000, 5000, 5000)); Objects.Add(prop); ObjectRadar = new Radar(_player, this); return; @@ -63,7 +63,7 @@ namespace EvilSatellites.Screens objtree.Add(obj); if (obj.Type == ObjectType.Player) { - Manager.Sound.ListenerPosition = new System.Numerics.Vector3(obj.Position.X, obj.Position.Y, obj.Position.Z); + Manager.Sound.ListenerPosition = new System.Numerics.Vector3(obj.Position.X+obj.Dimensions.X/2, obj.Position.Y+obj.Dimensions.Y/2, obj.Position.Z+obj.Dimensions.Z/2); Manager.Sound.ListenerOrientationForward = System.Numerics.Vector3.Normalize(new System.Numerics.Vector3(obj.Rotation.Forward.X, obj.Rotation.Forward.Y, obj.Rotation.Forward.Z)); Manager.Sound.ListenerOrientationUpwards = System.Numerics.Vector3.Normalize(new System.Numerics.Vector3(obj.Rotation.Up.X, obj.Rotation.Up.Y, obj.Rotation.Up.Z)); Manager.Listener.Position = obj.Position; @@ -130,6 +130,14 @@ namespace EvilSatellites.Screens { _player.StopElevating(); } + if (Input.IsJustPressed(Keys.V)) + { + _player.StartVacuuming(gameTime); + } + if (Input.IsJustReleased(Keys.V)) + { + _player.StopVacuuming(); + } _player.Accelerate(move); if (Input.IsJustPressed(Keys.Space)) { @@ -139,14 +147,6 @@ namespace EvilSatellites.Screens { _player.CurrentWeapon.Stop(); } - if (Input.IsJustPressed(Keys.V)) - { - Tolk.Speak(_player.Movement.Length().ToString(), true); - } - if (Input.IsJustPressed(Keys.C)) - { - Tolk.Speak(_player.Position.ToString()); - } if (Input.IsJustPressed(Keys.R)) { if (ObjectRadar.Active) @@ -157,9 +157,17 @@ namespace EvilSatellites.Screens ObjectRadar.Start(); } } - if (Input.IsJustPressed(Keys.O)) + if (Input.IsJustPressed(Keys.T)) { - Tolk.Speak(Objects.Count.ToString()); + if (ObjectRadar.Filter == ObjectType.Satellite) + { + ObjectRadar.SetObjectType(ObjectType.Debris); + Tolk.Output("Debris"); + } else + { + ObjectRadar.SetObjectType(ObjectType.Satellite); + Tolk.Output("Satellites"); + } } } diff --git a/EvilSatellites/sfx/bullets/1.wav b/EvilSatellites/sfx/bullets/1.wav new file mode 100644 index 0000000..2ba59d7 --- /dev/null +++ b/EvilSatellites/sfx/bullets/1.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81c7340107f82cee2d8f968a94f40be9c326b820d87c1216368979216bbc2ab6 +size 269864