Tracker Setup :
My verse device :
# Built-In Verse Modules :
using {/Fortnite.com/Devices}
using {/Fortnite.com/Playspaces}
using {/Verse.org/Simulation}
using {/Verse.org/Random}
# Custom Modules :
using {Scripts.Modules.Debug}
# Custom Extensions :
using {Scripts.Extensions.ArrayExt}
using {Scripts.Extensions.FortPlayspaceExt}
using {Scripts.Extensions.TrackerExt}
# Custom Tags :
debug_game_manager_device_tag <public> := class(meta4_device_tag) {}
# Custom Log Channel :
debug_game_manager_device_log_channel <internal> := class(meta4_device_log_channel) {}
# A Verse-authored creative device that can be placed in a level
debug_game_manager_device := class(creative_device) {
# ==============================[Protected Properties]============================== #
@editable
Tracker : tracker_device = tracker_device {}
@editable
TitleFromVerse : string = "This is the title set from verse"
@editable
DescriptionFromVerse : string = "This is the tracker description set from verse"
@editable
TargetValueFromVerse : int = 100
@editable
bUpdateTrackerOnPlayerAdded : logic = false
@editable
AssignAllTrackerButton : button_device = button_device {}
@editable
AssignToAgentTrackerButton : button_device = button_device {}
@editable
RemoveAllTrackerButton : button_device = button_device {}
@editable
RemoveToAgentTrackerButton : button_device = button_device {}
@editable
IncrementingButton : button_device = button_device {}
@editable
DecrementingButton : button_device = button_device {}
@editable
IncreaseTargetValueButton : button_device = button_device {}
@editable
DecreaseTargetValueButton : button_device = button_device {}
@editable
RandomTrackerTextButton : button_device = button_device {}
@editable
ForceInitialzeTrackerButton : button_device = button_device {}
# ==============================[Public Methods]============================== #
OnBegin <override> () <suspends> : void = {
Playspace : fort_playspace = GetPlayspace()
# Devices Initializations
InitializeTracker()
# Subscriptions
AssignAllTrackerButton.InteractedWithEvent.Subscribe(OnAssignAllTrackerButtonInteracted)
AssignToAgentTrackerButton.InteractedWithEvent.Subscribe(OnAssignToAgentTrackerButtonInteracted)
RemoveAllTrackerButton.InteractedWithEvent.Subscribe(OnRemoveAllTrackerButtonInteracted)
RemoveToAgentTrackerButton.InteractedWithEvent.Subscribe(OnRemoveToAgentTrackerButtonInteracted)
IncrementingButton.InteractedWithEvent.Subscribe(OnIncrementingButtonInteracted)
DecrementingButton.InteractedWithEvent.Subscribe(OnDecrementingButtonInteracted)
IncreaseTargetValueButton.InteractedWithEvent.Subscribe(OnIncreaseTargetValueButtonInteracted)
DecreaseTargetValueButton.InteractedWithEvent.Subscribe(OnDecreaseTargetValueButtonInteracted)
RandomTrackerTextButton.InteractedWithEvent.Subscribe(OnRandomTrackerTextButtonInteracted)
ForceInitialzeTrackerButton.InteractedWithEvent.Subscribe(OnForceInitialzeTrackerButtonInteracted)
Playspace.PlayerAddedEvent().Subscribe(OnPlayerAdded)
Log("[OnBegin]")
}
# ==============================[Protected Methods]============================== #
InitializeTrackerRandomText <protected> () : void = {
RandomTitle := GenerateRandomString(GetRandomInt(5,10))
RandomDescription := GenerateRandomString(GetRandomInt(15,25))
Tracker.SetText(RandomTitle, RandomDescription)
}
InitializeTrackerRandomTarget <protected> () : void = {
Tracker.SetTarget(GetRandomInt(15,20))
}
InitializeTrackerRandom <protected> () : void = {
InitializeTrackerRandomText()
InitializeTrackerRandomTarget()
}
InitializeTracker <protected> () : void = {
Tracker.SetText(TitleFromVerse, DescriptionFromVerse)
Tracker.SetTarget(TargetValueFromVerse)
}
# ==============================[Private Methods]============================== #
OnRandomTrackerTextButtonInteracted <private> (Agent : agent) : void = {
Log("[InitializeTrackerText]", debug_game_manager_device_log_channel)
InitializeTrackerRandomText()
}
OnAssignAllTrackerButtonInteracted <private> (Agent : agent) : void = {
Log("[OnAssignAllTrackerButtonInteracted] : ", debug_game_manager_device_log_channel)
Tracker.AssignToAll()
}
OnAssignToAgentTrackerButtonInteracted <private> (Agent : agent) : void = {
Log("[OnAssignToAgentTrackerButtonInteracted] : ", debug_game_manager_device_log_channel)
Tracker.Assign(Agent)
}
OnRemoveAllTrackerButtonInteracted <private> (Agent : agent) : void = {
Log("[OnRemoveAllTrackerButtonInteracted] : ", debug_game_manager_device_log_channel)
Tracker.RemoveFromAll()
}
OnRemoveToAgentTrackerButtonInteracted <private> (Agent : agent) : void = {
Log("[OnRemoveToAgentTrackerButtonInteracted] : ", debug_game_manager_device_log_channel)
Tracker.Remove(Agent)
}
OnIncrementingButtonInteracted <private> (Agent : agent) : void = {
CurrentValue := Tracker.GetValue()
NewValue := Tracker.GetValue() + 1
Log("[OnIncrementingButtonInteracted] : CurrentTarget = {CurrentValue} | NewTarget = {NewValue}", debug_game_manager_device_log_channel)
Tracker.SetValue(NewValue)
}
OnDecrementingButtonInteracted <private> (Agent : agent) : void = {
CurrentValue := Tracker.GetValue()
NewValue := Tracker.GetValue() - 1
Log("[OnDecrementingButtonInteracted] : CurrentTarget = {CurrentValue} | NewTarget = {NewValue}", debug_game_manager_device_log_channel)
Tracker.SetValue(NewValue)
}
OnIncreaseTargetValueButtonInteracted <private> (Agent : agent) : void = {
CurrentTarget := Tracker.GetTarget()
NewTarget := Tracker.GetTarget() + 1
Log("[OnIncreaseTargetValueButtonInteracted] : CurrentTarget = {CurrentTarget} | NewTarget = {NewTarget}", debug_game_manager_device_log_channel)
Tracker.SetTarget(NewTarget)
}
OnDecreaseTargetValueButtonInteracted <private> (Agent : agent) : void = {
CurrentTarget := Tracker.GetTarget()
NewTarget := Tracker.GetTarget() - 1
Log("[OnDecreaseTargetValueButtonInteracted] : CurrentTarget = {CurrentTarget} | NewTarget = {NewTarget}", debug_game_manager_device_log_channel)
Tracker.SetTarget(NewTarget)
}
OnPlayerAdded <private> (Player : player) : void = {
bUpdateTrackerOnPlayerAddedStr := if (bUpdateTrackerOnPlayerAdded?) then "True" else "False"
Log("[OnPlayerAdded] : bUpdateTrackerOnPlayerAdded = {bUpdateTrackerOnPlayerAddedStr}", debug_game_manager_device_log_channel)
if (bUpdateTrackerOnPlayerAdded?) :
UpdateTrackerOnPlayerAdded()
}
OnForceInitialzeTrackerButtonInteracted <private> (Agent : agent) : void = {
Log("[OnForceInitialzeTrackerButtonInteracted]", debug_game_manager_device_log_channel)
InitializeTracker()
}
UpdateTrackerOnPlayerAdded <private> () : void = {
Log("[UpdateTrackerOnPlayerAdded]", debug_game_manager_device_log_channel)
InitializeTracker()
}
}
GenerateRandomString <public> (Length : int) : string = {
Chars := "abcdefghijklmnopqrstuvwxyz"
var Result : string = ""
for (Index := 0 .. Length) :
if (RandomChar := Chars.GetRandom[]) :
set Result += array {RandomChar}
return Result
}
Player ‘A’ in the game when launched :
Joining Player ‘B’ POV :