internal string ConsumeSchematic(OldSandBox sb) { string result = null; if ((result = HasFunds(sb)) != null) { return(result); } sb.treasury -= kCost; foreach (StackedObject <string, int> so in materials) { sb.stock.Remove(sb.stock.FindIndex(so.item), so.count); } return(null); }
internal string HasFunds(OldSandBox sb) { if (sb.treasury < kCost) { return($"Treasury is missing {kCost - sb.treasury} Kutsyei Coins"); } foreach (StackedObject <string, int> so in materials) { int i = sb.stock.FindIndex(so.item); if (i <= -1) { return($"Stock has no {so.item}. Requires {so.count}"); } else if (sb.stock.GetCount(i) < so.count) { return($"Stock is missing {so.count - sb.stock.GetCount(i)}x " + $"{so.item}"); } } return(null); }
// internal StrongholdProduction Cycle(OldSandBox sandbox, StrongholdProduction sp) { if (role != BuildingRole.Production || DateTime.UtcNow < Ready) { return(sp); } StackedItems product = Produce(); if (product != null && sandbox.stock.Add(product, sandbox.stats.StorageSpace)) { sp.results.Add($"{this} Produced: {product}"); sp.KoinProfit += profit; sp.KoinCost += cost; Ready = DateTime.UtcNow.AddHours(HoursToReady); } else { sp.results.Add($"{this}'s Produced {product} could not be collected. Storage full"); } return(sp); }