diff --git a/src/renderer/Hud.cpp b/src/renderer/Hud.cpp index 7b9e0dd..acd548c 100644 --- a/src/renderer/Hud.cpp +++ b/src/renderer/Hud.cpp @@ -1325,6 +1325,7 @@ void CHud::DrawAfterFade() if (touch) { // FIXME int w = 640; + int h = 360; int y = 0; { CFont::SetJustifyOff(); @@ -1349,11 +1350,30 @@ void CHud::DrawAfterFade() CSprite2d::DrawRect(CRECT(w - 180 - 90, 6 + y, 90, 20), CRGBA(0, 0, 0, 128)); PRINT("R2", w - 180 - 90, 12 + y, 90); - // select, start - CSprite2d::DrawRect(CRECT(320 - 80, 286 + y, 60, 20), CRGBA(0, 0, 0, 128)); - PRINT("select", 320 - 80, 290 + y, 60); - CSprite2d::DrawRect(CRECT(320 + 20, 286 + y, 60, 20), CRGBA(0, 0, 0, 128)); - PRINT("start", 320 + 20, 290 + y, 60); + int cy = (h * 2) / 5; + int b = 14; //(40 - 12) / 2; + + // dpad + int cx = w / 8; + CSprite2d::DrawRect(CRECT(cx - 20, cy - 60, 40, 40), CRGBA(0, 0, 0, 128)); + PRINT("\"", cx - 15, cy - 60 + b, 30); + CSprite2d::DrawRect(CRECT(cx - 20, cy + 30, 40, 40), CRGBA(0, 0, 0, 128)); + PRINT("v", cx - 15, cy + 30 + b, 30); + CSprite2d::DrawRect(CRECT(cx - 75, cy - 20, 40, 40), CRGBA(0, 0, 0, 128)); + PRINT("<", cx - 75 + 8, cy - 20 + b, 30); + CSprite2d::DrawRect(CRECT(cx + 35, cy - 20, 40, 40), CRGBA(0, 0, 0, 128)); + PRINT(">", cx + 35 + 10, cy - 20 + b, 30); + + // abxy + cx = w - w / 8; + CSprite2d::DrawRect(CRECT(cx - 20, cy - 60, 40, 40), CRGBA(0, 0, 0, 128)); + PRINT("\"", cx - 15, cy - 60 + b, 30); + CSprite2d::DrawRect(CRECT(cx - 20, cy + 30, 40, 40), CRGBA(0, 0, 0, 128)); + PRINT("X", cx - 15, cy + 30 + b, 30); + CSprite2d::DrawRect(CRECT(cx - 75, cy - 20, 40, 40), CRGBA(0, 0, 0, 128)); + PRINT("[]", cx - 75 + 12, cy - 20 + b, 30); + CSprite2d::DrawRect(CRECT(cx + 35, cy - 20, 40, 40), CRGBA(0, 0, 0, 128)); + PRINT("|", cx + 35 + 10, cy - 20 + b, 30); // l3, r3 CSprite2d::DrawRect(CRECT(320 - 80, 254 + y, 60, 20), CRGBA(0, 0, 0, 128)); @@ -1361,19 +1381,13 @@ void CHud::DrawAfterFade() CSprite2d::DrawRect(CRECT(320 + 20, 254 + y, 60, 20), CRGBA(0, 0, 0, 128)); PRINT("R3", 320 + 20, 258 + y, 60); - // dpad - CSprite2d::DrawRect(CRECT(0, 80 + y, w / 4, 120), CRGBA(0, 0, 0, 128)); - PRINT("\"", w / 8 - 15, 90 + y, 30); - PRINT("v", w / 8 - 15, 160 + y, 30); - PRINT("<", w / 8 - 60, 125 + y, 30); - PRINT(">", w / 8 + 30, 125 + y, 30); + CFont::SetScale(0.65f, 0.65f); - // abxy - CSprite2d::DrawRect(CRECT(w - w / 4, 80 + y, w / 4, 120), CRGBA(0, 0, 0, 128)); - PRINT("\"", w - w / 8 - 15, 90 + y, 30); - PRINT("X", w - w / 8 - 15, 160 + y, 30); - PRINT("[]", w - w / 8 - 60, 125 + y, 30); - PRINT("|", w - w / 8 + 30, 125 + y, 30); + // select, start + CSprite2d::DrawRect(CRECT(320 - 80, 286 + y, 60, 20), CRGBA(0, 0, 0, 128)); + PRINT("SELECT", 320 - 80, 290 + y, 60); + CSprite2d::DrawRect(CRECT(320 + 20, 286 + y, 60, 20), CRGBA(0, 0, 0, 128)); + PRINT("START", 320 + 20, 290 + y, 60); #undef PRINT #undef CRECT } diff --git a/src/skel/symbian/symbian.cpp b/src/skel/symbian/symbian.cpp index fdb5ea5..b8f38ae 100644 --- a/src/skel/symbian/symbian.cpp +++ b/src/skel/symbian/symbian.cpp @@ -625,6 +625,10 @@ public: RestartTimerL(10000); } + static bool c(int px, int py, int x, int y, int w, int h) { + return px >= x && py >= y && px <= x + w && py <= y + h; + } + virtual void HandlePointerEventL(const TPointerEvent& aPointerEvent) { touch = true; int x = aPointerEvent.iPosition.iX; @@ -683,7 +687,7 @@ public: activeZone[i] = JOY_R2 + 1; virtualButtons[JOY_R2] = 1; } - } else if (y > 200 && y <= 360 && (x < 200 || x > w - 200)) { + } else if (y > 220 && y <= 360 && (x < 200 || x > w - 200)) { if (x < 200) { activeZone[i] = -1; stickCenterX[i] = x; @@ -712,35 +716,44 @@ public: virtualButtons[JOY_R3] = 1; } } else if (y >= 80 && y <= 80 + 120) { - if (x < w / 4) { - // dpad - int b = 0; - if (y < 125) { - b = JOY_DPAD_UP; - } else if (y > 155) { - b = JOY_DPAD_DOWN; - } else if (x < w / 8) { - b = JOY_DPAD_LEFT; - } else { - b = JOY_DPAD_RIGHT; + do { + int cy = (h * 2) / 5; + if (x < w / 4) { + // dpad + int b = 0; + int cx = w / 8; + if (c(x, y, cx - 20, cy - 60, 40, 30)) { + b = JOY_DPAD_UP; + } else if (c(x, y, cx - 20, cy + 30, 40, 40)) { + b = JOY_DPAD_DOWN; + } else if (c(x, y, cx - 75, cy - 20, 40, 40)) { + b = JOY_DPAD_LEFT; + } else if (c(x, y, cx + 35, cy - 20, 40, 40)) { + b = JOY_DPAD_RIGHT; + } else { + break; + } + activeZone[i] = b + 1; + virtualButtons[b] = 1; + } else if (x > w - w / 4) { + // abxy + int cx = w - w / 8; + int b = 0; + if (c(x, y, cx - 20, cy - 60, 40, 40)) { + b = JOY_Y; + } else if (c(x, y, cx - 20, cy + 30, 40, 40)) { + b = JOY_B; + } else if (c(x, y, cx - 75, cy - 20, 40, 40)) { + b = JOY_X; + } else if (c(x, y, cx + 35, cy - 20, 40, 40)) { + b = JOY_A; + } else { + break; + } + activeZone[i] = b + 1; + virtualButtons[b] = 1; } - activeZone[i] = b + 1; - virtualButtons[b] = 1; - } else if (x > w - w / 4) { - // abxy - int b = 0; - if (y < 125) { - b = JOY_Y; - } else if (y > 155) { - b = JOY_B; - } else if (x < w - w / 8) { - b = JOY_X; - } else { - b = JOY_A; - } - activeZone[i] = b + 1; - virtualButtons[b] = 1; - } + } while (0); } } else if (aPointerEvent.iType == TPointerEvent::EDrag) { if (activeZone[i] == -1 || activeZone[i] == -2) {