Type-safe wrappers to distinguish durations (an amount of time) from instants (a point in time), and the valid ways to reason about those types.
Example usage:
constant myGoldMine = createGoldMine()
var nextIncomeTime = 30..secondsFromNow()
var incomeMessage = CreateTextTag()..setPos(myGoldMine.getPos3Real())
init
doPeriodically(ANIMATION_PERIOD) ->
if nextIncomeTime.durationUntil().lessThan(0..seconds())
myGoldMine.getOwner().addGold(100)
nextIncomeTime += 30..seconds()
incomeMessage..setText("Next income in " + nextIncomeTime.durationUntil().displayVerbose(), 10.)
Details:
This library helps you write safe code by making it possible to add instant + duration, subtract instant - instant, but fails to compile the addition of instant + instant.
public tuple instant(real timestamp_seconds)
An instant in time. Use instantNow() to produce an instant from the current game time.
public tuple duration(real seconds)
A duration of time. Use constructors like 6..seconds() or 15..minutes()` for convenience.
public function instantNow() returns instant
Instant constructor. Uses the elapsed game time.
public function instantToIndex(instant inst) returns int
public function instantFromIndex(int index) returns instant
public function durationToIndex(duration dur) returns int
public function durationFromIndex(int index) returns duration
public function real.seconds() returns duration
Duration constructor.
public function real.minutes() returns duration
Duration constructor.
public function real.hours() returns duration
Duration constructor.
public function int.seconds() returns duration
Duration constructor.
public function int.minutes() returns duration
Duration constructor.
public function int.hours() returns duration
Duration constructor.
public function real.secondsAgo() returns instant
Instant constructor.
public function real.minutesAgo() returns instant
Instant constructor.
public function real.hoursAgo() returns instant
Instant constructor.
public function int.secondsAgo() returns instant
Instant constructor.
public function int.minutesAgo() returns instant
Instant constructor.
public function int.hoursAgo() returns instant
Instant constructor.
public function duration.ago() returns instant
Instant constructor.
public function duration.fromNow() returns instant
Instant constructor.
public function real.secondsFromNow() returns instant
Instant constructor.
public function real.minutesFromNow() returns instant
Instant constructor.
public function real.hoursFromNow() returns instant
Instant constructor.
public function int.secondsFromNow() returns instant
Instant constructor.
public function int.minutesFromNow() returns instant
Instant constructor.
public function int.hoursFromNow() returns instant
Instant constructor.
public function instant.op_plus(duration dur) returns instant
Compute an instant plus a duration. (Now plus 5 minutes = an instant 5 minutes in the future).
public function instant.op_minus(duration dur) returns instant
Compute an instant minus a duration. (Now minus 5 minutes = an instant 5 minutes in the past).
public function instant.op_minus(instant other) returns duration
Compute an instant minus an instant. (Now minus 5 minutes ago = 5 minutes).
public function duration.op_plus(duration other) returns duration
Compute a duration plus a duration. (5 minutes plus 5 minutes = 10 minutes).
public function duration.op_minus(duration other) returns duration
Compute a duration minus a duration. (5 minutes minus 2 minutes = 3 minutes).
public function duration.op_plus(instant when) returns instant
Compute a duration plus an instant. (5 minutes plus now = 5 minutes in the future).
public function instant.durationSince() returns duration
Provides duration since an instant. Equivalent to Now - instant.
public function instant.durationUntil() returns duration
Provides duration until an instant. Convenience for the negative of durationSince.
public function instant.isOlderThan(instant other) returns bool
Instant > instant ?
public function instant.isNewerThan(instant other) returns bool
Instant < instant ?
public function duration.greaterThan(duration other) returns bool
Duration > duration ?
public function duration.lessThan(duration other) returns bool
Duration < duration ?
public function instant.isInTheFuture() returns bool
Convenience for checking if an instant comes after instantNow.
public function instant.isInThePast() returns bool
Convenience for checking if an instant comes before instantNow.
public function duration.displayVerbose() returns string
Tranform a duration to a verbose string. Example:
61..seconds().displayVerbose()
"1 minutes, and 1 seconds"
public function duration.display(string prefix) returns string
Tranform a duration to a short string. Example:
61..minutes().display(“T-“)
"T-1H1M0S"
public function duration.display() returns string
ISO-8601 compatible duration representation. Example:
61..minutes().display()
"PT1H1M0S"
public function instant.displayVerbose(string suffix) returns string
Transform an instant to a verbose string. Example: instantNow().displayVerbose(“ passed before the zombies killed you”)
"5 minutes, and 0 seconds passed before the zombies killed you"
public function instant.displayVerbose() returns string
Transform an instant to a verbose string. Example: “Time elapsed: “ + instantNow().displayVerbose()
"Time elapsed: 5 minutes, and 0 seconds game time"