82 lines
1.4 KiB
C#
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;
|
|
}
|
|
} |