Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 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);
 }
Esempio n. 3
0
        //
        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);
        }