using System; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Ink; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; namespace SilverlightGame { public class Enemy : AnimatedGameObject { protected static readonly double SPEED = 75; protected static ResourcePool<Enemy> resourcePool = new ResourcePool<Enemy>(); public delegate void EnemyLogic(double dt); protected EnemyLogic enemyLogic = null; static public Enemy UnusedEnemy { get { return resourcePool.UnusedObject; } } public Enemy() { } public override void enterFrame(double dt) { base.enterFrame(dt); if (enemyLogic != null) enemyLogic(dt); } public Enemy startupBasicEnemy(Point dimensions, AnimationData animationData, int zLayer) { base.startupAnimatedGameObject(dimensions, animationData, zLayer); enemyLogic = new EnemyLogic(this.basicEnemyLogic); return this; } public override void shutdown() { base.shutdown(); enemyLogic = null; } protected void basicEnemyLogic(double dt) { Position = new Point(Position.X, Position.Y + SPEED * dt); offscreenCheck(); } } }