private WorldsGenerator(World world, int width) { var meleeLookupRadius = width / 10; var horsemanLookupRadius = width / 6; var archerLookupRadius = width / 2; var meleeFightStrategy = new MeleeFightStrategy(world); var fireStrategy = new FireStrategy(world); IStrategy up = new DefaultMoveStrategy(1, 0, world); IStrategy down = new DefaultMoveStrategy(-1, 0, world); _meleeStrategiesUp = new StrategySet(meleeFightStrategy, new MoveToEnemyStrategy(world, meleeLookupRadius), up); _meleeStrategiesDown = new StrategySet(meleeFightStrategy, new MoveToEnemyStrategy(world, meleeLookupRadius), down); IStrategy horseUp = new HorseMoveStrategy(1, 0, world); IStrategy horseDown = new HorseMoveStrategy(-1, 0, world); _strategiesHorseUp = new StrategySet(meleeFightStrategy, new MoveToEnemyStrategy(world, horsemanLookupRadius), horseUp); _strategiesHorseDown = new StrategySet(meleeFightStrategy, new MoveToEnemyStrategy(world, horsemanLookupRadius), horseDown); _archerStrategiesUp = new StrategySet(fireStrategy, meleeFightStrategy, new MoveToEnemyStrategy(world, archerLookupRadius), up); _archerStrategiesDown = new StrategySet(fireStrategy, meleeFightStrategy, new MoveToEnemyStrategy(world, archerLookupRadius), down); _world = world; }
protected virtual void FireBullets() { if (CanFire(FirePosition)) { var bullets = FireStrategy.GetBullets(FirePosition); PlayFireSound(); } }
protected sealed override void OnEnemyActivate() { FireStrategy.Reset(); OnFireStrategyEnemyActivate(); }