public AbstractEntity AddEntityToUnit(AbstractEntity e, AbstractEntity unit)
        {
            CanCarryComponent c = (CanCarryComponent)unit.GetComponent(nameof(CanCarryComponent));

            e.AddComponent(new PositionComponent(e, this.map_data, 0, 0, false, false));
            c.AddItem(e);
            return(e);
        }
Ejemplo n.º 2
0
        protected override List <string> GetStatsFor_Sub(AbstractEntity e)
        {
            var str = new List <string>();

            str.Add($"Stats for {e.name}");
            // todo - stats

            CanCarryComponent ccc = (CanCarryComponent)e.GetComponent(nameof(CanCarryComponent));

            foreach (var item in ccc.GetItems())
            {
                str.Add($"{item.name}");
            }
            return(str);
        }
        public void PickupItem(AbstractEntity unit, AbstractEntity item, List <AbstractEntity> mapSquare)
        {
            MobDataComponent mdc = (MobDataComponent)unit.GetComponent(nameof(MobDataComponent));

            if (mdc == null || mdc.actionPoints > 0)
            {
                mdc.actionPoints -= 40;
                CanCarryComponent  ccc = (CanCarryComponent)unit.GetComponent(nameof(CanCarryComponent));
                CarryableComponent cc  = (CarryableComponent)item.GetComponent(nameof(CarryableComponent));
                // todo - check weight etc...
                ccc.AddItem(item);
                cc.carrier = unit;
                mapSquare.Remove(item);
            }
        }
        private void ListItemsInInv()
        {
            this.menuItemList.Clear();
            int idx = 1;
            CanCarryComponent ccc = (CanCarryComponent)this.currentUnit.GetComponent(nameof(CanCarryComponent));

            foreach (var e in ccc.GetItems())
            {
                CarryableComponent cc = (CarryableComponent)e.GetComponent(nameof(CarryableComponent));
                if (cc != null)
                {
                    this.menuItemList.Add(idx, e);
                    idx++;
                }
            }
        }
        public void EntityShootingAtEntity(AbstractEntity shooter, Point shooterPos, AbstractEntity target, Point targetPos)
        {
            CanCarryComponent ccc = (CanCarryComponent)shooter.GetComponent(nameof(CanCarryComponent));

            if (ccc != null && ccc.CurrentItem != null)
            {
                ItemCanShootComponent icsc = (ItemCanShootComponent)ccc.CurrentItem.GetComponent(nameof(ItemCanShootComponent));
                if (icsc != null)
                {
                    MobDataComponent us = (MobDataComponent)shooter.GetComponent(nameof(MobDataComponent));
                    if (us.actionPoints > 0)
                    {
                        this.EntityShotByEntity(shooter, shooterPos.X, shooterPos.Y, target, targetPos.X, targetPos.Y);
                        us.actionPoints -= 50;
                    }
                }
            }
        }
        public void ThrowItem(AbstractEntity thrower, int destX, int destY)
        {
            MobDataComponent mdc = (MobDataComponent)thrower.GetComponent(nameof(MobDataComponent));

            if (mdc == null || mdc.actionPoints > 0)
            {
                mdc.actionPoints -= 50;
                CanCarryComponent ccc = (CanCarryComponent)thrower.GetComponent(nameof(CanCarryComponent));
                if (ccc.CurrentItem != null)
                {
                    PositionComponent pos = (PositionComponent)ccc.CurrentItem.GetComponent(nameof(PositionComponent));
                    this.mapData.map[pos.x, pos.y].Add(ccc.CurrentItem);

                    this.gameLog.Add($"{ccc.CurrentItem.name} thrown.");

                    ccc.RemoveItem(ccc.CurrentItem);
                }
            }
        }
        public void DropItem(AbstractEntity unit, AbstractEntity item, List <AbstractEntity> mapSquare)
        {
            MobDataComponent mdc = (MobDataComponent)unit.GetComponent(nameof(MobDataComponent));

            if (mdc == null || mdc.actionPoints > 0)
            {
                mdc.actionPoints -= 20;
                CanCarryComponent  ccc     = (CanCarryComponent)unit.GetComponent(nameof(CanCarryComponent));
                PositionComponent  unitpos = (PositionComponent)item.GetComponent(nameof(PositionComponent));
                PositionComponent  itempos = (PositionComponent)item.GetComponent(nameof(PositionComponent));
                CarryableComponent cc      = (CarryableComponent)item.GetComponent(nameof(CarryableComponent));
                if (ccc.GetItems().Contains(item))
                {
                    ccc.RemoveItem(item);
                    cc.carrier = null;
                    mapSquare.Add(item);
                    itempos.x = unitpos.x;
                    itempos.y = unitpos.y;
                }
            }
        }