public void AddWeaponToEntity(int eid) { Core.Entity e = new Core.Entity(_entityID); Core.EntityReturner er; int weaponID = e.UID; Components.CreatureDetailsComp cdc = (Components.CreatureDetailsComp)GetSingleComponentByID(eid, Core.ComponentTypes.CreatureDetails); if (cdc.CreatureType != Types.CreatureTypes.Troll) { er = Core.EntityFactory.CreateSword(); } else { er = Core.EntityFactory.CreateTrollClub(); } Entities.Add(_entityID, er.ComponentList); EntityBitLookUp.Add(_entityID, er.LookUpBit); JustEntities.Add(_entityID, e); _entityID++; // add weapon to entity Core.InventoryAddEventArgs addEvent = new Core.InventoryAddEventArgs(Core.EventTypes.InventoryAdd, eid, weaponID); Core.EventBus.Publish(Core.EventTypes.InventoryAdd, addEvent); }
public void AddPotionToEntity(int eid) { Core.Entity e = new Core.Entity(_entityID); Core.EntityReturner er; int potionID = e.UID; er = Core.EntityFactory.CreateHealthPotion(); Entities.Add(_entityID, er.ComponentList); EntityBitLookUp.Add(_entityID, er.LookUpBit); JustEntities.Add(_entityID, e); _entityID++; // add potion to entity Core.InventoryAddEventArgs addEvent = new Core.InventoryAddEventArgs(Core.EventTypes.InventoryAdd, eid, potionID); Core.EventBus.Publish(Core.EventTypes.InventoryAdd, addEvent); }
public void OnMessage(Core.MessageEventArgs e) { switch (e.MessageType) { case Core.EventTypes.InventoryAdd: Core.InventoryAddEventArgs msg = (Core.InventoryAddEventArgs)e; int entPickingUp = msg.EntPickingUp; int pickedUpObj = msg.PickedUpObject; List <Components.Component> pickedUpObjComps = _entityManager.GetCompsByID(pickedUpObj); List <Components.Component> entComps = _entityManager.GetCompsByID(entPickingUp); Components.InventoryComp invComp = (Components.InventoryComp)_entityManager.GetSingleComponentByID(entPickingUp, Core.ComponentTypes.Inventory); if (invComp != null) { Components.PositionComp posComp = (Components.PositionComp)pickedUpObjComps.Find(x => x.CompType == Core.ComponentTypes.Position); Components.CollectableComp collectComp = (Components.CollectableComp)pickedUpObjComps.Find(x => x.CompType == Core.ComponentTypes.Collectable); Components.ItemValueComp vC = (Components.ItemValueComp)pickedUpObjComps.Find(x => x.CompType == Core.ComponentTypes.ItemValue); //Components.Component c = _entityManager.GetSingleComponentByID(collectComp.) bool hasValue = (vC != null); if (collectComp.Active) { //is it treasure? if (collectComp.Treasure) { //TODO stackable treasure if (vC != null) { invComp.ValueCarried += vC.ItemValue; } // remove position comps from picked up object _entityManager.RemoveCompFromEnt(pickedUpObj, Core.ComponentTypes.Position); collectComp.Active = false; _entityManager.RemoveEntFromPosition(posComp.X, posComp.Y, pickedUpObj); invComp.Treasure.Add(pickedUpObj); } else { // is it stackable? - not currently used //TODO stackable collectables if (collectComp.Stackable) { } else { Game.MessageLog.Add("picking up item"); // System.Threading.Thread.Sleep(1000); if (posComp != null) { _entityManager.RemoveEntFromPosition(posComp.X, posComp.Y, pickedUpObj); _entityManager.RemoveCompFromEnt(pickedUpObj, Core.ComponentTypes.Position); pickedUpObjComps.Remove(posComp); } invComp.Inventory.Add(pickedUpObj); } } } } break; } }