V-Panel/panels/cpu/cpu_module.gd

56 lines
1.4 KiB
GDScript3
Raw Normal View History

extends ModuleBase
class_name CpuModule
@onready var title_label: Label = %Title
@onready var label: Label = %Label
@onready var vial_fill: ColorRect = %VialFill
var _collector: CpuCollector
var _displayed_fill: float = 0.0
var _fill_tween: Tween
func initialize() -> void:
module_title = "CPU"
_collector = CpuCollector.new()
_setup_shader()
_style()
func refresh(data: Dictionary) -> void:
var usage: float = _collector.collect()
if usage < 0.0:
return
var pct: int = roundi(usage)
label.text = "%d%%" % pct
# Smoothly tween the vial fill
var target: float = usage / 100.0
if _fill_tween and _fill_tween.is_valid():
_fill_tween.kill()
_fill_tween = create_tween()
_fill_tween.tween_method(_set_fill, _displayed_fill, target, 0.4).set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_CUBIC)
func _set_fill(value: float) -> void:
_displayed_fill = value
var mat := vial_fill.material as ShaderMaterial
if mat:
mat.set_shader_parameter("fill", value)
func _setup_shader() -> void:
var mat := ShaderMaterial.new()
mat.shader = preload("res://shaders/vial_fill.gdshader")
mat.set_shader_parameter("liquid_color", Color(0.2, 0.5, 0.8, 1.0))
mat.set_shader_parameter("fill", 0.0)
vial_fill.material = mat
func _style() -> void:
title_label.add_theme_color_override("font_color", Color(0.7, 0.7, 0.8, 1.0))
label.add_theme_color_override("font_color", Color(0.9, 0.9, 1.0, 1.0))
label.add_theme_font_size_override("font_size", 48)