mirror of
https://github.com/fallout2-ce/fallout2-ce.git
synced 2026-07-27 16:47:11 -07:00
Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
068e6dd864 | ||
|
|
1acb4a57d2 | ||
|
|
293c5b71fb |
+26
-2
@@ -1,6 +1,7 @@
|
||||
#include "mouse.h"
|
||||
|
||||
#include "color.h"
|
||||
#include "debug.h"
|
||||
#include "dinput.h"
|
||||
#include "input.h"
|
||||
#include "kb.h"
|
||||
@@ -53,6 +54,10 @@ static unsigned char* _mouse_fptr = nullptr;
|
||||
// 0x51E2A0
|
||||
static double gMouseSensitivity = 1.0;
|
||||
|
||||
static double gMouseSensitivityDpiHorizontal = 1.0;
|
||||
static double gMouseSensitivityDpiVertical = 1.0;
|
||||
double gMouseSensitivityScale2Xoption = 1.0;
|
||||
|
||||
// 0x51E2AC
|
||||
static int last_buttons = 0;
|
||||
|
||||
@@ -454,8 +459,8 @@ void _mouse_info()
|
||||
}
|
||||
|
||||
// Adjust for mouse senstivity.
|
||||
x = (int)(x * gMouseSensitivity);
|
||||
y = (int)(y * gMouseSensitivity);
|
||||
x = (int)(x * gMouseSensitivity * gMouseSensitivityDpiHorizontal * gMouseSensitivityScale2Xoption);
|
||||
y = (int)(y * gMouseSensitivity * gMouseSensitivityDpiVertical * gMouseSensitivityScale2Xoption);
|
||||
|
||||
_mouse_simulate_input(x, y, buttons);
|
||||
|
||||
@@ -676,6 +681,25 @@ void mouseSetSensitivity(double value)
|
||||
if (value >= 1.0 && value <= 2.5) {
|
||||
gMouseSensitivity = value;
|
||||
}
|
||||
|
||||
gMouseSensitivityDpiHorizontal = 1.0;
|
||||
gMouseSensitivityDpiVertical = 1.0;
|
||||
if (gSdlWindow) {
|
||||
int displayIndex = SDL_GetWindowDisplayIndex(gSdlWindow);
|
||||
float ddpi, hdpi, vdpi;
|
||||
if (SDL_GetDisplayDPI(displayIndex, &ddpi, &hdpi, &vdpi) == 0) {
|
||||
hdpi /= 96.0f; // 96 is standard DPI
|
||||
vdpi /= 96.0f; // 96 is standard DPI
|
||||
gMouseSensitivityDpiHorizontal = 1 / hdpi;
|
||||
gMouseSensitivityDpiVertical = 1 / vdpi;
|
||||
debugPrint("Mouse DPI scaling: horizontal = %.2f, vertical = %.2f", hdpi, vdpi);
|
||||
debugPrint("Mouse DPI sensitivity: horizontal = %.2f, vertical = %.2f", gMouseSensitivityDpiHorizontal, gMouseSensitivityDpiVertical);
|
||||
} else {
|
||||
debugPrint("Mouse DPI sensitivity is not available, SDL_GetDisplayDPI failed");
|
||||
}
|
||||
} else {
|
||||
debugPrint("Mouse DPI sensitivity is not available, SDL window is null");
|
||||
}
|
||||
}
|
||||
|
||||
void mouseGetPositionInWindow(int win, int* x, int* y)
|
||||
|
||||
@@ -54,6 +54,7 @@ void mouseGetWheel(int* x, int* y);
|
||||
void convertMouseWheelToArrowKey(int* keyCodePtr);
|
||||
int mouse_get_last_buttons();
|
||||
|
||||
extern double gMouseSensitivityScale2Xoption;
|
||||
} // namespace fallout
|
||||
|
||||
#endif /* FALLOUT_MOUSE_H_ */
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include <SDL.h>
|
||||
|
||||
#include "config.h"
|
||||
#include "debug.h"
|
||||
#include "draw.h"
|
||||
#include "interface.h"
|
||||
#include "memory.h"
|
||||
@@ -186,6 +187,14 @@ int _GNW95_init_mode_ex(int width, int height, int bpp)
|
||||
_zero_mem = _GNW95_zero_vid_mem;
|
||||
_mouse_blit = _GNW95_ShowRect;
|
||||
|
||||
if (scale != 1) {
|
||||
gMouseSensitivityScale2Xoption = 1.0 / scale;
|
||||
debugPrint("Mouse sensitivity adjusted according to scale into %f\n", gMouseSensitivityScale2Xoption);
|
||||
} else {
|
||||
gMouseSensitivityScale2Xoption = 1.0;
|
||||
debugPrint("Mouse sensitivity not adjusted for 2X scale\n");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user