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); } }
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)); }
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)); }
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(); }
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>(); }
public CollisionSystem(EntityManager em, Core.DungeonMap dm) { _entityManager = em; _dungeonMap = dm; Core.EventBus.Subscribe(Core.EventTypes.CollisionCheck, (sender, e) => OnMessage(e)); }