rj-action-library/Runtime/GameObjects/Variables/Int/IntVariable.cs

82 lines
1.4 KiB
C#

using System.Diagnostics;
using System.Collections;
using System.Collections.Generic;
using System;
using Godot;
using System.Linq;
namespace Rokojori
{
[Tool]
[GlobalClass, Icon("res://addons/rokojori_action_library/Icons/GameObject.svg") ]
public partial class IntVariable:Node
{
[Export]
public IntVariableClass variableClass;
int _value = 0;
[Export]
public int value
{
get => _value;
set
{
if ( variableClass == null )
{
_value = value;
return;
}
var valueBefore = _value;
var valueNew = variableClass.SetValue( this, valueBefore, value );
if ( valueBefore == valueNew )
{
return;
}
onChange?.Trigger();
if ( valueNew > valueBefore )
{
onIncrease?.Trigger();
}
else if ( valueNew < valueBefore )
{
onDecrease?.Trigger();
}
if ( valueNew == variableClass.min )
{
onMin?.Trigger();
}
if ( valueNew == variableClass.max )
{
onMax?.Trigger();
}
}
}
[Export]
public Action onChange;
[Export]
public Action onIncrease;
[Export]
public Action onDecrease;
[Export]
public Action onMax;
[Export]
public Action onMin;
}
}