BearLibTerminal - псевдоконсольное окно для рогалика

Форум библиотеки BeaRLib

Модератор: Apromix

altmax
Сообщения: 173
Зарегистрирован: 15 сен 2012, 11:59

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение altmax » 22 июл 2017, 16:46

Cfyz писал(а):
21 июл 2017, 13:01
А еще рамоки (которые кстати по большей части одинаково генерятся для всех шрифтов) вроде бы должны стыковаться ровно, а не внахлест. Используется пиксельные смещение?
Нет, здесь стандартный встроенный шрифт без смещения. Видимо сам шрифт так сделан, что внахлест стыкуются рамки.

Аватара пользователя
Apromix
Мастер
Сообщения: 1236
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение Apromix » 23 авг 2017, 11:44

Во время тестирования своей игры обнаружилась ошибка в терминале, появилась белая сетка. Что может быть?
imgpsh_fullsize.png
imgpsh_fullsize.png (93.5 КБ) 9214 просмотров

Аватара пользователя
Cfyz
Сообщения: 776
Зарегистрирован: 30 ноя 2006, 10:03
Откуда: Санкт-Петербург
Контактная информация:

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение Cfyz » 24 авг 2017, 10:04

Apromix писал(а):обнаружилась ошибка в терминале, появилась белая сетка. Что может быть?
Так это же один из дефолтных Alt-хоткеев: Alt+G (grid) переключает отображение сетки, чтобы можно было подебажить расположение/центрирование тайлов.
Пытается раскуклиться

Аватара пользователя
Apromix
Мастер
Сообщения: 1236
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение Apromix » 31 авг 2017, 04:55

Буду знать :D И много таких хоткеев?

В терминале есть возможность использовать картики в перемешку с текстом? Например, отображение свойств оружия и перед числом урона показывать меч или топор, перед числами прочности (тек/макс) отображать молот и тд.

altmax
Сообщения: 173
Зарегистрирован: 15 сен 2012, 11:59

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение altmax » 02 сен 2017, 19:39

Apromix писал(а):
31 авг 2017, 04:55
Буду знать :D И много таких хоткеев?

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

Аватара пользователя
Apromix
Мастер
Сообщения: 1236
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение Apromix » 16 сен 2017, 19:44

Начал изучать язык nim и сделал биндинг для терминала. За основу взял биндинги C и Go. Затем на гитхабе обнаружил биндинг для терминала товарища Zacharycarter (blt.nim). Объединил биндинги, подсматривая в его биндинг и латая свой :)

Затем можно будет добавить ко всем поддерживаемым терминалом биндингам. Скорее всего с выходом новой версии терминала. Язык Nim легок в освоении и набирает популярность.

Аватара пользователя
kipar
Сообщения: 2120
Зарегистрирован: 10 мар 2010, 13:16
Откуда: Москва

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение kipar » 19 сен 2017, 19:26

Если что, у меня есть для crystal байндинг -
https://github.com/konovod/medico/blob/ ... erminal.cr

Лень было делать из него отдельный репозиторий, но т.к. nim - практически прямой противник конкурент кристала, если будут добавлять байндинг нима то кристалловский я тоже как репозиторий оформлю.

Аватара пользователя
Apromix
Мастер
Сообщения: 1236
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение Apromix » 27 сен 2017, 16:17

У кристалла такой лаконичный синтаксис :)

gelad655
Сообщения: 1
Зарегистрирован: 30 окт 2017, 13:08

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение gelad655 » 30 окт 2017, 13:14

Добрый день. Нашёл в документации к функции print упоминание о "bounding box tag", а конкретно:

This function returns one of the dimensions of a string printed on screen with all formatting enabled. By default print returns the width of a longest line in a printed string. If the string contains a bounding box tag, then maximum width is considered to be already known and print returns the height of an auto-wrapped string printed on screen.

Т.е. как-то можно выводить текст в области с заданной шириной? Что за тег нужно для этого использовать?
Заранее прошу прощения, если это где-то описано, но я не смог найти.

altmax
Сообщения: 173
Зарегистрирован: 15 сен 2012, 11:59

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение altmax » 30 окт 2017, 16:26

gelad655 писал(а):
30 окт 2017, 13:14

Т.е. как-то можно выводить текст в области с заданной шириной? Что за тег нужно для этого использовать?
Заранее прошу прощения, если это где-то описано, но я не смог найти.
terminal_print_ext (2,30,40,5,TK_ALIGN_DEFAULT, Message.c_str())
;

terminal_print (x,y,width, height,ALIGN,"Hello, world");
Виды выравнивания:
#define TK_ALIGN_DEFAULT 0
#define TK_ALIGN_LEFT 1
#define TK_ALIGN_RIGHT 2
#define TK_ALIGN_CENTER 3
#define TK_ALIGN_TOP 4
#define TK_ALIGN_BOTTOM 8
#define TK_ALIGN_MIDDLE 12

Аватара пользователя
Apromix
Мастер
Сообщения: 1236
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение Apromix » 05 ноя 2017, 20:33

Такой вопрос :D

До сих пор я писал рогалик символьный, все вроде шло гладко. Теперь же я хочу добавить и графические тайлы, скажем 32х32. Получается нужно будет выводить и обычный шрифт как сейчас в его сетку, скажем 8х16 и графические тайлы в сетку 32х32.

Как такое провернуть?

Аватара пользователя
Cfyz
Сообщения: 776
Зарегистрирован: 30 ноя 2006, 10:03
Откуда: Санкт-Петербург
Контактная информация:

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение Cfyz » 07 ноя 2017, 11:59

Apromix писал(а):Получается нужно будет выводить и обычный шрифт как сейчас в его сетку, скажем 8х16 и графические тайлы в сетку 32х32.
Так это штатный совершенно режим работы. Если размеры тайлов кратны ячейкам, то достаточно указать при загрузке тайлсета его "шаг":

Код: Выделить всё

0xE000: tileset.png, size=32x32, spacing=4x2
И дальше как обычно

Код: Выделить всё

terminal_put(x, y, $E000+i);
Где x, y это, очевидно, координаты в ячейках. Т. е. большие тайлы выравниваются не по сетке 32x32, а по меньшей базовой.

Spacing еще учитывается при выводе текста, например если загрузить 16x16 тайлы-пиктограммы (spacing=2x1), то их можно будет использовать в выводе через print (типа 2⌘ 3⌬) и удвоенный размер "символа" будет учтен при самом выводе, при автопереносе или измерении строки (это можно заметить в примере "Formatted Log"). Но 32x32 вряд ли предназначено для вывода вместе с текстом =/.
Пытается раскуклиться

Аватара пользователя
Харука-тян
Мастер
Сообщения: 544
Зарегистрирован: 29 ноя 2006, 00:23
Контактная информация:

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение Харука-тян » 20 ноя 2017, 06:35

Обновилась до текущей версии, terminal_move молча пропал из библиотеки (в ченжлогах не нашла упоминаний о его уходе).
"Женщина верит, что дважды два будет пять, если хорошенько поплакать и устроить скандал" (© Дж. Элиот).
ИзображениеИзображение

Аватара пользователя
Cfyz
Сообщения: 776
Зарегистрирован: 30 ноя 2006, 10:03
Откуда: Санкт-Петербург
Контактная информация:

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение Cfyz » 21 ноя 2017, 15:29

Харука-тян писал(а):terminal_move молча пропал из библиотеки
Ой.

Он немного молча появился и так же молча пропал, когда я делал рефакторинг (путем выпиливания) работы с потоками в библиотеке. Я тогда не впилил его обратно потому, что этот "курсор" кажется выполнял не совсем то, что на самом деле было нужно.

Я ведь правильно понимаю, что тебе нужен не именно курсор ввода, а просто самостоятельно (без ручного put/refresh) мигающий символ для визуализации некоторой координаты? Ведь тогда функциональность по запоминанию позиции вывода после put/print, переносы и магические TK_USE_CURSOR_POS -- все это не нужно, даже terminal_move толком не нужен, а нужен анимированный тайл.

Если так, то, возможно, имеет смысл сразу попытаться сделать простой вариант анимированных тайлов, потому что это общий случай и может быть полезен более чем в одном месте. Простой вариант -- это когда они все анимированы синхронно (но отличаются набором/частотой кадров), как например тут:
Скрытый текст: ПОКАЗАТЬ
Mine.gif
Mine.gif (88.1 КБ) 8416 просмотров
Пытается раскуклиться

Аватара пользователя
Харука-тян
Мастер
Сообщения: 544
Зарегистрирован: 29 ноя 2006, 00:23
Контактная информация:

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение Харука-тян » 23 ноя 2017, 08:18

Cfyz писал(а):
21 ноя 2017, 15:29
имеет смысл сразу попытаться сделать простой вариант анимированных тайлов, потому что это общий случай и может быть полезен более чем в одном месте. Простой вариант -- это когда они все анимированы синхронно (но отличаются набором/частотой кадров), как например тут:
Скрытый текст: ПОКАЗАТЬ
Mine.gif
Действительно имеет. Ждём! :D
"Женщина верит, что дважды два будет пять, если хорошенько поплакать и устроить скандал" (© Дж. Элиот).
ИзображениеИзображение

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость