mirror of
https://gitlab.com/shinovon/re3-symbian.git
synced 2026-05-22 17:47:20 +03:00
Improve touch controls
This commit is contained in:
parent
6c644421fd
commit
52c4681c0c
2 changed files with 73 additions and 46 deletions
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
do {
|
||||
int cy = (h * 2) / 5;
|
||||
if (x < w / 4) {
|
||||
// dpad
|
||||
int b = 0;
|
||||
if (y < 125) {
|
||||
int cx = w / 8;
|
||||
if (c(x, y, cx - 20, cy - 60, 40, 30)) {
|
||||
b = JOY_DPAD_UP;
|
||||
} else if (y > 155) {
|
||||
} else if (c(x, y, cx - 20, cy + 30, 40, 40)) {
|
||||
b = JOY_DPAD_DOWN;
|
||||
} else if (x < w / 8) {
|
||||
} else if (c(x, y, cx - 75, cy - 20, 40, 40)) {
|
||||
b = JOY_DPAD_LEFT;
|
||||
} else {
|
||||
} 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 (y < 125) {
|
||||
if (c(x, y, cx - 20, cy - 60, 40, 40)) {
|
||||
b = JOY_Y;
|
||||
} else if (y > 155) {
|
||||
} else if (c(x, y, cx - 20, cy + 30, 40, 40)) {
|
||||
b = JOY_B;
|
||||
} else if (x < w - w / 8) {
|
||||
} else if (c(x, y, cx - 75, cy - 20, 40, 40)) {
|
||||
b = JOY_X;
|
||||
} else {
|
||||
} else if (c(x, y, cx + 35, cy - 20, 40, 40)) {
|
||||
b = JOY_A;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
activeZone[i] = b + 1;
|
||||
virtualButtons[b] = 1;
|
||||
}
|
||||
} while (0);
|
||||
}
|
||||
} else if (aPointerEvent.iType == TPointerEvent::EDrag) {
|
||||
if (activeZone[i] == -1 || activeZone[i] == -2) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue