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 { DefaultValue, persistent } from "game/persistence";
|
||||||
import player from "game/player";
|
import player from "game/player";
|
||||||
import type { DecimalSource } from "util/bignum";
|
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 { WithRequired } from "util/common";
|
||||||
import type {
|
import type {
|
||||||
Computable,
|
Computable,
|
||||||
|
@ -416,3 +416,28 @@ export function createCollapsibleMilestones(milestones: Record<string, GenericMi
|
||||||
display
|
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