Oui le but du ressource holder c'est justement ça : si on change le path de la texture, on n'a qu'à le changer à un endroit dans le code et pas a 10 endroits différents si plusieurs entités utilisent la même texture. (Ce qui peut bien sûr arriver)
Et l'utilisateur n'est pas obligé de retenir l'id de la texture, l'id de la texture me sert juste à lier une texture à une entité dans le fichier de sauvegarde du monde. (Donc si il sait ou la texture se trouve c'est suffisant, il n'uara qu'à faire un getResource(path) pour la récupérer, il n'a pas besoin de retenir l'id)
Si le path de la texture change, il n'a qu'à le changer lors de l'appel à la fonction load du resource holder..., donc, il n'y a pas vraiment besoin que l'utilisateur puisse créer ses propres id pour faire ça.
Maintenant si tu veux faire un alias vers l'id de la texture pour la récupérer d'une autre manière que de part son id ou son path, cela revient à recréer son propre resource holder en effet...
Mais personnellement je n'en vois pas trop l'intérêt, le chemin relatif vers la texture est suffisant.
A la limite je pourrai toujours rajouté plus tard la possibilité au développeur de créer un alias vers le path de la texture, mais, pour le moment, ce n'est pas ma priorité.
PS : Et si il veut récupérer l'id de la texture il n'a qu'à appeler la fonction getId(path) du resource holder et garder l'id de la texture en mémoire un peu comme le fait opengl avec ses fonctions pour créer des textures, des shaders, ou n'importe quoi.
PS 2 : et de toute façon dans mon framework, je n'utilise le path qu'à un seul endroit, c'est au chargement de la texture ensuite je garde l'id de la texture en mémoire, (ou le path peut importe) et puis, je passe un pointeurs sur la texture à mon entité.
string pathToTexture = "PathToTexture";
holder.load(pathToTexture);
int id = holder.getId(pathToTexture);
Entity entite = new Entity(holder.getResource(id), position, size, origin, type);
Ou bien :
string pathToTexture = "PathToTexture";
holder.load(pathToTexture);
Entity entite = new Entity(holder.getResource(pathToTexture), position, size, origin, type);
Donc voilà si je change le path il n'y a qu'à changer la 1ère ligne de code.
Maintenant bien sûr il ne faut pas faire ça :
holder.load("PathToTexture");
Entity entite = new Entity(holder.getResource("PathToTexture"), position, size, origin, type);
Sinon là il faudra changer le code source à 2 endroits.
Mais je préfère laisser le soin au développeur de gérer lui même ses variables pour le stockage des id ou path vers les textures dans le programme ou bien dans un fichier.
Donc pour répondre à ta question, si il veut utiliser autre chose comme identifiant (une enum par exemple) il faudra en effet qu'il recrée son propre ressource holder.
Mais je pense pas que ça soit nécessaire de le faire, en tout cas moi dans le projet Sorrok je n'ai pas eu besoin de le faire.
Sinon, comment tu ferais si le développeur a envie de sauver les paths de textures ou les id de texture dans un fichiers
(Chose que je fais avec le projet Sorrok)