Skip to content

Форматирование и оформление вывода

Обычно INSTEAD сам занимается форматированием и оформлением вывода. Например, отделяет статическую сцену от динамической. Выделяет курсивом действия игрока. Переводит фокус на изменение в тексте и т.д. Модули вроде "fmt" улучшают качество вывода игры без дополнительных усилий со стороны автора.

Например:

lua
require 'fmt'
fmt.para = true -- включить отступы параграфов

И ваша игра будет выглядеть гораздо лучше. Если вам нужна какая-то автоматическая обработка выводимого текста, вы можете включить модуль "fmt" и определить функцию 'fmt.filter'. Например:

lua
require "fmt"
fmt.filter = function(s, state)
	-- s -- вывод
	-- state -- true, если это такт игры (вывод сцены)
	if state then
		return 'Эта строка будет добавлена к началу вывода\n'..s;
	end
	return s
end

Многие хорошие игры на INSTEAD никак не занимаются своим оформлением, кроме разбиения текста 'dsc' на параграфы с помощью символов '^^', поэтому подумайте, а так ли вам хочется заниматься оформлением своей игры вручную?

Тем не менее, иногда это всё-таки необходимо.

Внимание! По умолчанию, все конечные и начальные переводы строк, пробелы и символы табуляции вырезаются из вывода обработчиков. Так как обычно они не имеют смысла и даже вредны. В редких случаях, автору может понадобиться более полный контроль над выводом, тогда он может задать std.strip_call как false в init() или start(), например:

lua
std.strip_call = false

obj {
	dsc = [[Тут лежит {яблоко}.^^^^]] -- теперь переводы строк
	-- не будут вырезаны, хотя это странное желание
}

Но обычно такое ручное форматирование свидетельствует о плохом стиле. Для оформления сцены лучше использовать decor и/или подстановки $.