Add utility function for ETAs
This commit is contained in:
parent
7f4d57d3e4
commit
8bf68831b7
1 changed files with 26 additions and 1 deletions
|
@ -13,7 +13,7 @@ import type { Persistent } from "game/persistence";
|
|||
import { DefaultValue, persistent } from "game/persistence";
|
||||
import player from "game/player";
|
||||
import type { DecimalSource } from "util/bignum";
|
||||
import Decimal, { format } from "util/bignum";
|
||||
import Decimal, { format, formatSmall, formatTime } from "util/bignum";
|
||||
import type { WithRequired } from "util/common";
|
||||
import type {
|
||||
Computable,
|
||||
|
@ -416,3 +416,28 @@ export function createCollapsibleMilestones(milestones: Record<string, GenericMi
|
|||
display
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Utility function for getting an ETA for when a target will be reached by a resource with a known (and assumed consistent) gain.
|
||||
* @param resource The resource that will be increasing over time.
|
||||
* @param rate The rate at which the resource is increasing.
|
||||
* @param target The target amount of the resource to estimate the duration until.
|
||||
*/
|
||||
export function estimateTime(
|
||||
resource: Resource,
|
||||
rate: Computable<DecimalSource>,
|
||||
target: Computable<DecimalSource>
|
||||
) {
|
||||
const processedRate = convertComputable(rate);
|
||||
const processedTarget = convertComputable(target);
|
||||
return computed(() => {
|
||||
const currRate = unref(processedRate);
|
||||
const currTarget = unref(processedTarget);
|
||||
if (Decimal.gte(resource.value, currTarget)) {
|
||||
return "Now";
|
||||
} else if (Decimal.lt(currRate, 0)) {
|
||||
return "Never";
|
||||
}
|
||||
return formatTime(Decimal.sub(currTarget, resource.value).div(currRate));
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue