igrik, почему ты не стал делать с вертикальными закладками, дабы автоматом расширить область под возможные опции на страницу?
это ведь не подпадало в сферу бэкенда?
в топку всех, кто будет с непривычки хаить такое расположение, оно общепринятое везде и куда привычнее горизонтальных закладок... смирится слюбится
(27.10.2020 15:51)Bes Wrote: [ -> ]igrik, почему ты не стал делать с вертикальными закладками, дабы автоматом расширить область под возможные опции на страницу?
это ведь не подпадало в сферу бэкенда? 
Вертикальные закладки? Сделай дизайн макет - тогда и поговорим

Я дизайнер - от слова "худо" со всеми вытекающими... Тот же фотошоп для меня - боль и страдания, а не программа.
А скролы не сделал - просто потому что до этого не дошли руки. Были более приоритетные задачи, а потом просто забылось. На вскидку - там работы - пару часов. Значит займусь в скором времени.
Но объясню еще один момент - без переписывания так называемого бэкенда, в диалоге мы не можем уйти от 8 вкладок и 4х блоков на каждую вкладку.
как в во всех браузерах сейчас....
вертикальные закладки... вот в таком стиле
(не слева сбоку, а на верху... а сам размер шрифта названия закладок сделать мельче, или с разбивкой на две строки, если длинно)
Да я тебя прекрасно понял. Но какая разница - сверху вкладки, или сбоку, если мы привязаны к жесткому ограничению в 8 вкладок и ни одной больше!
igrik, бэкэнд будет, как и планировали.
Я за.
Quote:5. Можно просто добавить новую кнопку что-то вроде "Опции ERA", с новым диалогом, оставив диалог вог-опций без изменений.
Старые опции оставляем для совместимости со старыми модами. Кстати да, плохо, что файл zsetup00 вообще убрал. Лучше, если бы значения из Json переопредеяли значения из zsetup00.txt при наличии. Тогда сохранилась бы обратная совместимость. Напомню, что если в json отсутствует значение, tr вернёт строку ключа «как есть».
По новому диалогу.
Нюанса два:
1) Нужно уметь удалять элементы и пересоздавать их заново (при переходе на другую страницу меняется местоположение пунктов и заголовков в группах). Либо, если это визуально не скажется, просто закрывать и заново показывать диалог, что будет равносильно.
2) Хотелось бы иметь возможность задавать тип опции. Нужны галочки, радиокнопки из нескольких вариантов и поля ввода произвольного текстового значения.
В полях ввода можно было бы настраивать то, что сейчас требует json/ini конфигов. То есть множители, коэффициенты, шаблоны строк.
Если макет делать схожим с текущим, то без введения, и, например, верхняя вкладка имеет текст НАЗАД, а нижняя ВПЕРЁД, работая как кнопки навигации по страницам опций.
1) Это уже реализовано. Переход на другую страницу отображает текущую вкладку и скрывает все остальные. Проблем никаких не будет с изменением местарасположения элементов. Всё в настоящее врему уже гибко.
2) Проблем нет. Расширь поле type и укажи мне как ты расширил. И всё. Мне в диалоге исправить - 1 место!
Code:
struct _DlgSetup_ItemList_
{
char *Name; // название группы
char *Hint; // текст хинта внизу (при наведении на имя группы)
char *PopUp; // текст в окне по правой мыши (при клике на имя группы)
int *ItemState; // ук. на массив состояния галочек
char **ItemName; // текст справа от галочки
char **ItemHint; // текст хинта внизу (одна строка)
char **ItemPopUp; // текст в окне по правой мыши.
int Type; // 0-нет группы, 1-чекбоксы, 2-радиобутоны
int ItemCount; // число элементов
};
(27.10.2020 15:36)igrik Wrote: [ -> ]Все данные для диалога я беру из уже готовой структуры. Вот кто по твоему создаёт эту структуру? Правильно - сам WoG, а не zvslib1.dll. В вэб-программированиии это называется бэкенд. Вот когда бэкенд будет переписан, я адаптирую фронтенд диалога (саму визуальную часть) как пожелаете, хоть "вверх-ногами", потому что п.2 уже мной сделан на 100%.
В чём сложность перенести все таблицы диалога? Можно сделать сторонней dll но... твоя dll по-прежнему будет читать старые адреса, поэтому выделять память и переносить таблицы (а их там штук 10, для оптимизации кода можно перенести только половину, обычно я беру те, которые меньше используется кодом) потребуется в твоей dll.
(27.10.2020 15:36)igrik Wrote: [ -> ]Вот открой файл "wogsetup.cpp" и хорошенько изучи его - вот его и нужно переписать для создания нового окна ВОГ опций. Ты думаешь в 3.59 он сильно переписан (предложение п.3)? Очень и очень сомневаюсь.
В 3.59 lua - бурелом кода, не очень понятно как у них сделано. Но скроллинг в опциях у них работает, что на ERA так и не смогли перетащить. Т.е. ограничение в 8 вкладок преодолевать не обязательно.
(27.10.2020 17:36)XEPOMAHT Wrote: [ -> ]В чём сложность перенести все таблицы диалога? Можно сделать сторонней dll но... твоя dll по-прежнему будет читать старые адреса, поэтому выделять память и переносить таблицы (а их там штук 10, для оптимизации кода можно перенести только половину, обычно я беру те, которые меньше используется кодом) потребуется в твоей dll.
Сложности никакой нет. Только я не хочу этим заниматься и не должен. Это движок игры. А движком игры у нас занимается тольк один человек - Berserker. Я в Воговский движок не лезу.
(27.10.2020 17:36)XEPOMAHT Wrote: [ -> ]В 3.59 lua - бурелом кода, не очень понятно как у них сделано. Но скроллинг в опциях у них работает, что на ERA так и не смогли перетащить. Т.е. ограничение в 8 вкладок преодолевать не обязательно.
Ты как буд-то читаешь сквозь пальцы. Я же написал что сделаю скролл, просто были более важные задачи, и до скролла руки так и не дошли. И не зачем мне откудо-то его перетаскивать. Тем более, что весь диалог там написан на lua. Даже если бы я и хотел его перетащить - как по твоему я бы это сделал?
Quote:1) Это уже реализовано. Переход на другую страницу отображает текущую вкладку и скрывает все остальные. Проблем никаких не будет с изменением местарасположения элементов. Всё в настоящее врему уже гибко.
У тебя строго 8 вкладок, которые ты только скрываешь и показываешь. А нужно при переходе на 9 удалить старые элементы вкладки 1 и пересоздать. Тебе нужен метод элемента диалога «Удалить» или что-то в этом роде. Возможно, нужна прокрутка вкладок и прокрутка опций внутри одной вкладки.
Quote:2) Проблем нет. Расширь поле type и укажи мне как ты расширил. И всё. Мне в диалоге исправить - 1 место!
Давай второй диалог делать независимым от первого по отдельной кнопке. Там и опции будут по имени, а не с кодом. И формат сохранения/загрузки другой.
XEPOMAHT, да, нужно уточнить у Сергея, как в Г3 скроллинг работает.
(27.10.2020 17:49)Berserker Wrote: [ -> ]А нужно при переходе на 9 удалить старые элементы вкладки 1 и пересоздать.
А кто будет инициализировать и заполнять структуру 9й вкладки? Если ты это сделаешь и она в реальности будет 1й вкладкой (твоя псевдо-9ая), то диалог уже это легко схавает и переварит.
1. У меня строго 8 вкладок, потому что так требует структура _DlgSetup_. Будет в ней больше вкладок - сделаю больше. Это вообще не проблема. За прокрутку перестаньте уже мне говорить, надоели, честное слово. Сделаю я её (пока что внутри вкладок). Будет 20 вкладок - сделаю прокрутку вкладок. Проблемы с прокруткой у меня нет. Хотите вкладки сверху - сделаю сверху.
2. Легко. Но нужен бэкенд!
Сделайте мне
бэкенд, тогда будет вам диалог, какой хотите, хоть с блекджеком и шлюхами.
А ориентироваться нужно будет на схожую визуальную структуру? Вкладки, группы вкладок с заголовками и прокручиваемые страницы? Если не прокручиваемые, а перелистываемые страницы (псевдовкладки НАЗАД и ВПЕРЁД), то скажешь потом.
(27.10.2020 17:58)igrik Wrote: [ -> ]надоели, честное слово.
...Хотите вкладки сверху - сделаю сверху.
... какой хотите, хоть с блекджеком и шлюхами.
последние слова должен был говорить
Algor
igrik, вкладки сверху тем хороши, что не урезают по ширине область опций, ведь у нас окно имеет б
Ольшую сторону по ширине, а не высоте.
Так можно даже без скроллинга вместить три столбца опций. Шрифт главное не гигантить

Столкнулся с нехваткой 100 y-переменных и освобождением привязок через !#VA(-имя переменной). А Алгор говорил, что не понадобится ))
Berserker, теперь 200 сделаешь?
Нет, конечно. Уместился в 100 )
Просто пометил в коде, что вот этот массив на 7 y-переменных далее не используется. Можно освободить его и эти переменные на другие имена завязать.
Это когда ты y90..y96 использовал под типы монстров, а дальше у тебя y90 - номер героя, y91 - стратегия распределения монстров по слотам и т.д.