Berserker
Posts: 16721
|
|
05.01.2025 22:55 |
|
Berserker
Posts: 16721
|
wessonsm, я бы эти проверки как-то вынес в промежуточную функцию. Я так понимаю, нужно просто по условию вместо отрисовки видеокадра отрисовать pcx-фон. Возможно, какая-то сложность ускользает.
Code:
// Фикс раздвоения кнопок при нажатии
int __stdcall hook_ButtonDraw(LoHook* hook, HookContext* c) {
if ( (IsVideoFullScreen())&&(PlayingCredits()) ) {
VideoDrawCurrentFrame();
}
return EXEC_DEFAULT;
}
Вот здесь вместо VideoDrawCurrentFrame(), если нет видео, вставить вызов отрисовки PCX задника. Только ты перехватил отрисовку любых кнопок в игре ведь?
Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
|
|
15.01.2025 17:13 |
|
wessonsm
Posts: 814
|
Да, надо будет пару вечеров посидеть еще над этим плагином. Меня самого не вполне устраивает текущий вариант.
|
|
15.01.2025 22:34 |
|
wessonsm
Posts: 814
|
(05.01.2025 02:14)Berserker Wrote: А не было возможности сделать так, чтобы композитные png не были нужны вообще для главного меню?
Сделал.
Оптимизировал хуки, немного причесал исходник.
Композитные png не требуются в главном меню (но не в других диалогах).
Если в json имеются ключи вида "era:{png_backs:{***}}" для кнопок главного меню,
их требуется удалить для корректной работы плагина.
По совету Берсеркера скомпилировал с ключом /MT, чтобы не было зависимостей от внешних библиотек.
Это привело к увеличению размера плагина в 4 раза - с 14,5 кБ до 58 кБ
Ссылки остались те же:
Мод
Плагин
(15.01.2025 17:13)Berserker Wrote: Только ты перехватил отрисовку любых кнопок в игре ведь?
Только в главном меню.
Хук стоит сплайс, но если кнопка находится не в главном меню, просто вызывается замещенная функция без изменений.
(This post was last modified: 20.01.2025 22:24 by wessonsm.)
|
|
20.01.2025 20:52 |
|
Berserker
Posts: 16721
|
Quote:Это привело к увеличению размера плагина в 4 раза - с 14,5 кБ до 58 кБ
Это превышает свободное место на моей 3-дюймовой дискете )))
Отличное обновление, спасибо! Такое можно по умолчанию в сборках использовать. Только можешь описать все фишки плагина (прототип readme?).
Quote:Вот теперь тебя люблю я,
Вот тебя тебя хвалю я
Потому что даже Берсу
Твой плагин да угодил ))) © Плагдодыр
Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
|
|
20.01.2025 22:34 |
|
wessonsm
Posts: 814
|
Berserker, я придумал как сделать, чтобы png кадры дефов кнопок главного меню заранее кэшировались в памяти, такой маленький трюк.
Еще перед созданием диалога последовательно рисую их в экранный буффер функцией 0x47B820_Def_DrawSimple, это провоцирует помещение их в кэш.
На экране их не видно, потому что нет перерисовки экрана, но в кэш они попадают.
Субъективно тормозов стало меньше.
Теперь вопрос как бы измерить, насколько уменьшились тормоза?
Субъективным ощущениям доверять не стоит.
Первое, что приходит в голову замерять время отрисовки кнопки при клике на нее функцией GetTime(), до и после.
Если кадр нажатой кнопки есть в кэше, время будет меньше.
Скоро наверное выложу обновленный плагин и результаты тестов.
|
|
29.01.2025 23:27 |
|
Bes
Posts: 5454
|
wessonsm, можно нагрузить процессор сторонней задачей, и следом открывать игру, замеряя время...
Думаю с нагрузкой "наглядность" станет осязаема даже таймером
|
|
30.01.2025 00:23 |
|