Понемногу набрасывая справочный раздел "Как играть", я всё думал над тем как выводить его на экран.
Кроме того, придумывая разного рода головоломки, часто ловил себя на мысли, что игрок не сможет удержать в голове всю ту информацию, на основе которой он должен будет находить решения своих проблем. Рассчитывать на то, что он будет записывать хоть что-то, тоже не приходится. Хорошо бы полезные для игрока сведения записывать в какой-нибудь журнал, который игрок может в любой момент открыть и полистать.
Поэтому решил реализовать старую задумку и добавить объект "Книга". И добавил.
Книга представляет собой набор глав (можно вложенных), которые в свою очередь содержат перечень страниц с текстом.
Пока набор команд таков:
…Создать, <Книга>, Тип_Книги …НазваниеКниги, <Книга>, <ПолноеНазваниеКниги> …ДобавитьГлаву, <Книга:Глава>, <НазваниеГлавы>, <ТекстКогдаПусто>, <ТекстГлавы> …ДобавитьГлаву, <Книга:Глава В Глава>, <НазваниеГлавы>, <ТекстКогдаПусто>, <ТекстГлавы> …ДобавитьТекстВКнигу, <Книга:Глава:Страница>, <ТекстГлавы> …ЗаменитьТекстВКниге, <Книга:Глава:Страница>, <ТекстГлавы> …КнигаНеПрочитана(<Книга:Глава:Страница>) …ПометитьКнигуКакПрочитанную, <Книга:Глава:Страница> …ПриДобавленииТекстаВКнигу, <Книга:Глава:Страница>, <Модуль> …Вывести, <Книга:Глава:Страница>
Само собой, вывод книги настраивается через шаблоны в теме и она может быть представлена как угодно.
Неактивен
При добавлении текста в главу страница, в которую добавляется текст, а также глава, ну и, естественно, сама книга, — всё это автоматически обзаводится признаком "непрочитано". Этот признак можно отслеживать и извещать об этом игрока.
Например, в случае с журналом этот признак можно выводить прямо в главном меню:
Какие для этого нужны трудозатраты? Да никаких особо.
Добавляем в главное меню игры пункт, который выводит журнал:
…ДобавитьПунктВГлавноеМеню, 'журнал', {…Вывести, ’Журнал’}, _, { if …КнигаНеПрочитана(’Журнал’): $Result = 'журнал<font color="#555555">(<font color="#FFFF00">!</font>)</font>' else $Result = 'журнал' end }
Ну и вешаем обработчик на добавление текста в книгу "Журнал", чтобы обновлялось главное меню игры:
…ПриДобавленииТекстаВКнигу, ’Журнал’, { …ОбновитьГлавноеМеню }
Теперь при добавлении текста в "Журнал", откуда бы это ни производилось, в главном меню будет появляться этот признак.
Неактивен