mirror of
https://github.com/sfall-team/sfall.git
synced 2026-07-27 16:52:34 -07:00
Expanded UI bug fixes (2)
- HRP compatibility: add support for the current HRP version by patching window Y value directly to it's code - Barter Window: fixed mouse wheel scrolling not working over extended areas of 2 central tables
This commit is contained in:
@@ -1274,8 +1274,8 @@ static void ExpandedBarterPatch() {
|
||||
dlog_f("Skipping expanded barter screen patch. Screen height = %d < %d\n", DL_INIT, Graphics::GetGameHeightRes(), dialogWindowHeight);
|
||||
return;
|
||||
}
|
||||
if (HRP::Setting::ExternalEnabled()) {
|
||||
dlogr("Skipping expanded barter screen patch. Not compatible with external HRP.", DL_INIT);
|
||||
if (HRP::Setting::ExternalEnabled() && !HRP::Setting::VersionIsValid) {
|
||||
dlogr("Skipping expanded barter screen patch. Incompatible version of High-Resolution Patch (f2_res.dll) found.", DL_INIT);
|
||||
return;
|
||||
}
|
||||
if (!barterTallFrm.ArtExists() || !tradeTallFrm.ArtExists()) {
|
||||
@@ -1290,7 +1290,12 @@ static void ExpandedBarterPatch() {
|
||||
SafeWriteBatch<DWORD>(180 + extraBarterHeight, { // Trade sub-window height
|
||||
0x46EDAB, 0x46EE13, // setup_inventory
|
||||
});
|
||||
SafeWrite32(0x46EDD4, 470 + extraBarterHeight); // Trade window max Y = Y pos + height = 290 + 180 = 470
|
||||
if (HRP::Setting::VersionIsValid) {
|
||||
// HRP overrides window creation code setup_inventory, so need to write correct max Y value into HRP itself.
|
||||
SafeWrite32(HRP::Setting::GetAddress(0x1001220C), 470 + extraBarterHeight);
|
||||
} else {
|
||||
SafeWrite32(0x46EDD4, 470 + extraBarterHeight); // Trade window max Y = Y pos + height = 290 + 180 = 470
|
||||
}
|
||||
SafeWriteBatch<DWORD>(dialogWindowHeight, { // Game dialog BG window height (for Y calculation only)
|
||||
0x44831E, // gdialog_barter_create_win_
|
||||
0x4485A7, // gdialog_barter_destroy_win_
|
||||
|
||||
@@ -478,10 +478,13 @@ targetDown:
|
||||
notTargetScroll:
|
||||
mov ebx, ebp;
|
||||
mov ecx, edi;
|
||||
mov eax, 48;
|
||||
mul ds:[FO_VAR_inven_cur_disp];
|
||||
add ecx, 20;
|
||||
mov edx, ecx; // y_start
|
||||
add ecx, eax; // y_end
|
||||
lea eax, [ebp + 250]; // x_start
|
||||
add ebx, 250 + 64; // x_end
|
||||
lea edx, [edi + 20]; // y_start
|
||||
add ecx, 20 + 3 * 48; // y_end
|
||||
call fo::funcoffs::mouse_click_in_;
|
||||
test eax, eax;
|
||||
jz notTargetBarter;
|
||||
@@ -495,10 +498,13 @@ barterTargetDown:
|
||||
notTargetBarter:
|
||||
mov ebx, ebp;
|
||||
mov ecx, edi;
|
||||
mov eax, 48;
|
||||
mul ds:[FO_VAR_inven_cur_disp];
|
||||
add ecx, 20;
|
||||
mov edx, ecx; // y_start
|
||||
add ecx, eax; // y_end
|
||||
lea eax, [ebp + 165]; // x_start
|
||||
add ebx, 165 + 64; // x_end
|
||||
lea edx, [edi + 20]; // y_start
|
||||
add ecx, 20 + 3 * 48; // y_end
|
||||
call fo::funcoffs::mouse_click_in_;
|
||||
test eax, eax;
|
||||
jz end;
|
||||
|
||||
Reference in New Issue
Block a user