protected Dictionary <int, AbstractEntity> menuItemList = new Dictionary <int, AbstractEntity>(); // For when selecting item to pick up etc...

        public AbstractRoguelike(int maxLogEntries)
        {
            this.ecs     = new BasicEcs(this);
            this.mapData = new MapData();
            this.gameLog = new GameLog(maxLogEntries);

            new CloseCombatSystem(this.ecs);
            new MovementSystem(this.ecs, this.mapData);

            this.CreateData();

            this.view          = new DefaultRLView(this);
            this.drawingSystem = new DrawingSystem(this.view, this);

            this.checkVisibilitySystem = new CheckMapVisibilitySystem(this.ecs, this.mapData);
            new ShootOnSightSystem(this.ecs, this.checkVisibilitySystem, this.ecs.entities);

            this.checkVisibilitySystem.process(this.playersUnits);
            this.damageSystem    = new DamageSystem(this.ecs, this.gameLog);
            this.explosionSystem = new ExplosionSystem(this.ecs, this.checkVisibilitySystem, this.damageSystem, this.mapData, this.ecs.entities);
            new TimerCountdownSystem(this.ecs, this.explosionSystem);
            this.pickupItemSystem = new PickupDropSystem();
            this.effectsSystem    = new EffectsSystem(this.ecs);
            new ThrowingSystem(this.ecs, this.mapData, this.gameLog);
            new ShootingSystem(this.ecs, this.gameLog);

            // Draw screen
            this.drawingSystem.Process(this.effectsSystem.effects);
        }
 public AlienAISystem(BasicEcs ecs, CheckMapVisibilitySystem _cmvs, List <AbstractEntity> _entities) : base(ecs, true)
 {
     this.cmvs     = _cmvs;
     this.entities = _entities;
 }