public override void InteracteOn(Entity user, Coordinates coords) { var inventory = user.GetComponent <ComponentInventory>(); var level = user.Level; var e = user.Level.QueryEntity(coords).FirstOrDefault(); if ((e == null || e.HasComponent <ComponentBreakable>()) && (CanBePlaceOn.Count == 0 || CanBePlaceOn.Contains(level.GetTile(coords)))) { e?.GetComponent <ComponentBreakable>()?.Break(); inventory?.Content.Remove(AttachedItem, 1); Place(level, coords, user.Facing); if (ConsumeItem && user is Player p && p.GetComponent <ComponentInventory>().Content.Count(p.HoldedItem()) == 0) { p.HoldItem(null); } } }
public override void InteracteOn(Entity user, Coordinates pos) { var inventory = user.GetComponent <Inventory>(); var level = user.Level; var e = user.Level.GetEntitiesAt(pos).FirstOrDefault(); if ((e == null || e.HasComponent <Breakable>()) && (CanBePlaceOn.Count == 0 || CanBePlaceOn.Contains(level.GetTile(pos)))) { e?.GetComponent <Breakable>()?.Break(); inventory?.Content.Remove(AttachedItem, 1); Place(level, pos, user.Facing); if (ConsumeItem && user is Entities.Player p && p.GetComponent <Inventory>().Content.Count(p.HoldingItem) == 0) { p.HoldingItem = null; } } }