Files
Simplaudio/Scripts/UIManager.cs
T
Bucket Of Chicken e0c7c050f2 UI functionality
2025-08-31 20:31:49 +02:00

68 lines
1.8 KiB
C#

using Godot;
using Instances;
using System;
using System.Collections.Generic;
using System.Linq;
public partial class UIManager : Node{
[Export] Button PlayPauseButton;
[Export] Texture2D PauseImage;
[Export] Texture2D PlayImage;
[Export] HSlider ProgressIndicator;
[Export] Button SkipButton;
[Export] Button GoBackButton;
[Export] Button LoopButton;
[Export] Button RandomizeButton;
bool SliderDragging;
static UIManager instance;
public override void _Ready()
{
base._Ready();
instance = this;
ProgressIndicator.DragStarted += sliderDrag;
ProgressIndicator.DragEnded += sliderDragEnded;
PlayPauseButton.Toggled += PausePlay;
Context.ISongPlayer.SongStateUpdated += UpdatePausePlay;
}
void PausePlay(bool Newstate){
if (Newstate){
Context.ISongPlayer.PauseSong();
PlayPauseButton.Icon = PlayImage;
}
else{
Context.ISongPlayer.UnpauseSong();
PlayPauseButton.Icon = PauseImage;
}
}
void UpdatePausePlay(bool paused){
if (paused){
PlayPauseButton.Icon = PlayImage;
PlayPauseButton.ButtonPressed = true;
}
else{
PlayPauseButton.Icon = PauseImage;
PlayPauseButton.ButtonPressed = false;
}
}
public override void _Process(double delta)
{
base._Process(delta);
if (!SliderDragging){
ProgressIndicator.Value = Context.ISongPlayer.GetPosition();
}
}
void sliderDrag(){
SliderDragging = true;
}
void sliderDragEnded(bool changed){
SliderDragging = false;
Context.ISongPlayer.SetPosition((float)ProgressIndicator.Value);
}
}