Add Custom Params For NoteKind

still need to implement the chart editor stuff
This commit is contained in:
lemz 2024-06-21 23:54:29 +02:00 committed by EliteMasterEric
parent fbcc73dcee
commit acd8912d16

View file

@ -23,11 +23,17 @@ class NoteKind implements INoteScriptedClass
*/
public var noteStyleId:Null<String>;
public function new(noteKind:String, description:String = "", ?noteStyleId:String)
/**
* Custom parameters for the chart editor
*/
public var params:Array<NoteKindParam>;
public function new(noteKind:String, description:String = "", ?noteStyleId:String, ?params:Array<NoteKindParam>)
{
this.noteKind = noteKind;
this.description = description;
this.noteStyleId = noteStyleId;
this.params = params ?? [];
}
public function toString():String
@ -35,6 +41,25 @@ class NoteKind implements INoteScriptedClass
return noteKind;
}
/**
* Retrieve the param with the given name
* If there exists no param with the given name then `null` is returned
* @param name Name of the param
* @return Null<NoteKindParam>
*/
public function getParam(name:String):Null<NoteKindParam>
{
for (param in params)
{
if (param.name == name)
{
return param;
}
}
return null;
}
/**
* Retrieve all notes of this kind
* @return Array<NoteSprite>
@ -61,3 +86,46 @@ class NoteKind implements INoteScriptedClass
public function onNoteMiss(event:NoteScriptEvent):Void {}
}
/**
* Abstract for setting the type of the `NoteKindParam`
* This was supposed to be an enum but polymod kept being annoying
*/
abstract NoteKindParamType(String)
{
public static var STRING:String = "String";
public static var INT:String = "Int";
public static var RANGED_INT:String = "RangedInt";
public static var FLOAT:String = "Float";
public static var RANGED_FLOAT:String = "RangedFloat";
}
typedef NoteKindParamData =
{
/**
* Only used for `RangedInt` and `RangedFloat`
*/
var min:Null<Float>;
/**
* Only used for `RangedInt` and `RangedFloat`
*/
var max:Null<Float>;
var value:Dynamic;
}
/**
* Typedef for creating custom parameters in the chart editor
*/
typedef NoteKindParam =
{
var name:String;
var description:String;
var type:NoteKindParamType;
var data:NoteKindParamData;
}