touchscreen input
This commit is contained in:
parent
8e7d46e717
commit
f30e19a2ec
|
@ -41,6 +41,8 @@ int EmuRunning;
|
||||||
SDL_mutex* ScreenMutex;
|
SDL_mutex* ScreenMutex;
|
||||||
uiDrawBitmap* ScreenBitmap = NULL;
|
uiDrawBitmap* ScreenBitmap = NULL;
|
||||||
|
|
||||||
|
bool Touching = false;
|
||||||
|
|
||||||
|
|
||||||
void AudioCallback(void* data, Uint8* stream, int len)
|
void AudioCallback(void* data, Uint8* stream, int len)
|
||||||
{
|
{
|
||||||
|
@ -51,6 +53,8 @@ int EmuThreadFunc(void* burp)
|
||||||
{
|
{
|
||||||
NDS::Init();
|
NDS::Init();
|
||||||
|
|
||||||
|
Touching = false;
|
||||||
|
|
||||||
// DS:
|
// DS:
|
||||||
// 547.060546875 samples per frame
|
// 547.060546875 samples per frame
|
||||||
// 32823.6328125 samples per second
|
// 32823.6328125 samples per second
|
||||||
|
@ -173,7 +177,33 @@ void OnAreaMouseEvent(uiAreaHandler* handler, uiArea* area, uiAreaMouseEvent* ev
|
||||||
{
|
{
|
||||||
int x = (int)evt->X;
|
int x = (int)evt->X;
|
||||||
int y = (int)evt->Y;
|
int y = (int)evt->Y;
|
||||||
printf("mouse: %08X %d,%d\n", (u32)evt->Held1To64, x, y);
|
|
||||||
|
if (Touching && (evt->Up == 1))
|
||||||
|
{
|
||||||
|
Touching = false;
|
||||||
|
NDS::ReleaseKey(16+6);
|
||||||
|
NDS::ReleaseScreen();
|
||||||
|
}
|
||||||
|
else if (!Touching && (evt->Down == 1) && (y >= 192))
|
||||||
|
{
|
||||||
|
Touching = true;
|
||||||
|
NDS::PressKey(16+6);
|
||||||
|
// TODO: scaling/offset as needed
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Touching)
|
||||||
|
{
|
||||||
|
// TODO: scaling, here too
|
||||||
|
y -= 192;
|
||||||
|
|
||||||
|
// clamp
|
||||||
|
if (x < 0) x = 0;
|
||||||
|
else if (x > 255) x = 255;
|
||||||
|
if (y < 0) y = 0;
|
||||||
|
else if (y > 191) y = 191;
|
||||||
|
|
||||||
|
NDS::TouchScreen(x, y);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnAreaMouseCrossed(uiAreaHandler* handler, uiArea* area, int left)
|
void OnAreaMouseCrossed(uiAreaHandler* handler, uiArea* area, int left)
|
||||||
|
|
Loading…
Reference in New Issue