Funkin/source/funkin/play/notes/NoteDirection.hx
2023-07-13 01:13:26 -04:00

81 lines
1.4 KiB
Haxe

package funkin.play.notes;
import flixel.util.FlxColor;
/**
* The direction of a note.
* This has implicit casting set up, so you can use this as an integer.
*/
enum abstract NoteDirection(Int) from Int to Int
{
var LEFT = 0;
var DOWN = 1;
var UP = 2;
var RIGHT = 3;
public var name(get, never):String;
public var nameUpper(get, never):String;
public var color(get, never):FlxColor;
public var colorName(get, never):String;
@:from
public static function fromInt(value:Int):NoteDirection
{
return switch (value % 4)
{
case 0: LEFT;
case 1: DOWN;
case 2: UP;
case 3: RIGHT;
default: LEFT;
}
}
function get_name():String
{
return switch (abstract)
{
case LEFT:
'left';
case DOWN:
'down';
case UP:
'up';
case RIGHT:
'right';
default:
'unknown';
}
}
function get_nameUpper():String
{
return abstract.name.toUpperCase();
}
function get_color():FlxColor
{
return Constants.COLOR_NOTES[this];
}
function get_colorName():String
{
return switch (abstract)
{
case LEFT:
'purple';
case DOWN:
'blue';
case UP:
'green';
case RIGHT:
'red';
default:
'unknown';
}
}
public function toString():String
{
return abstract.name;
}
}