diff options
Diffstat (limited to 'Penguloon/Objects/ObjectBase.cs')
| -rw-r--r-- | Penguloon/Objects/ObjectBase.cs | 45 |
1 files changed, 42 insertions, 3 deletions
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); |
