62 lines
1.2 KiB
C#
62 lines
1.2 KiB
C#
using Godot;
|
|
using System;
|
|
|
|
public partial class ClickEffect : Effect
|
|
{
|
|
public bool _available;
|
|
public int _calls = 0, _maxCalls = 0;
|
|
public float _timerSeconds;
|
|
public Timer _timer;
|
|
|
|
public override void _Ready()
|
|
{
|
|
base._Ready();
|
|
_timer = GetNode<Timer>("Timer");
|
|
}
|
|
|
|
public override void _Process(double delta)
|
|
{
|
|
base._Process(delta);
|
|
if (_contact._button._phone._running)
|
|
{
|
|
_contact._button._progressBar.Value = Math.Round(_timer.TimeLeft / _timerSeconds * 100, 0);
|
|
}
|
|
}
|
|
|
|
public override void Fire()
|
|
{
|
|
base.Fire();
|
|
if (_available && (_calls <= _maxCalls || _maxCalls == 0))
|
|
{
|
|
_calls++;
|
|
_timer.Start(_timerSeconds);
|
|
}
|
|
}
|
|
|
|
public override void End()
|
|
{
|
|
_contact._button._progressBar.Value = 0;
|
|
}
|
|
|
|
public virtual void SetTimer(int SECONDS)
|
|
{
|
|
_timerSeconds = SECONDS;
|
|
}
|
|
|
|
public override void Start()
|
|
{
|
|
base.Start();
|
|
_available = false;
|
|
_calls = 0;
|
|
_timer.Start(_timerSeconds);
|
|
}
|
|
|
|
private void OnTimerTimeout()
|
|
{
|
|
if (_calls <= _maxCalls || _maxCalls == 0)
|
|
{
|
|
_available = true;
|
|
}
|
|
}
|
|
}
|