Skip to content

Instantly share code, notes, and snippets.

@scriptsengineer
Last active November 24, 2022 16:44
Show Gist options
  • Save scriptsengineer/6893735e0a5b3025014abed00c09f7f7 to your computer and use it in GitHub Desktop.
Save scriptsengineer/6893735e0a5b3025014abed00c09f7f7 to your computer and use it in GitHub Desktop.
Stats.gd
class_name Stats
extends CanvasLayer
@export_node_path(Container) var container_path := NodePath("Container")
@onready var container: Container = get_node(container_path)
var stats : Array
var labels : Array
func _ready() -> void:
add_callable("FPS: ", Callable(Engine, "get_frames_per_second"))
add_callable("ARCH: ", Callable(Engine, "get_architecture_name"))
func _process(_delta : float) -> void:
for i in stats.size():
var label = labels[i]
var stat = stats[i]
update_stat(label, stat)
func add_callable(pref, cal) -> void:
var stat = {
preffix = pref,
callable = cal
}
var label = Label.new()
container.add_child(label)
labels.append(label)
stats.append(stat)
func add_variable(pref, obj, var_name) -> void:
var stat = {
preffix = pref,
object = obj,
variable_name = var_name
}
var label = Label.new()
container.add_child(label)
labels.append(label)
stats.append(stat)
func update_stat(label : Label, stat):
if(stat.has("callable") and stat.callable.is_valid()):
var string = str(stat.callable.call())
label.text = stat.preffix + string
elif(stat.has("object") and stat.has("variable_name") and stat.object and stat.variable_name):
var string = str(stat.object.get(stat.variable_name))
label.text = stat.preffix + string
else:
label.text = "ERROR on stat: " + str(stat)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment