using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using SynthySound; using EvilSatellites.Screens; using Microsoft.Xna.Framework; namespace EvilSatellites.Objects { public class Satellite : AbstractGameObject { private ISoundEffect3D Sound; private int Health; private int SatelliteID; 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; 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); Activate(); } public override void Activate() { Sound.Play(); Active = true; ShouldDestroy = false; Health = 100; } 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); } public override void OnCollision(IGameObject obj) { Health -= 10; if (Health <= 0) { Screen.Manager.Sound.PlayOneshot(@"sfx/satellite/"+SatelliteID.ToString()+"/explode.wav", new System.Numerics.Vector3(Position.X, Position.Y, Position.Z)); Destroy(); } } } }