Skip to content

Commit

Permalink
check superclass for destroy field
Browse files Browse the repository at this point in the history
  • Loading branch information
lemz1 committed Oct 21, 2024
1 parent de3c205 commit c25e09d
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 36 deletions.
31 changes: 0 additions & 31 deletions source/funkin/ui/freeplay/charselect/PlayableCharacter.hx
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,6 @@ import funkin.play.scoring.Scoring.ScoringRank;
@:build(funkin.util.macro.EntryMacro.build(funkin.data.freeplay.player.PlayerRegistry))
class PlayableCharacter implements IRegistryEntry<PlayerData>
{
/**
* The ID of the playable character.
*/
public final id:String;

/**
* Playable character data as parsed from the JSON file.
*/
public final _data:Null<PlayerData>;

/**
* @param id The ID of the JSON file to parse.
*/
Expand Down Expand Up @@ -157,25 +147,4 @@ class PlayableCharacter implements IRegistryEntry<PlayerData>
{
return _data?.unlocked ?? true;
}

/**
* Called when the character is destroyed.
* TODO: Document when this gets called
*/
public function destroy():Void {}

public function toString():String
{
return 'PlayableCharacter($id)';
}

/**
* Retrieve and parse the JSON data for a playable character by ID.
* @param id The ID of the character
* @return The parsed player data, or null if not found or invalid
*/
static function _fetchData(id:String):Null<PlayerData>
{
return PlayerRegistry.instance.parseEntryDataWithMigration(id, PlayerRegistry.instance.fetchEntryVersion(id));
}
}
8 changes: 4 additions & 4 deletions source/funkin/util/macro/EntryMacro.hx
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,13 @@ class EntryMacro

buildToStringField(cls, fields);

buildDestroyField(fields);
buildDestroyField(cls, fields);

return fields;
}

#if macro
static function shouldBuildField(name:String, fields:Array<Field>):Bool
static function shouldBuildField(name:String, fields:Array<Dynamic>):Bool // fields can be Array<Field> or Array<ClassField>
{
for (field in fields)
{
Expand Down Expand Up @@ -211,9 +211,9 @@ class EntryMacro
});
}

static function buildDestroyField(fields:Array<Field>):Void
static function buildDestroyField(cls:ClassType, fields:Array<Field>):Void
{
if (!shouldBuildField('destroy', fields))
if (!shouldBuildField('destroy', fields) || !shouldBuildField('destroy', cls.superClass?.t.get().fields.get() ?? []))
{
return;
}
Expand Down
2 changes: 1 addition & 1 deletion source/funkin/util/macro/RegistryMacro.hx
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class RegistryMacro
}

#if macro
static function shouldBuildField(name:String, fields:Array<Field>):Bool
static function shouldBuildField(name:String, fields:Array<Dynamic>):Bool // fields can be Array<Field> or Array<ClassField>
{
for (field in fields)
{
Expand Down

0 comments on commit c25e09d

Please sign in to comment.