mirror of
https://github.com/mkxp-z/mkxp-z.git
synced 2025-08-05 22:45:45 +02:00
misc fake-api functions for Unix
This commit is contained in:
parent
80e9291978
commit
b844c3dea2
3 changed files with 136 additions and 3 deletions
|
@ -64,6 +64,10 @@ MiniFFI_GetFunctionHandle(void *libhandle, const char *func)
|
||||||
CAPTURE(LoadLibrary);
|
CAPTURE(LoadLibrary);
|
||||||
CAPTURE(FreeLibrary);
|
CAPTURE(FreeLibrary);
|
||||||
CAPTURE(GetAsyncKeyState);
|
CAPTURE(GetAsyncKeyState);
|
||||||
|
CAPTURE(GetSystemPowerStatus);
|
||||||
|
CAPTURE(ShowWindow);
|
||||||
|
CAPTURE(SetWindowLong);
|
||||||
|
CAPTURE(GetSystemMetrics);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
if (!libhandle) return 0;
|
if (!libhandle) return 0;
|
||||||
|
|
106
src/fake-api.cpp
106
src/fake-api.cpp
|
@ -428,5 +428,111 @@ MKXP_GetAsyncKeyState(int vKey)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PREFABI BOOL
|
||||||
|
MKXP_GetSystemPowerStatus(LPSYSTEM_POWER_STATUS lpSystemPowerStatus)
|
||||||
|
{
|
||||||
|
int seconds, percent;
|
||||||
|
SDL_PowerState ps;
|
||||||
|
ps = SDL_GetPowerInfo(&seconds, &percent);
|
||||||
|
|
||||||
|
// Setting ACLineStatus
|
||||||
|
if (ps == SDL_POWERSTATE_UNKNOWN)
|
||||||
|
{
|
||||||
|
lpSystemPowerStatus->ACLineStatus = 0xFF;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lpSystemPowerStatus->ACLineStatus =
|
||||||
|
(ps == SDL_POWERSTATE_ON_BATTERY) ? 1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Setting BatteryFlag
|
||||||
|
if (ps == SDL_POWERSTATE_ON_BATTERY)
|
||||||
|
{
|
||||||
|
if (percent == -1)
|
||||||
|
{
|
||||||
|
lpSystemPowerStatus->BatteryFlag = 0xFF;
|
||||||
|
}
|
||||||
|
else if (percent >= 33)
|
||||||
|
{
|
||||||
|
lpSystemPowerStatus->BatteryFlag = 1;
|
||||||
|
}
|
||||||
|
else if (4 < percent && percent < 33)
|
||||||
|
{
|
||||||
|
lpSystemPowerStatus->BatteryFlag = 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lpSystemPowerStatus->BatteryFlag = 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (ps == SDL_POWERSTATE_CHARGING)
|
||||||
|
{
|
||||||
|
lpSystemPowerStatus->BatteryFlag = 8;
|
||||||
|
}
|
||||||
|
else if (ps == SDL_POWERSTATE_NO_BATTERY)
|
||||||
|
{
|
||||||
|
lpSystemPowerStatus->BatteryFlag = (BYTE)128;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lpSystemPowerStatus->BatteryFlag = 0xFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Setting BatteryLifePercent
|
||||||
|
lpSystemPowerStatus->BatteryLifePercent = (percent != -1) ? (BYTE)percent : 0xFF;
|
||||||
|
|
||||||
|
// Setting SystemStatusFlag
|
||||||
|
lpSystemPowerStatus->SystemStatusFlag = 0;
|
||||||
|
|
||||||
|
// Setting BatteryLifeTime
|
||||||
|
lpSystemPowerStatus->BatteryLifeTime = seconds;
|
||||||
|
|
||||||
|
// Setting BatteryFullLifeTime
|
||||||
|
lpSystemPowerStatus->BatteryFullLifeTime = -1;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
PREFABI BOOL
|
||||||
|
MKXP_ShowWindow(HWND hWnd, int nCmdShow)
|
||||||
|
NOP_VAL(true);
|
||||||
|
|
||||||
|
PREFABI LONG
|
||||||
|
MKXP_SetWindowLong(HWND hWnd, int nIndex, LONG dwNewLong)
|
||||||
|
NOP_VAL(DUMMY_VAL);
|
||||||
|
|
||||||
|
|
||||||
|
// This only currently supports getting screen width/height
|
||||||
|
// Not really motivated to do the other ones when I'll be
|
||||||
|
// extending Ruby at a later time anyway
|
||||||
|
PREFABI int
|
||||||
|
MKXP_GetSystemMetrics(int nIndex)
|
||||||
|
{
|
||||||
|
SDL_DisplayMode dm;
|
||||||
|
int rc = SDL_GetDesktopDisplayMode(
|
||||||
|
SDL_GetWindowDisplayIndex(shState->sdlWindow()),
|
||||||
|
&dm
|
||||||
|
);
|
||||||
|
if (rc)
|
||||||
|
{
|
||||||
|
switch (nIndex) {
|
||||||
|
case 0:
|
||||||
|
return dm.w;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
return dm.h;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -15,22 +15,33 @@
|
||||||
|
|
||||||
#ifndef __WIN32__
|
#ifndef __WIN32__
|
||||||
typedef unsigned int DWORD, UINT, *LPDWORD;
|
typedef unsigned int DWORD, UINT, *LPDWORD;
|
||||||
typedef char *LPCSTR, *PBYTE;
|
typedef char BYTE, *LPCSTR, *PBYTE;
|
||||||
typedef short SHORT;
|
typedef short SHORT;
|
||||||
typedef int LONG;
|
typedef int LONG;
|
||||||
typedef bool BOOL;
|
typedef bool BOOL;
|
||||||
|
typedef void VOID, *LPVOID, *HANDLE, *HMODULE, *HWND;
|
||||||
|
typedef size_t SIZE_T;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
LONG x;
|
LONG x;
|
||||||
LONG y;
|
LONG y;
|
||||||
} POINT, *LPPOINT;
|
} POINT, *LPPOINT;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
LONG left;
|
LONG left;
|
||||||
LONG top;
|
LONG top;
|
||||||
LONG right;
|
LONG right;
|
||||||
LONG bottom;
|
LONG bottom;
|
||||||
} RECT, *PRECT, *NPRECT, *LPRECT;
|
} RECT, *PRECT, *NPRECT, *LPRECT;
|
||||||
typedef void VOID, *LPVOID, *HANDLE, *HMODULE, *HWND;
|
|
||||||
typedef size_t SIZE_T;
|
typedef struct {
|
||||||
|
BYTE ACLineStatus;
|
||||||
|
BYTE BatteryFlag;
|
||||||
|
BYTE BatteryLifePercent;
|
||||||
|
BYTE SystemStatusFlag;
|
||||||
|
DWORD BatteryLifeTime;
|
||||||
|
DWORD BatteryFullLifeTime;
|
||||||
|
} SYSTEM_POWER_STATUS, *LPSYSTEM_POWER_STATUS;
|
||||||
|
|
||||||
extern std::map<int, int> vKeyToScancode;
|
extern std::map<int, int> vKeyToScancode;
|
||||||
#endif
|
#endif
|
||||||
|
@ -108,4 +119,16 @@ MKXP_FreeLibrary(HMODULE hLibModule);
|
||||||
PREFABI SHORT
|
PREFABI SHORT
|
||||||
MKXP_GetAsyncKeyState(int vKey);
|
MKXP_GetAsyncKeyState(int vKey);
|
||||||
|
|
||||||
|
PREFABI BOOL
|
||||||
|
MKXP_GetSystemPowerStatus(LPSYSTEM_POWER_STATUS lpSystemPowerStatus);
|
||||||
|
|
||||||
|
PREFABI BOOL
|
||||||
|
MKXP_ShowWindow(HWND hWnd, int nCmdShow);
|
||||||
|
|
||||||
|
PREFABI LONG
|
||||||
|
MKXP_SetWindowLong(HWND hWnd, int nIndex, LONG dwNewLong);
|
||||||
|
|
||||||
|
PREFABI int
|
||||||
|
MKXP_GetSystemMetrics(int nIndex);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Reference in a new issue