Небольшой сникпик новой фичи фурки. Кто-то уже видел.
Можно выравнивать кнопки вправо влево и по центру (переменная btnalign) и можно выравнивать текст внутри кнопки (переменная btntxtalign). Такие дела.
В урке много недостатков. Мне, как автору фурки можете поверить. Вообще, чем дальше я пишу фурку, тем лучше понимаю, какой должна быть идеальная менюшная ИЛ-платформа. Возможно, я её когда-нибудь напишу. Имя, по крайней мере, уже придумал. 🙂 Впрочем, я отвлёкся.
Одной из самых неудобных в урке вещей является инвентарь. Написать игру, в которой инвентарь используется вменяемым образом, довольно сложно. Даже очень сложно. Я не говорю сейчас об играх, в которых инвентарь играет роль декорации или используется минимально. Я говорю об играх, где, скажем, предметы могут по-разному использоваться на различных локациях, плюс список и реализация действий над предметами различаются в зависимости от внутриигровых факторов.
Нет, конечно, урка предоставляет средства. Но лучше сразу убиться, чем писать сложное взаимодействие с предметами инвентаря. В платформе моей мечты инвентарь будет удобным и практичным. Но мы говорим об урке.
Сейчас взаимодействие с предметом в инвентаре реализуется через локации вида:
:use_Зелье_Выпить
pln ...
Если нужно реализовать различное взаимодействие в зависимости от текущей локации, то приходится писать что-то вроде:
:use_Зелье_Выпить
if cur_loc="пещера" then goto ...
При этом, если локаций, на которых нужна разная реакция на выпитое зелье, много, то этих if и goto в локации-действии будет на пол-экрана. Кроме того, все реакции будут располагаться в коде одной куче, зачастую далеко от той локации, к которой привязаны.
Мне пришла в голову идея реализовать в фурке локации следующего вида:
:пещера
pln Вы в пещере...
...
end
:use_Зелье_Выпить@пещера
pln Пьём зелье в пещере...
...
Т.е. в зависимости от текущей локации будет выбираться та или иная реализация на действие над предметом. Если не нашлось «специализированной» реализации, то выполняется стандартная use_Зелье_Выпить.
Этот подход, мне кажется, имеет несколько важных плюсов:
Также удобство использования инвентаря повысят события (events), которые стоят в планах на реализацию. Но о них в другой раз.