Push SimulateKeyboard différencie MAJ et MIN

This commit is contained in:
mduval76 2023-12-08 21:45:19 -05:00
parent d6b1870b5b
commit 9562dc00b8
2 changed files with 126 additions and 95 deletions

View File

@ -714,7 +714,12 @@ void Engine::DisplaySplashScreen() {
glPopMatrix(); glPopMatrix();
} }
void Engine::DisplayLobbyMenu() { void Engine::DisplayLobbyMenu(float elapsedTime) {
static float lobbyTime = 0.0f;
lobbyTime += elapsedTime;
float onInterval = 0.5f;
float offInterval = 1.0f;
GLint viewport[4]; GLint viewport[4];
glGetIntegerv(GL_VIEWPORT, viewport); glGetIntegerv(GL_VIEWPORT, viewport);
@ -748,22 +753,29 @@ void Engine::DisplayLobbyMenu() {
glTexCoord2f(0, 1); glVertex2i(Width() * 0.6, Height() * 0.95); glTexCoord2f(0, 1); glVertex2i(Width() * 0.6, Height() * 0.95);
glEnd(); glEnd();
//glBindTexture(GL_TEXTURE_2D, 0); glBlendFunc(GL_SRC_ALPHA, GL_ONE);
//glBegin(GL_QUADS);
//glTexCoord2f(0, 0); glVertex2i(Width() * 0.6, Height() * 0.4);
//glTexCoord2f(1, 0); glVertex2i(Width() * 0.975, Height() * 0.4);
//glTexCoord2f(1, 1); glVertex2i(Width() * 0.975, Height() * 0.475);
//glTexCoord2f(0, 1); glVertex2i(Width() * 0.6, Height() * 0.475);
//glEnd();
m_textureFont.Bind(); m_textureFont.Bind();
std::ostringstream ss; std::ostringstream ss;
glColor4f(1.0f, 1.0f, 1.0f, 1.0f); glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
ss.str("");
ss << "_____________________";
PrintText(Width() * 0.6f, Height() * 0.4f, ss.str(), 2.5f);
ss.str("");
if (m_charChanged) {
ss << m_inputChar;
}
if (lobbyTime < onInterval) {
ss << "_";
}
else if (lobbyTime > onInterval && lobbyTime < offInterval) {
ss << " ";
}
else {
lobbyTime -= offInterval;
}
PrintText(Width() * 0.6f, Height() * 0.4f, ss.str(), 2.0f);
glDisable(GL_BLEND);
glColor4f(1.0f, 1.0f, 1.0f, 1.0f); glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
glViewport(viewport[0], viewport[1], viewport[2], viewport[3]); glViewport(viewport[0], viewport[1], viewport[2], viewport[3]);
@ -1214,7 +1226,7 @@ void Engine::Render(float elapsedTime) {
} }
if (m_gamestate == GameState::LOBBY) { if (m_gamestate == GameState::LOBBY) {
DisplayLobbyMenu(); DisplayLobbyMenu(elapsedTime);
return; return;
} }
@ -1507,9 +1519,11 @@ void Engine::DrawSlider(float centerX, float centerY, float value, float minVal,
} }
} }
void Engine::KeyPressEvent(unsigned char key) { void Engine::KeyPressEvent(unsigned char key) {
if (m_gamestate == LOBBY) {
m_inputChar = SimulateKeyboard(key);
return;
}
switch (key) { switch (key) {
case 0: // A - Gauche case 0: // A - Gauche
if (!m_keyA) { if (!m_keyA) {
@ -1540,9 +1554,6 @@ void Engine::KeyPressEvent(unsigned char key) {
} }
//Stop(); //Stop();
break; break;
case 38: // Shift
m_keyShift = true;
break;
case 57: // Space - Sauter case 57: // Space - Sauter
if (!m_keySpace) { if (!m_keySpace) {
m_keySpace = true; m_keySpace = true;
@ -1593,6 +1604,12 @@ void Engine::KeyPressEvent(unsigned char key) {
} }
void Engine::KeyReleaseEvent(unsigned char key) { void Engine::KeyReleaseEvent(unsigned char key) {
if (m_gamestate == LOBBY) {
if (key == 38) {
m_keyShift = false;
}
return;
}
switch (key) { switch (key) {
case 0: // A - Stop gauche case 0: // A - Stop gauche
m_keyA = false; m_keyA = false;
@ -1713,162 +1730,172 @@ void Engine::MouseMoveEvent(int x, int y) {
char Engine::SimulateKeyboard(unsigned char key) { char Engine::SimulateKeyboard(unsigned char key) {
switch (key) { switch (key) {
case 0: // A case 0: // A
if (!m_keyShift) { return 'a'; } if (!m_keyShift) { m_inputChar = 'a'; }
else { return 'A'; } else { m_inputChar = 'A'; }
break; break;
case 1: // B case 1: // B
if (!m_keyShift) { return 'b'; } if (!m_keyShift) { m_inputChar = 'b'; }
else { return 'B'; } else { m_inputChar = 'B'; }
break; break;
case 2: // C case 2: // C
if (!m_keyShift) { return 'c'; } if (!m_keyShift) { m_inputChar = 'c'; }
else { return 'C'; } else { m_inputChar = 'C'; }
break; break;
case 3: // D case 3: // D
if (!m_keyShift) { return 'd'; } if (!m_keyShift) { m_inputChar = 'd'; }
else { return 'D'; } else { m_inputChar = 'D'; }
break; break;
case 4: // E case 4: // E
if (!m_keyShift) { return 'e'; } if (!m_keyShift) { m_inputChar = 'e'; }
else { return 'E'; } else { m_inputChar = 'E'; }
break; break;
case 5: // F case 5: // F
if (!m_keyShift) { return 'f'; } if (!m_keyShift) { m_inputChar = 'f'; }
else { return 'F'; } else { m_inputChar = 'F'; }
break; break;
case 6: // G case 6: // G
if (!m_keyShift) { return 'g'; } if (!m_keyShift) { m_inputChar = 'g'; }
else { return 'G'; } else { m_inputChar = 'G'; }
break; break;
case 7: // H case 7: // H
if (!m_keyShift) { return 'h'; } if (!m_keyShift) { m_inputChar = 'h'; }
else { return 'H'; } else { m_inputChar = 'H'; }
break; break;
case 8: // I case 8: // I
if (!m_keyShift) { return 'i'; } if (!m_keyShift) { m_inputChar = 'i'; }
else { return 'I'; } else { m_inputChar = 'I'; }
break; break;
case 9: // J case 9: // J
if (!m_keyShift) { return 'j'; } if (!m_keyShift) { m_inputChar = 'j'; }
else { return 'J'; } else { m_inputChar = 'J'; }
break; break;
case 10: // K case 10: // K
if (!m_keyShift) { return 'k'; } if (!m_keyShift) { m_inputChar = 'k'; }
else { return 'K'; } else { m_inputChar = 'K'; }
break; break;
case 11: // L case 11: // L
if (!m_keyShift) { return 'l'; } if (!m_keyShift) { m_inputChar = 'l'; }
else { return 'L'; } else { m_inputChar = 'L'; }
break; break;
case 12: // M case 12: // M
if (!m_keyShift) { return 'm'; } if (!m_keyShift) { m_inputChar = 'm'; }
else { return 'M'; } else { m_inputChar = 'M'; }
break; break;
case 13: // N case 13: // N
if (!m_keyShift) { return 'n'; } if (!m_keyShift) { m_inputChar = 'n'; }
else { return 'N'; } else { m_inputChar = 'N'; }
break; break;
case 14: // O case 14: // O
if (!m_keyShift) { return 'o'; } if (!m_keyShift) { m_inputChar = 'o'; }
else { return 'O'; } else { m_inputChar = 'O'; }
break; break;
case 15: // P case 15: // P
if (!m_keyShift) { return 'p'; } if (!m_keyShift) { m_inputChar = 'p'; }
else { return 'P'; } else { m_inputChar = 'P'; }
break; break;
case 16: // Q case 16: // Q
if (!m_keyShift) { return 'q'; } if (!m_keyShift) { m_inputChar = 'q'; }
else { return 'Q'; } else { m_inputChar = 'Q'; }
break; break;
case 17: // R case 17: // R
if (!m_keyShift) { return 'r'; } if (!m_keyShift) { m_inputChar = 'r'; }
else { return 'R'; } else { m_inputChar = 'R'; }
break; break;
case 18: // S case 18: // S
if (!m_keyShift) { return 's'; } if (!m_keyShift) { m_inputChar = 's'; }
else { return 'S'; } else { m_inputChar = 'S'; }
break; break;
case 19: // T case 19: // T
if (!m_keyShift) { return 't'; } if (!m_keyShift) { m_inputChar = 't'; }
else { return 'T'; } else { m_inputChar = 'T'; }
break; break;
case 20: // U case 20: // U
if (!m_keyShift) { return 'u'; } if (!m_keyShift) { m_inputChar = 'u'; }
else { return 'U'; } else { m_inputChar = 'U'; }
break; break;
case 21: // V case 21: // V
if (!m_keyShift) { return 'v'; } if (!m_keyShift) { m_inputChar = 'v'; }
else { return 'V'; } else { m_inputChar = 'V'; }
break; break;
case 22: // W case 22: // W
if (!m_keyShift) { return 'w'; } if (!m_keyShift) { m_inputChar = 'w'; }
else { return 'W'; } else { m_inputChar = 'W'; }
break; break;
case 23: // X case 23: // X
if (!m_keyShift) { return 'x'; } if (!m_keyShift) { m_inputChar = 'x'; }
else { return 'X'; } else { m_inputChar = 'X'; }
break; break;
case 24: // Y case 24: // Y
if (!m_keyShift) { return 'y'; } if (!m_keyShift) { m_inputChar = 'y'; }
else { return 'Y'; } else { m_inputChar = 'Y'; }
break; break;
case 25: // Z case 25: // Z
if (!m_keyShift) { return 'z'; } if (!m_keyShift) { m_inputChar = 'z'; }
else { return 'Z'; } else { m_inputChar = 'Z'; }
break; break;
case 26: // 0 case 26: // 0
if (!m_keyShift) { return '0'; } if (!m_keyShift) { m_inputChar = '0'; }
else { return ')'; } else { m_inputChar = ')'; }
break; break;
case 27: // 1 case 27: // 1
if (!m_keyShift) { return '1'; } if (!m_keyShift) { m_inputChar = '1'; }
else { return '!'; } else { m_inputChar = '!'; }
break; break;
case 28: // 2 case 28: // 2
if (!m_keyShift) { return '2'; } if (!m_keyShift) { m_inputChar = '2'; }
else { return '\"'; } else { m_inputChar = '\"'; }
break; break;
case 29: // 3 case 29: // 3
if (!m_keyShift) { return '3'; } if (!m_keyShift) { m_inputChar = '3'; }
else { return '/'; } else { m_inputChar = '/'; }
break; break;
case 30: // 4 case 30: // 4
if (!m_keyShift) { return '4'; } if (!m_keyShift) { m_inputChar = '4'; }
else { return '$'; } else { m_inputChar = '$'; }
break; break;
case 31: // 5 case 31: // 5
if (!m_keyShift) { return '5'; } if (!m_keyShift) { m_inputChar = '5'; }
else { return '%'; } else { m_inputChar = '%'; }
break; break;
case 32: // 6 case 32: // 6
if (!m_keyShift) { return '6'; } if (!m_keyShift) { m_inputChar = '6'; }
else { return '?'; } else { m_inputChar = '?'; }
break; break;
case 33: // 7 case 33: // 7
if (!m_keyShift) { return '7'; } if (!m_keyShift) { m_inputChar = '7'; }
else { return '&'; } else { m_inputChar = '&'; }
break; break;
case 34: // 8 case 34: // 8
if (!m_keyShift) { return '8'; } if (!m_keyShift) { m_inputChar = '8'; }
else { return '*'; } else { m_inputChar = '*'; }
break; break;
case 35: // 9 case 35: // 9
if (!m_keyShift) { return '9'; } if (!m_keyShift) { m_inputChar = '9'; }
else { return '(A)'; } else { m_inputChar = ')'; }
break; break;
case 36: // SPACE case 36: // SPACE
return ' '; m_inputChar = ' ';
break;
case 38: // SHIFT
m_keyShift = true;
break; break;
case 50: // . (Period) case 50: // . (Period)
return '.'; m_inputChar = '.';
break; break;
case 56: // _ (Underscore) case 56: // _ (Underscore)
if (!m_keyShift) { return '-'; } if (!m_keyShift) { m_inputChar = '-'; }
else { return '_'; } else { m_inputChar = '_'; }
break; break;
default: default:
break; break;
} }
if ((int)key != 38) {
std::cout << "Key pressed: " << (int)key << " (" << m_inputChar << ")" << std::endl;
}
m_charChanged = true;
return m_inputChar;
} }
void Engine::MousePressEvent(const MOUSE_BUTTON& button, int x, int y) { void Engine::MousePressEvent(const MOUSE_BUTTON& button, int x, int y) {

View File

@ -62,7 +62,7 @@ private:
void DisplayInfo(float elapsedTime, BlockType bloc); void DisplayInfo(float elapsedTime, BlockType bloc);
void DisplaySplashScreen(); void DisplaySplashScreen();
void DisplayLobbyMenu(); void DisplayLobbyMenu(float elapsedTime);
void DisplayMainMenu(); void DisplayMainMenu();
void DrawButtonBackgrounds(float centerX, float centerY, int iterations); void DrawButtonBackgrounds(float centerX, float centerY, int iterations);
@ -202,6 +202,9 @@ private:
bool m_selectedPlayOptions = false; bool m_selectedPlayOptions = false;
bool m_selectedOptions = false; bool m_selectedOptions = false;
bool m_selectedQuit = false; bool m_selectedQuit = false;
char m_inputChar = 0;
bool m_charChanged = false;
bool m_key1 = false; bool m_key1 = false;
bool m_key2 = false; bool m_key2 = false;
@ -211,6 +214,7 @@ private:
bool m_keyA = false; bool m_keyA = false;
bool m_keyS = false; bool m_keyS = false;
bool m_keyD = false; bool m_keyD = false;
bool m_keyEnter = false;
bool m_keySpace = false; bool m_keySpace = false;
bool m_keyShift = false; bool m_keyShift = false;