toggle buttons

This commit is contained in:
wjsjwr 2025-12-15 22:44:41 +08:00
parent c90216eb68
commit e5555220a7
3 changed files with 70 additions and 3 deletions

View 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));
}
}
}

View File

@ -0,0 +1 @@
uid://ew4ig6hnrsau

View File

@ -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="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="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"] [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") sources/0 = SubResource("TileSetAtlasSource_4gjr3")
[node name="Node2D" type="Node2D"] [node name="Node2D" type="Node2D"]
script = ExtResource("1_controller")
[node name="Sprite2D" type="Sprite2D" parent="."] [node name="Sprite2D" type="Sprite2D" parent="."]
texture = ExtResource("1_p4tmp") texture = ExtResource("1_p4tmp")
centered = false centered = false
[node name="PanelContainer2" parent="." instance=ExtResource("1_hi2p7")] [node name="Log" parent="." instance=ExtResource("1_hi2p7")]
offset_left = 655.0 offset_left = 655.0
offset_top = 375.0 offset_top = 375.0
offset_right = 955.0 offset_right = 955.0
@ -2007,7 +2009,7 @@ offset_bottom = 535.0
[node name="TopBar" parent="." instance=ExtResource("2_p4tmp")] [node name="TopBar" parent="." instance=ExtResource("2_p4tmp")]
offset_bottom = 55.0 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_left = 4.0
offset_top = 216.0 offset_top = 216.0
offset_right = 305.0 offset_right = 305.0