From 1276593bfbbfcdbac24b48cf8b574da25945d763 Mon Sep 17 00:00:00 2001 From: aldrikboy Date: Fri, 22 Dec 2017 20:30:25 +0100 Subject: ZULUL --- Penguloon/Objects/ObjectBase.cs | 45 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-) (limited to 'Penguloon/Objects/ObjectBase.cs') diff --git a/Penguloon/Objects/ObjectBase.cs b/Penguloon/Objects/ObjectBase.cs index c72788e..cde206d 100644 --- a/Penguloon/Objects/ObjectBase.cs +++ b/Penguloon/Objects/ObjectBase.cs @@ -36,6 +36,11 @@ namespace Penguloon.Objects this.Position = position; } + public ObjectBase(Map map) + { + this.Map = map; + } + public void Update(float deltaTime) { this.Center = new Vector2(Position.X + ((TileSpanX * Map.TileWidth) / 2), Position.Y + ((TileSpanY * Map.TileHeight) / 2)); @@ -47,7 +52,7 @@ namespace Penguloon.Objects { Rotation = (float)GetRotation(Map.Enemies[i].Box.Center.ToVector2()); - if ((DateTime.Now - LastAttack).TotalMilliseconds > AttackSpeedMS) + if ((DateTime.Now - LastAttack).TotalMilliseconds > (AttackSpeedMS / (int)Map.Level.ParentScene.Speed)) { LastAttack = DateTime.Now; SpawnUnique(); @@ -61,6 +66,40 @@ namespace Penguloon.Objects Projectiles[i].Update(deltaTime); UpdateUnique(deltaTime); + RemoveUselessProjectiles(); + } + + private void RemoveUselessProjectiles() + { + for (int i = 0; i < Projectiles.Count; i++) + { + if (i < Projectiles.Count) + { + if (Projectiles[i].Position.X < -50) + { + Projectiles.Remove(Projectiles[i]); + return; + } + + if (Projectiles[i].Position.X > StaticUIValues.ScreenViewport.X + 50) + { + Projectiles.Remove(Projectiles[i]); + return; + } + + if (Projectiles[i].Position.Y < -50) + { + Projectiles.Remove(Projectiles[i]); + return; + } + + if (Projectiles[i].Position.Y > StaticUIValues.ScreenViewport.Y + 50) + { + Projectiles.Remove(Projectiles[i]); + return; + } + } + } } public abstract void UpdateUnique(float deltaTime); @@ -91,8 +130,8 @@ namespace Penguloon.Objects rotation: (float)rot, origin: new Vector2(Texture.Width / 2, Texture.Height / 2)); - Map.ParentScene.Main.SpriteBatch.Draw(RangeCircle, - destinationRectangle: new Rectangle((int)rec.X - ((int)Range), (int)rec.Y - ((int)Range), (int)Range * 2, (int)Range * 2)); + //Map.ParentScene.Main.SpriteBatch.Draw(RangeCircle, + // destinationRectangle: new Rectangle((int)rec.X - ((int)Range), (int)rec.Y - ((int)Range), (int)Range * 2, (int)Range * 2)); } public abstract void DrawUnique(float deltaTime); -- cgit v1.2.3-70-g09d2