fastjengine / FastJ

An open-source, Java-based 2D game engine.

Home Page:https://fastj.tech

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[Feature Request]: Expand tags to be used everywhere, similar to the Resource Manager

lucasstarsz opened this issue · comments

Origins of the Feature

Similar to #113, FastJ would greatly benefit from a centralized tagging system.

The New Feature Idea(s)

A centralized tagging system would allow easy support for tags in different systems as needed, such as for the following:

  • Animations
  • Drawables
  • Audio

and many others.

With this enhancement, we could further control actions depending on what tags some object has.

  • With animations, it makes sense to group sequences by tags. A sprite sheet could be separated into "Idle", "Attack", "Die", and so on. These could even be associated with indexes for the animation sets in an array of images (the sprite sheet's representation in code).
    This has been covered in #108 and resolved in #207.
  • As seen already, Drawables can be given tags to differentiate what type of Drawable they are -- a "player", "enemy", and so on. This is already used in collisions, and can be further expanded upon.
  • Audio could be grouped and have its settings automatically changed through assignment of tags. For example, audio with the tag "sound effect" could be muted when the player mutes sound effects in a game's settings.

These are the tasks to be completed:

  • Add base tag manager classes to allow creation of tag managers for specific types
  • Add tag manager classes for the following types:
    • Sprite2D Animation (A custom SpriteAnimation class may be developed in tandem for this)
    • Drawable
    • Audio

Progress of this issue will be tracked alongside #108.

Alternatives

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct