From 7cb4290601010459b09376396c7833ec391c25bf Mon Sep 17 00:00:00 2001 From: jacopograndi Date: Fri, 24 Dec 2021 21:11:39 +0100 Subject: working on it --- scripts/gui_turret.gd | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 scripts/gui_turret.gd (limited to 'scripts/gui_turret.gd') diff --git a/scripts/gui_turret.gd b/scripts/gui_turret.gd new file mode 100644 index 0000000..9faeb7a --- /dev/null +++ b/scripts/gui_turret.gd @@ -0,0 +1,60 @@ +extends TextureButton + +var _turret : Dictionary + +var _color_rect : ColorRect +var _name_label : Label +var _cash_label : Label + +var _viewport : Viewport +var _spinner : Node +var _mesh : Node + +var _resources : Node + +var picked : bool +var enabled : bool = false + +var _rotate_timer : float + +func init (turret : Dictionary): + _turret = turret + _color_rect = $ColorRect + _name_label = $hbox/name_label + _cash_label = $cash_label + _viewport = $viewport + _spinner = $viewport/spinner + + var root = get_tree().root.get_child(0) + _resources = root.get_node("player").get_node("resources") + + _name_label.text = turret.name + _cash_label.text = _resources.dict_to_str(turret.cost) + + var load_turrets = root.get_node("saveload").get_node("load_turrets") + if !load_turrets.loaded: yield(load_turrets, "done_loading") + var model = load_turrets.models[turret.model_name] + _mesh = model.instance() + _spinner.add_child(_mesh) + + texture_normal = _viewport.get_texture() + +func _process(delta): + if !has_node("viewport"): return + if _spinner == null: _spinner = $viewport/spinner + if _spinner != null: + if _resources == null: + var root = get_tree().root.get_child(0) + _resources = root.get_node("player").get_node("resources") + + var afforded = _resources.greater_than(_turret.cost) + if afforded: _color_rect.color = Color(0,0,0,0) + else: _color_rect.color = Color(0,0,0,0.5) + + if afforded and (is_hovered() or picked): + _spinner.transform.basis = _spinner.transform.rotated(Vector3.UP, delta).basis + _rotate_timer = 0 + else: + _rotate_timer = min(1, _rotate_timer + delta * 5) + var idle_rot = Transform.rotated(Vector3.UP, PI-PI/4).basis + _spinner.transform.basis = _spinner.transform.basis.slerp(idle_rot, _rotate_timer) -- cgit v1.2.3-54-g00ecf