4 static const int DECIMALS_SUPPLIES = 1;
26 static bool GetStoredResources(notnull SCR_ResourceComponent resourceComponent, out
float storedRescources,
EResourceType resourceType =
EResourceType.SUPPLIES)
28 SCR_ResourceConsumer consumer;
33 storedRescources = consumer.GetAggregatedResourceValue();
46 storedRescources = consumer.GetAggregatedResourceValue();
65 if (!failIfNotEnoughResources)
68 GetAvailableResources(resourceComponent, available, resourceType);
70 if (available < resourcesToConsume)
71 resourcesToConsume = available;
74 SCR_ResourceConsumer consumer = GetAvailableResourceConsumer(resourceComponent, resourceType);
78 return consumer.RequestConsumtion(resourcesToConsume).GetReason();
87 static string SuppliesToString(
float supplies)
89 return SCR_FormatHelper.FloatToStringNoZeroDecimalEndings(supplies, DECIMALS_SUPPLIES);
101 static bool GetStoredAndMaxResources(notnull SCR_ResourceComponent resourceComponent, out
float totalResources, out
float maxResources,
EResourceType resourceType =
EResourceType.SUPPLIES)
103 SCR_ResourceConsumer consumer;
110 maxResources = consumer.GetAggregatedMaxResourceValue();
111 totalResources = consumer.GetAggregatedResourceValue();
113 if (maxResources > 0)
123 if (maxResources > 0)
127 if (resourceComponent.GetConsumer(
EResourceGeneratorID.DEFAULT_STORAGE, resourceType, consumer))
129 maxResources = consumer.GetAggregatedMaxResourceValue();
130 totalResources = consumer.GetAggregatedResourceValue();
132 if (maxResources > 0)
154 SCR_ResourceConsumer consumer;
155 availableResources = 0;
157 if (resourceComponent.GetConsumer(resourceID, resourceType, consumer))
159 availableResources = consumer.GetAggregatedResourceValue();
174 static SCR_ResourceConsumer GetStorageConsumer(notnull SCR_ResourceComponent resourceComponent,
EResourceType resourceType =
EResourceType.SUPPLIES)
176 SCR_ResourceConsumer consumer = resourceComponent.GetConsumer(
EResourceGeneratorID.DEFAULT_STORAGE, resourceType);
194 static SCR_ResourceConsumer GetAvailableResourceConsumer(notnull SCR_ResourceComponent resourceComponent,
EResourceType resourceType =
EResourceType.SUPPLIES)
206 static SCR_ResourceConsumer GetFirstValidConsumer(notnull SCR_ResourceComponent resourceComponent,
EResourceType resourceType =
EResourceType.SUPPLIES)
208 SCR_ResourceConsumer consumer = resourceComponent.GetConsumer(
EResourceGeneratorID.DEFAULT_STORAGE, resourceType);
250 static float RoundRefundSupplyAmount(
float refundCost)
252 return Math.Ceil(refundCost);
262 static EResourceReason SimpleResourceTransfer(notnull SCR_ResourceComponent resourceComponentFrom, notnull SCR_ResourceComponent resourceComponentTo,
float transferAmount,
bool allowPartialTransfer =
true,
EResourceType resourceType =
EResourceType.SUPPLIES)
264 SCR_ResourceConsumer resourceConsumerFrom = GetFirstValidConsumer(resourceComponentFrom, resourceType);
265 if (!resourceConsumerFrom)
268 SCR_ResourceGenerator resourceGeneratorTo = GetFirstValidGenerator(resourceComponentTo, resourceType);
269 if (!resourceGeneratorTo)
272 float availableResources = resourceConsumerFrom.GetAggregatedResourceValue();
273 float actualTransferAmount = transferAmount;
274 if (actualTransferAmount > availableResources)
276 if (!allowPartialTransfer)
279 actualTransferAmount = transferAmount - availableResources;
283 if (availableStorage < actualTransferAmount)
285 if (!allowPartialTransfer)
288 actualTransferAmount = availableStorage;
291 resourceConsumerFrom.RequestConsumtion(actualTransferAmount);