- Диалог продвигался на одну строку за раз при нажатии клавиши «Ввод».
- После отображения всех строк диалога игра возвращается в нормальное состояние игрового процесса.
Класс NPC: у каждого NPC есть массив диалогов. содержащие строки диалога и DialogIndex для отслеживания текущей строки.
Состояние игры: игра имеет разные состояния, такие как playState (обычный игровой процесс) и DialogState (во время диалога).Класс KeyHandler: обрабатывает ввод пользователя, включая продвижение диалога по нажатию «Ввод».
Я следил за руководством RyiSnow на YouTube и дорабатывал код. по пути. Недавно я столкнулся с проблемой ведения диалогов, не связанных с NPC. Мне удалось решить эту проблему, используя if(npcIndex != 999), потому что 999 — это значение npcIndex по умолчанию, если между игроком и NPC не обнаружено столкновений. Я хочу сделать это более пригодным для повторного использования, но изо всех сил пытаюсь придумать идеи, потому что мой класс KeyHandler обрабатывает ввод «Enter».
Текущая реализация:
Код: Выделить всё
else if(gp.gameState == gp.dialogueState) {
if(code == KeyEvent.VK_ENTER) {
int npcIndex = gp.cChecker.checkEntity(gp.player, gp.npc);
if(npcIndex != 999) {
if (gp.npc[npcIndex].dialogues[gp.npc[npcIndex].dialogueIndex] != null){
gp.npc[npcIndex].speak();
}
} else{
gp.gameState = gp.playState;
}
}
Как я могу обобщить логику развития диалога, чтобы она работала для всех источников диалога ( NPC, знаки и т.п.)? В частности:
Это хороший подход для обработки диалогов из нескольких источников? Существуют ли лучшие шаблоны проектирования для этого варианта использования?
Как обеспечить масштабируемость этой системы по мере роста игры (например, с добавлением большего количества объектов, запускающих диалоги)?
Подробнее здесь: https://stackoverflow.com/questions/793 ... o-gameplay