toggle buttons
This commit is contained in:
parent
c90216eb68
commit
e5555220a7
64
scenes/CampusController.cs
Normal file
64
scenes/CampusController.cs
Normal file
@ -0,0 +1,64 @@
|
||||
using Godot;
|
||||
using System;
|
||||
|
||||
public partial class CampusController : Node2D
|
||||
{
|
||||
private Control _taskContainer;
|
||||
private Control _logContainer;
|
||||
private Button _taskToggle;
|
||||
private Button _logToggle;
|
||||
|
||||
// Called when the node enters the scene tree for the first time.
|
||||
public override void _Ready()
|
||||
{
|
||||
_taskContainer = GetNode<Control>("Task");
|
||||
_logContainer = GetNode<Control>("Log");
|
||||
|
||||
// Path to buttons based on scene structure
|
||||
_taskToggle = GetNode<Button>("TopBar/HBox/CC1/TaskToggle");
|
||||
_logToggle = GetNode<Button>("TopBar/HBox/CC2/LogToggle");
|
||||
|
||||
// Sync initial state
|
||||
_taskToggle.ButtonPressed = _taskContainer.Visible;
|
||||
_logToggle.ButtonPressed = _logContainer.Visible;
|
||||
|
||||
_taskToggle.Toggled += OnTaskToggled;
|
||||
_logToggle.Toggled += OnLogToggled;
|
||||
}
|
||||
|
||||
// Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
}
|
||||
|
||||
private void OnTaskToggled(bool pressed)
|
||||
{
|
||||
AnimateVisibility(_taskContainer, pressed);
|
||||
}
|
||||
|
||||
private void OnLogToggled(bool pressed)
|
||||
{
|
||||
AnimateVisibility(_logContainer, pressed);
|
||||
}
|
||||
|
||||
private void AnimateVisibility(Control container, bool visible)
|
||||
{
|
||||
var tween = CreateTween();
|
||||
if (visible)
|
||||
{
|
||||
if (!container.Visible)
|
||||
{
|
||||
var col = container.Modulate;
|
||||
col.A = 0;
|
||||
container.Modulate = col;
|
||||
container.Visible = true;
|
||||
}
|
||||
tween.TweenProperty(container, "modulate:a", 1.0f, 0.2f);
|
||||
}
|
||||
else
|
||||
{
|
||||
tween.TweenProperty(container, "modulate:a", 0.0f, 0.2f);
|
||||
tween.TweenCallback(Callable.From(() => container.Visible = false));
|
||||
}
|
||||
}
|
||||
}
|
||||
1
scenes/CampusController.cs.uid
Normal file
1
scenes/CampusController.cs.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://ew4ig6hnrsau
|
||||
@ -1,5 +1,6 @@
|
||||
[gd_scene load_steps=7 format=3 uid="uid://b0cu4fa7vohmw"]
|
||||
[gd_scene load_steps=8 format=3 uid="uid://b0cu4fa7vohmw"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://ew4ig6hnrsau" path="res://scenes/CampusController.cs" id="1_controller"]
|
||||
[ext_resource type="PackedScene" uid="uid://cf6b1t8pujosf" path="res://scenes/ui-elements/log_panel.tscn" id="1_hi2p7"]
|
||||
[ext_resource type="Texture2D" uid="uid://brmthiu6rxhqc" path="res://res_src/campus.png" id="1_p4tmp"]
|
||||
[ext_resource type="PackedScene" uid="uid://db2qcx61nc0q4" path="res://scenes/ui-elements/top-bar.tscn" id="2_p4tmp"]
|
||||
@ -1993,12 +1994,13 @@ use_texture_padding = false
|
||||
sources/0 = SubResource("TileSetAtlasSource_4gjr3")
|
||||
|
||||
[node name="Node2D" type="Node2D"]
|
||||
script = ExtResource("1_controller")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
texture = ExtResource("1_p4tmp")
|
||||
centered = false
|
||||
|
||||
[node name="PanelContainer2" parent="." instance=ExtResource("1_hi2p7")]
|
||||
[node name="Log" parent="." instance=ExtResource("1_hi2p7")]
|
||||
offset_left = 655.0
|
||||
offset_top = 375.0
|
||||
offset_right = 955.0
|
||||
@ -2007,7 +2009,7 @@ offset_bottom = 535.0
|
||||
[node name="TopBar" parent="." instance=ExtResource("2_p4tmp")]
|
||||
offset_bottom = 55.0
|
||||
|
||||
[node name="PanelContainer" parent="." instance=ExtResource("3_4gjr3")]
|
||||
[node name="Task" parent="." instance=ExtResource("3_4gjr3")]
|
||||
offset_left = 4.0
|
||||
offset_top = 216.0
|
||||
offset_right = 305.0
|
||||
|
||||
Loading…
Reference in New Issue
Block a user