Beispiel #1
0
        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);
                }
            }
        }
Beispiel #2
0
        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;
                }
            }
        }