Example #1
0
        // TODO: this is a bit awkward since it might prioritize bigger
        // than necessary stacks farther away when amt < cfg.amt
        public TaskClaimItem TaskClaim(int amt)
        => new TaskClaimItem(game,
                             (work) =>
        {
            if (queue.Count == 0)
            {
                return(null);
            }

            TileItem item = queue.First;
            if (item.amtAvailable > 0)
            {
                return(ItemClaim.MakeClaim(game, item, HaulAmt(item, amt)));
            }

            return(null);
        });
Example #2
0
        public TaskClaimItem ClaimItem(Tile tile)
        {
            BB.AssertNotNull(tile);
            return(new TaskClaimItem(this,
                                     (work) =>
            {
                if (!tile.hasItems)
                {
                    return null;
                }

                TileItem item = map.GetItem(tile);
                if (item.amtAvailable > 0)     // TODO: account for carrying capacity
                {
                    return ItemClaim.MakeClaim(this, item, item.amtAvailable);
                }

                return null;
            }));
        }