summaryrefslogtreecommitdiff
path: root/Penguloon/Objects/ObjectBase.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Penguloon/Objects/ObjectBase.cs')
-rw-r--r--Penguloon/Objects/ObjectBase.cs45
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);