TagManager class
If you need to tag any entity, use this. A typical usage would be to tag entities such as "PLAYER", "BOSS" or something that is very unique. An Entity can only belong to one tag (0,1) at a time.
class TagManager extends Manager {
 final Map<String, Entity> _entitiesByTag;
 final Map<Entity, String> _tagsByEntity;
 TagManager() : _entitiesByTag = new Map<String, Entity>(),
                _tagsByEntity = new Map<Entity, String>();
 void register(Entity e, String tag) {
   _entitiesByTag[tag] = e;
   _tagsByEntity[e] = tag;
 }
 void unregister(String tag) {
   _tagsByEntity.remove(_entitiesByTag.remove(tag));
 }
 bool isRegistered(String tag) => _entitiesByTag.containsKey(tag);
 Entity getEntity(String tag) => _entitiesByTag[tag];
 Iterable<String> getRegisteredTags() => _tagsByEntity.values;
 void deleted(Entity e) {
   String removedTag = _tagsByEntity.remove(e);
   if(removedTag != null) {
     _entitiesByTag.remove(removedTag);
   }
 }
 void initialize() {}
}
Extends
Manager > TagManager
Constructors
new TagManager() #
TagManager() : _entitiesByTag = new Map<String, Entity>(),
              _tagsByEntity = new Map<Entity, String>();
Methods
void deleted(Entity e) #
void deleted(Entity e) {
 String removedTag = _tagsByEntity.remove(e);
 if(removedTag != null) {
   _entitiesByTag.remove(removedTag);
 }
}
Iterable<String> getRegisteredTags() #
Iterable<String> getRegisteredTags() => _tagsByEntity.values;
void initialize() #
void initialize() {}