In-Game Clock Display
Module — 2 files
These files compile together (same module folder).
countup_timer.verse
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /UnrealEngine.com/Temporary/UI }
using { /UnrealEngine.com/Temporary/SpatialMath }
using { /Verse.org/Simulation }
using { /Fortnite.com/UI }
using { /Verse.org/Colors/NamedColors }
StringToMessage<localizes>(value:int, value2:int, value3:int) : message = "{value}:{value2}:{value3}"
StringToMessageZero<localizes>(value:int, value2:int, value3:int) : message = "0{value}:0{value2}:0{value3}"
StringToMessageZeroS<localizes>(value:int, value2:int, value3:int) : message = "0{value}:{value2}:0{value3}"
StringToMessageZeroM<localizes>(value:int, value2:int, value3:int) : message = "0{value}:0{value2}:{value3}"
MakeCountupTimer<constructor><public>(InPlayer : agent) := countup_timer:
ElapsedTime := 0.0
MaybePlayerUI := option{GetPlayerUI[player[InPlayer]]}
countup_timer := class:
block:
set Canvas = canvas:
Slots := array:
canvas_slot:
Anchors := anchors:
Minimum := vector2{X := 0.5, Y := 0.05}
Maximum := vector2{X := 0.0, Y := 0.0}
Alignment := vector2{X := 0.0, Y := 0.0 }
Offsets := margin{Top := 0.0, Left := 0.0, Bottom := 0.0, Right := 0.0}
SizeToContent := true
Widget := ElapsedTimeTextBlock
CountdownEndedEvent<public> : event(float) = event(float){}
StartCountdown<public>() : void =
if (PlayerUI := MaybePlayerUI?):
PlayerUI.AddWidget(Canvas)
UpdateUI()
spawn:
RunCountdown()
MaybePlayerUI<internal> : ?player_ui = false
var ElapsedTime<internal> : float = 0.0
ElapsedTimeTextBlock<private> : text_block = text_block{}
ElapsedTimeText<localizes><private>(CurrentElapsedTime : int) : message = "{CurrentElapsedTime}"
var Canvas<private> : canvas = canvas{}
TimerTickPeriod<private> : float = 1.0
RunCountdown<private>()<suspends> : void =
ElapsedTimeTextBlock.SetTextColor(White)
loop:
Sleep(TimerTickPeriod)
set ElapsedTime += TimerTickPeriod
UpdateUI()
UpdateUI<private>() : void =
if (IntTime := Int[ElapsedTime]):
var seconds : int = IntTime
var minutes : int = 0
loop:
if (seconds < 60):
break
set seconds -= 60
set minutes += 1
var hours : int = 0
loop:
if (minutes < 60):
break
set minutes -= 60
set hours += 1
if (seconds > 9 and minutes > 9):
ElapsedTimeTextBlock.SetText(StringToMessage(hours,minutes,seconds))
else if (seconds > 9 and minutes < 9):
ElapsedTimeTextBlock.SetText(StringToMessageZeroM(hours,minutes,seconds))
else if (seconds < 9 and minutes > 9):
ElapsedTimeTextBlock.SetText(StringToMessageZeroS(hours,minutes,seconds))
else:
ElapsedTimeTextBlock.SetText(StringToMessageZero(hours,minutes,seconds))
Sign in to download module
Copy-paste each file above is always free.