Files
RustRaptor/raptor/src/imsapi.cpp
T
raptorreplica f7c9b7a02d Vendor raptor source files (was embedded gitlink)
Tree vendored at upstream 0019c5dd; origin + license recorded in
raptor/VENDOR.txt. Windows SDL dev packages excluded via .gitignore.
2026-08-25 22:08:42 +10:00

125 lines
2.5 KiB
C++

#include <stdio.h>
#include "i_video.h"
#include "common.h"
#include "ptrapi.h"
#include "imsapi.h"
#include "kbdapi.h"
#include "joyapi.h"
/***************************************************************************
IMS_StartAck () - Starts up checking for a happening
***************************************************************************/
void
IMS_StartAck(
void
)
{
KBD_Clear();
mouse_b1_ack = 0;
mouse_b2_ack = 0;
mouse_b3_ack = 0;
kbd_ack = 0;
joy_ack = 0;
}
/***************************************************************************
IMS_CheckAck () - Tells if something has happend since last IMS_StartAck
***************************************************************************/
int
IMS_CheckAck(
void
)
{
I_GetEvent();
int rval;
rval = 0;
if (mouse_b1_ack)
rval = 1;
if (mouse_b2_ack)
rval = 1;
if (kbd_ack)
rval = 1;
if (joy_ack)
rval = 1;
return rval;
}
/***************************************************************************
IMS_IsAck() - Returns TRUE if ptr button or key pressed
***************************************************************************/
int
IMS_IsAck(
void
)
{
I_GetEvent();
if (Up || Down || Left || Right || Start || Back || LeftShoulder || RightShoulder || AButton || BButton || XButton || YButton)
{
return 1;
}
if (lastscan)
{
lastscan = 0;
return 1;
}
if (mouseb1 || mouseb2 || mouseb3)
return 1;
return 0;
}
/***************************************************************************
IMS_WaitTimed() - Wait for aprox secs
***************************************************************************/
int // RETURN: keypress (lastscan)
IMS_WaitTimed(
int secs // INPUT : seconds to wait
)
{
int loop, hold, rval;
rval = 0;
lastscan = 0;
IMS_StartAck();
while (secs > 0)
{
for (loop = 0; loop < 55; loop++)
{
hold = GFX_GetFrameCount();
while (GFX_GetFrameCount() == hold)
{
I_GetNeedResize(false);
}
if (IMS_CheckAck())
{
rval = 1;
goto end_func;
}
}
I_GetNeedResize(false);
secs--;
}
end_func:
loop = 100;
while (IMS_IsAck())
{
loop--;
}
IMS_StartAck();
return rval;
}