66 lines
1.1 KiB
C#
66 lines
1.1 KiB
C#
![]() |
|
||
|
using Godot;
|
||
|
|
||
|
|
||
|
namespace Rokojori
|
||
|
{
|
||
|
[Tool]
|
||
|
[GlobalClass ]
|
||
|
public partial class CountNumber : SequenceAction
|
||
|
{
|
||
|
[Export]
|
||
|
public UIText target;
|
||
|
|
||
|
[Export]
|
||
|
public int startValue = 0;
|
||
|
|
||
|
[Export]
|
||
|
public int endValue = 100;
|
||
|
|
||
|
int _actionID = -1;
|
||
|
int _animationID = -1;
|
||
|
|
||
|
[Export]
|
||
|
public Duration duration;
|
||
|
|
||
|
protected override void _OnTrigger()
|
||
|
{
|
||
|
if ( target == null )
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if ( _actionID != -1 )
|
||
|
{
|
||
|
CancelAction( _actionID );
|
||
|
}
|
||
|
|
||
|
|
||
|
var _id = DispatchStart();
|
||
|
|
||
|
_actionID = _id;
|
||
|
|
||
|
_animationID = TimeLineManager.ScheduleSpanWith( duration,
|
||
|
( s, t ) =>
|
||
|
{
|
||
|
if ( _animationID != s.id )
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
var number = startValue + s.phase * ( endValue - startValue );
|
||
|
var intNumber = Mathf.RoundToInt( number );
|
||
|
|
||
|
target.Set( intNumber + "" );
|
||
|
|
||
|
if ( TimeLineSpanUpdateType.End == t )
|
||
|
{
|
||
|
target.Set( endValue + "" );
|
||
|
DispatchEnd( _id );
|
||
|
}
|
||
|
}
|
||
|
).id;
|
||
|
|
||
|
}
|
||
|
}
|
||
|
}
|