Valve and music

This commit is contained in:
Marco 2025-07-09 10:41:44 +02:00
commit ed86ffd184
13 changed files with 197 additions and 15 deletions

View file

@ -0,0 +1,100 @@
using Godot;
namespace Cirno.Scripts.Interactables._3D;
[Tool]
public partial class AnimatedSwitch3D : Switch3D
{
[Export] public DoorState State { get; set; } = DoorState.Closed;
[Signal]
public delegate void OpeningEventHandler();
[Signal]
public delegate void ClosingEventHandler();
[Signal]
public delegate void SetClosedEventHandler();
[Signal]
public delegate void SetOpenEventHandler();
private bool _isAnimating = false;
public override void _Ready()
{
if (Engine.IsEditorHint()) return;
base._Ready();
SyncAnimation();
}
private void SyncAnimation()
{
if (State is DoorState.Closed)
{
EmitSignalSetClosed();
}
else
{
EmitSignalSetOpen();
}
}
public void ClosedAnimationFinished()
{
State = DoorState.Closed;
_isAnimating = false;
}
public void OpenAnimationFinished()
{
State = DoorState.Open;
_isAnimating = false;
}
private void ChangeState(DoorState newState)
{
if (_isAnimating) return;
if (State == newState) return;
switch (newState)
{
case DoorState.Open:
EmitSignalOpening();
break;
case DoorState.Closed:
EmitSignalClosing();
break;
}
_isAnimating = true;
}
public override bool Activate(ActivationType activationType = ActivationType.Toggle)
{
if (_isAnimating) return false;
switch (State)
{
case DoorState.Closed:
if (base.Activate(ActivationType.Open))
{
ChangeState(DoorState.Open);
return true;
}
break;
case DoorState.Open:
if (base.Activate(ActivationType.Close))
{
ChangeState(DoorState.Closed);
return true;
}
break;
}
return false;
}
}

View file

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

View file

@ -20,7 +20,7 @@ public partial class MainMenu : CanvasLayer
public Button DefaultSelectedButton { get; private set; }
[Export]
public AudioStreamPlayer2D MusicPlayer { get; private set; }
public AudioStreamPlayer MusicPlayer { get; private set; }
[ExportCategory("Languages")]
[Export] public Button ItalianButton { get; private set; }

View file

@ -8,7 +8,7 @@ using GTweens.Tweens;
using GTweensGodot.Extensions;
using Cirno.Scripts.Resources;
public partial class AudioNameVisualizer : AudioStreamPlayer2D
public partial class AudioNameVisualizer : AudioStreamPlayer
{
[Export]
public MusicResource MusicData { get; set; }