Встроенная консоль для отладки

Так как в RPG Maker XP такая консоль отсутствует, то я захотел попробовать написать что-то свое, встроенное прямо в игру. Где-то у меня уже был набросок кода, который позволяет исключить обычный выброс ошибок для самостоятельной проверки обработки ошибок.
Код:
Набросок сцены консоли:
Всего два окна, две разных шкрки (window skins) и один спрайт курсора. Для вызова консоли я использовал модифицированный модуль клавиатуры от Fomar0153pastebin.com/yy5gDGxR
После такого грубого наброска, надо заставить все это работать. Некоторое время боролся с окном ввода, но что-то уже начало получаться:
Для того, чтобы при вводе одной буквы не вводилось сразу несколько подряд, пришлось использовать небольшую задержку (некоторую часть секунды), так что супербыстрого ввода текста не выйдет, зато хотя бы аккуратно. Использовал для задержки Script Helper от nathmatt.

Прежде, чем дописать код для обработки нажатия всех остальных букв (а не только "А"), сделаю следующие изменения:
  • ввод прописных и заглавных букв, в зависимости от зажатия Shift и включения/выключения Caps Lock.
  • перемещение курсора между буквами:
  • ввод новой буквы в позиции курсора:
  • стирание текста с позиции курсора:
Ввод сразу всех букв реализовал и опубликовал здесь: Лаборатория Мёртвого Эльфа.
После всей этой работы с вводом, сделал вывод всей информации из методов print, puts и p в окно вывода:
По нажатию клавиши Enter введенная строка вычисляется методом eval, результат отправляется в консоль (синий цвет - строка для вычисления, голубой - результат, символы < и > приписываются автоматически для наглядности)
Также в консоль отправляется наиболее полная информация об ошибке и местах, где ее искать. Самая первая строка - метод, в котором ошибка встретилась, ниже - все методы, которые были вызваны до этого - то есть методы, в которые вложен вызов метода, в котором произошла ошибка:
К сожалению, как заменить "Section" на название скрипта, я пока не знаю.
С гордостью сообщаю, что сумел выловить и это тоже. Просто извлекаем данную информацию из файла скриптов, в котором содержаться все имена. На скриншоте вы можете видеть номера скриптов в списке и их названия:
Заменим теперь "секции" на названия, поправим кое-что в номере строки и получим:
Эту ошибку я сделал специально для примера.

Демка проекта находится ниже (кликните по кнопке), ее можно попробовать. Если у кого есть идеи, как улучшить работу клавиатуры, пишите в комментарии, буду рад выслушать. Еще вот только что нашел какую-то проблему при вводе некоторых символов (плюс, минус и запятая, например), решу к следующей версии, если она когда-нибудь выйдет.

Комментарии

Популярные сообщения из этого блога

Генератор названий оружия

Создание компонента Delphi

Идеи: Генератор сказки