// 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); });
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; })); }