Add mobile support
All checks were successful
Build & deploy web version / Build WebAssembly & deploy (push) Successful in 1m1s
All checks were successful
Build & deploy web version / Build WebAssembly & deploy (push) Successful in 1m1s
This commit is contained in:
parent
6e4f0428dc
commit
c4f7565d18
3 changed files with 567 additions and 69 deletions
|
|
@ -59,25 +59,27 @@ void drawOptionsMenu(int deltaTime, int currentOptions[], bool click) {
|
|||
);
|
||||
|
||||
filledCircleColor(screen, (float) screen -> w / 100 * (30 + 0.4 * 100 * (float)(currentOptions[i] - minOptions[i]) / (maxOptions[i] - minOptions[i])),
|
||||
(float) screen -> h / 100 * (optionsStart + i * optionsTav), larger(4, 20 * screen -> h / designHeight), 0xFFFFFFFF
|
||||
(float) screen -> h / 100 * (optionsStart + i * optionsTav), larger(4, (int)(20 * uiScale())), 0xFFFFFFFF
|
||||
);
|
||||
aacircleColor(screen, (float) screen -> w / 100 * (30 + 0.4 * 100 * (float)(currentOptions[i] - minOptions[i]) / (maxOptions[i] - minOptions[i])),
|
||||
(float) screen -> h / 100 * (optionsStart + i * optionsTav), larger(4, 20 * screen -> h / designHeight), 0xFFFFFFFF
|
||||
(float) screen -> h / 100 * (optionsStart + i * optionsTav), larger(4, (int)(20 * uiScale())), 0xFFFFFFFF
|
||||
);
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
if(click)
|
||||
for(i = 0; i < 5; i++)
|
||||
if(click) {
|
||||
for(i = 0; i < 5; i++) {
|
||||
if(isMouseOverRect(50, optionsStart + optionsTav * i, 50, optionsTav / 2)) {
|
||||
//Ezek nem magic számok, csak egy kicsit.
|
||||
currentOptions[i] = minOptions[i] + (int)((maxOptions[i] - minOptions[i]) * (getMousePosition().x - screen -> w * 0.3) / (screen -> w * 0.4) );
|
||||
putInsideInterval(minOptions[i], ¤tOptions[i], maxOptions[i]);
|
||||
//Ezek nem magic számok, csak egy kicsit.
|
||||
currentOptions[i] = minOptions[i] + (int)((maxOptions[i] - minOptions[i]) * (getMousePosition().x - screen -> w * 0.3) / (screen -> w * 0.4) );
|
||||
putInsideInterval(minOptions[i], ¤tOptions[i], maxOptions[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
printBack();
|
||||
drawMenuParticles(deltaTime);
|
||||
printBack();
|
||||
drawMenuParticles(deltaTime);
|
||||
}
|
||||
|
||||
///A játék leírását rajzolja meg.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include "menuFSM.h"
|
||||
#include "../touch.h"
|
||||
|
||||
|
||||
int currentOptions[] = {2000, 2000, 3, 450, 6000};
|
||||
|
|
@ -86,6 +87,14 @@ void handleClicks(bool* prematureClick) {
|
|||
if(isMouseOverRect(50, menuStart + menuTav*5, 15, menuTav/2))
|
||||
gameState = mainMenu;
|
||||
break;
|
||||
|
||||
case nameInput:
|
||||
case fading:
|
||||
case initGame:
|
||||
case initLoadedGame:
|
||||
case quit:
|
||||
//ezekben az állapotokban a kattintásnak nincs hatása
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -183,8 +192,16 @@ void doStuff(bool isLMBDown, bool isRMBDown, bool prematureClick) {
|
|||
snprintf(loseText, sizeof(loseText), "%s%s vesztett, a pontszáma %d.", typedName, cursorBlinking > 500 ? "|" : "", getPoints());
|
||||
utf8PrintCentered(loseText, 50, 50, small);
|
||||
break;
|
||||
|
||||
case quit:
|
||||
//a kilépésről a main gondoskodik, itt már nincs mit rajzolni
|
||||
break;
|
||||
}
|
||||
//érintéssel nincs kurzor, helyette a képernyőre rajzolt gombok látszanak
|
||||
if(isAlive()) {
|
||||
drawTouchControls();
|
||||
if(shouldDrawCursor()) drawMouse(isInSlowMo);
|
||||
}
|
||||
if(isAlive()) drawMouse(isInSlowMo);
|
||||
}
|
||||
|
||||
///A nameInputból returnnel és ESC-vel is ki lehet lépni, ezért kell ez a függvény rá, amit mindkét esetben meg lehet hívni.
|
||||
|
|
@ -238,6 +255,30 @@ void processTyping(SDL_Event event) {
|
|||
}
|
||||
}
|
||||
|
||||
/** \brief A név teljes tartalmát cseréli le, a böngésző beviteli mezőjéhez.
|
||||
* A mobilos billentyűzet nem karakterenként érkezik: a html mező mindig a teljes szövegét
|
||||
* küldi el, mert így a törlés, a javítás és a szövegbeillesztés is magától jó lesz.
|
||||
*/
|
||||
void setNameInput(const char* utf8) {
|
||||
if(gameState != nameInput) return;
|
||||
|
||||
wchar_t typed[sizeof(name) / sizeof(wchar_t)];
|
||||
int count = utf8ToWide(utf8, typed, sizeof(typed) / sizeof(wchar_t));
|
||||
|
||||
nameIndex = 0;
|
||||
int i;
|
||||
for(i = 0; i < count; i++)
|
||||
if(isValidChar(typed[i]) && nameIndex < (int) (sizeof(name) / sizeof(wchar_t)) - 1)
|
||||
name[nameIndex++] = typed[i];
|
||||
|
||||
name[nameIndex] = 0;
|
||||
}
|
||||
|
||||
///A böngésző beviteli mezőjének lezárása ugyanaz, mint az enter megnyomása.
|
||||
void submitNameInput() {
|
||||
escapeFromNameInput();
|
||||
}
|
||||
|
||||
///A beírt karaktereket utf-8-ból átalakítva fűzi a névhez.
|
||||
void processTextInput(const char* utf8) {
|
||||
if(gameState == nameInput) {
|
||||
|
|
|
|||
|
|
@ -18,5 +18,7 @@
|
|||
void whatToDoOnEscape();
|
||||
void processTyping(SDL_Event event);
|
||||
void processTextInput(const char* utf8);
|
||||
void setNameInput(const char* utf8);
|
||||
void submitNameInput();
|
||||
|
||||
#endif // MENUFSM_H_INCLUDED
|
||||
|
|
|
|||
Loading…
Reference in a new issue