Я сейчас программирую игру, используя собственный движок. Однако есть проблема, и я не уверен, как решить ее наиболее эффективно с точки зрения кода: для большого количества объектов в игре мне нужно назначить разные текстуры на основе различных условий / состояний (для этого я использую перечисления). Пример:
Игрок должен изменить свою текстуру в зависимости от направления, на которое он смотрит, идет ли он или ждет, его состояния здоровья и т. Д. c.
Одно решение может быть вложенными выражениями-переключателями, такими как:
switch (getState ()) {
case IDLE:
switch (getDirection()) {
case UP:
setTexture(Textures.PLAYER_IDLE_UP);
break;
case RIGHT:
setTexture(Textures.PLAYER_IDLE_RIGHT);
break;
case DOWN:
setTexture(Textures.PLAYER_IDLE_DOWN));
break;
case LEFT:
setTexture(Textures.PLAYER_IDLE_LEFT);
break;
}
break;
case WALKING:
switch (getDirection()) {
case UP:
setTexture(Textures.PLAYER_WALKING_UP);
break;
case RIGHT:
setTexture(Textures.PLAYER_WALKING_RIGHT);
break;
case DOWN:
setTexture(Textures.PLAYER_WALKING_DOWN);
break;
case LEFT:
setTexture(Textures.PLAYER_WALKING_LEFT);
break;
}
break;
case RUNNING:
...
}
Но это усложняется с каждым условием, и мне пришлось бы переписать его, если бы был немного другой набор состояний (например, я бы реализовал Зомб ie, и он не мог работать или имел бы дополнительные свойства и т. Д. c.).
Я также подумал о том, чтобы присвоить все мои теги текстур и написать алгоритм, который пытается найти подходящую текстуру, но с большим количеством и больше текстур / условий, и все это выполняется очень часто, я думаю, что этот подход будет чрезвычайно медленным.
Я действительно не знаю, что делать, или если мне не хватает каких-либо структур данных, которые обращаются к этим видам проблемы и являются и эффективными в коде и производительными.