Пример #1
0
        public void AddMonster(int x, int y, Core.DungeonMap m)
        {
            Core.Entity         e = new Core.Entity(_entityID);
            Core.EntityReturner er;

            //int ind = r.Next(CreatNames.Count);
            int    ind          = Game.Random.Next(CreatNames.Count - 1);
            string creatureName = CreatNames[ind];

            int entType = RogueSharp.DiceNotation.Dice.Roll("1d20");

            if (entType <= 2)
            {
                er = Core.EntityFactory.CreateTroll(x, y, creatureName, m);
            }
            else if (entType > 2 && entType < 6)
            {
                er = Core.EntityFactory.CreateOrc(x, y, creatureName, m);
            }
            else if (entType >= 6 && entType < 12)
            {
                er = Core.EntityFactory.CreateKobold(x, y, creatureName, m);
            }
            else if (entType >= 12 && entType < 15)
            {
                er = Core.EntityFactory.CreateZombie(x, y, creatureName, m);
            }
            else
            {
                er = Core.EntityFactory.CreateRat(x, y, creatureName, m);
            }

            //add entity to entity dict
            Entities.Add(_entityID, er.ComponentList);
            EntityBitLookUp.Add(_entityID, er.LookUpBit);
            JustEntities.Add(_entityID, e);

            //add to PositionLookUp
            AddEntToPosition(x, y, e.UID);

            //try adding to schedule
            Components.Component ts = GetSingleComponentByID(_entityID, Core.ComponentTypes.Schedulable);
            if (ts != null)
            {
                Components.SchedulableComp sc = (Components.SchedulableComp)ts;
                int entTime = sc.Time;
                Game.ShedSystem.Add(e, entTime);
            }

            // inc entityID
            _entityID++;

            //add weapon to entity
            AddWeaponToEntity(e.UID);
            if (RogueSharp.DiceNotation.Dice.Roll("1d10") > 8)
            {
                AddPotionToEntity(e.UID);
            }
        }
Пример #2
0
 public MovementSystem(Core.DungeonMap dungeon, EntityManager eman)
 {
     _dungeonMap    = dungeon;
     _entityManager = eman;
     Core.EventBus.Subscribe(Core.EventTypes.ActionReqMove, (sender, e) => OnMessage(e));
     Core.EventBus.Subscribe(Core.EventTypes.MoveOK, (sender, e) => OnMessage(e));
     Core.EventBus.Subscribe(Core.EventTypes.DirectMove, (sender, e) => OnMessage(e));
     Core.EventBus.Subscribe(Core.EventTypes.NoMove, (sender, e) => OnMessage(e));
 }
Пример #3
0
 public GarbageSystem(SchedulingSystem shed, EntityManager em, Core.DungeonMap dm)
 {
     _shedSystem    = shed;
     _entityManager = em;
     _dungeonMap    = dm;
     _entsToDelete  = new List <int>();
     Core.EventBus.Subscribe(Core.EventTypes.DeleteEntity, (sender, e) => OnMessage(e));
     Core.EventBus.Subscribe(Core.EventTypes.DeadEntity, (sender, e) => OnMessage(e));
 }
Пример #4
0
 public MapGenerator(int width, int height, int maxRooms,
                     int roomMaxSize, int roomMinSize, int mapLevel, EntityManager em)
 {
     _width       = width;
     _height      = height;
     _maxRooms    = maxRooms;
     _roomMaxSize = roomMaxSize;
     _roomMinSize = roomMinSize;
     _entManager  = em;
     _map         = new Core.DungeonMap();
 }
Пример #5
0
        public AIComp(Core.DungeonMap m, Types.AITypes aiT, RogueSharp.Point startPoint)
        {
            HasAI            = true;
            CompType         = Core.ComponentTypes.AI;
            DMap             = m;
            Target           = new RogueSharp.Point();
            PathToTarget     = null;
            GotPath          = false;
            AtTarget         = false;
            TurnsSinceMove   = 0;
            Greedy           = (RogueSharp.DiceNotation.Dice.Roll("1d10") < 4);
            UnderAttack      = false;
            CurrentEnemies   = new HashSet <int>();
            LastBasher       = 0;
            Fleeing          = false;
            FleeCounter      = 0;
            ItemsAlreadySeen = new List <int>();
            AiType           = aiT;

            AiState        = Core.AIStates.Wandering;
            TreasureMemory = new Dictionary <int, RogueSharp.Point>();
            LootMemory     = new Dictionary <int, RogueSharp.Point>();
        }
Пример #6
0
 public CollisionSystem(EntityManager em, Core.DungeonMap dm)
 {
     _entityManager = em;
     _dungeonMap    = dm;
     Core.EventBus.Subscribe(Core.EventTypes.CollisionCheck, (sender, e) => OnMessage(e));
 }