int gmread(int ev) { gm.key = KEY(ev); if(gm.key < 128) { if(RELEASED(ev)) gm.kb[gm.key] = 0; else gm.kb[gm.key] = 1; } if(gm.key == MICE_DX) { gm.ms.x += AXIS(ev); if(gm.ms.x < 0) gm.ms.x = 0; if(gm.ms.x >= gm.vfb->width) gm.ms.x = gm.vfb->width - 1; } if(gm.key == MICE_DY) { gm.ms.y += AXIS(ev); if(gm.ms.y < 0) gm.ms.y = 0; if(gm.ms.y >= gm.vfb->height) gm.ms.y = gm.vfb->height - 1; } if(gm.key == MICE_LEFT) { if(PRESSED(ev)) { gm.push.key = 1; gm.push.x = gm.ms.x; gm.push.y = gm.ms.y; } else { gm.click.key = 1; gm.click.x = gm.ms.x; gm.click.y = gm.ms.y; } } return ev; }
void KeyboardCallback(GLFWwindow *window, int key, int scancode, int action, int mods) { #define PRESSED(k) (key == k && action == GLFW_PRESS) #define RELEASED(k) (key == k && action == GLFW_RELEASE) // Left player controls if (PRESSED(GLFW_KEY_W)) { leftPlayer.setVerticalSpeed(-PLAYER_SPEED); } if (RELEASED(GLFW_KEY_W)) { leftPlayer.setVerticalSpeed(0.0f); } if (PRESSED(GLFW_KEY_S)) { leftPlayer.setVerticalSpeed(PLAYER_SPEED); } if (RELEASED(GLFW_KEY_S)) { leftPlayer.setVerticalSpeed(0.0f); } // Right player controls if (PRESSED(GLFW_KEY_UP)) { rightPlayer.setVerticalSpeed(-PLAYER_SPEED); } if (RELEASED(GLFW_KEY_UP)) { rightPlayer.setVerticalSpeed(0.0f); } if (PRESSED(GLFW_KEY_DOWN)) { rightPlayer.setVerticalSpeed(PLAYER_SPEED); } if (RELEASED(GLFW_KEY_DOWN)) { rightPlayer.setVerticalSpeed(0.0f); } // General game controls if (PRESSED(GLFW_KEY_SPACE)) { paused = !paused; } if (PRESSED(GLFW_KEY_ESCAPE)) { glfwSetWindowShouldClose(window, 1); } }
static uint16_t PAD_ButtonsUp(int ictrl) { uint16_t btn = 0; if (RELEASED(a)) { btn |= PAD_BUTTON_A; } if (RELEASED(b)) { btn |= PAD_BUTTON_B; } if (RELEASED(x)) { btn |= PAD_BUTTON_X; } if (RELEASED(y)) { btn |= PAD_BUTTON_Y; } if (RELEASED(up)) { btn |= PAD_BUTTON_UP; } if (RELEASED(down)) { btn |= PAD_BUTTON_DOWN; } if (RELEASED(left)) { btn |= PAD_BUTTON_LEFT; } if (RELEASED(right)) { btn |= PAD_BUTTON_RIGHT; } if (RELEASED(start)) { btn |= PAD_BUTTON_START; } if (RELEASED(back)) { btn |= PAD_BUTTON_BACK; } if (RELEASED(logo)) { btn |= PAD_BUTTON_LOGO; } if (RELEASED(rb)) { btn |= PAD_BUTTON_RB; } if (RELEASED(lb)) { btn |= PAD_BUTTON_LB; } if (RELEASED(s1_z)) { btn |= PAD_BUTTON_RSTICK; } if (RELEASED(s2_z)) { btn |= PAD_BUTTON_LSTICK; } return btn; }
static int JoyReleased(int btn) { switch(btn) { case XE_BTN_UP: { return RELEASED(up); } case XE_BTN_DOWN: { return RELEASED(down); } case XE_BTN_LEFT: { return RELEASED(left); } case XE_BTN_RIGHT: { return RELEASED(right); } case XE_BTN_A: { return RELEASED(a); } case XE_BTN_B: { return RELEASED(b); } case XE_BTN_X: { return RELEASED(x); } case XE_BTN_Y: { return RELEASED(y); } case XE_BTN_START: { return RELEASED(start); } case XE_BTN_BACK: { return RELEASED(back); } case XE_BTN_LOGO: { return RELEASED(logo); } case XE_BTN_RB: { return RELEASED(rb); } case XE_BTN_LB: { return RELEASED(lb); } case XE_BTN_LT: { return ctrl.lt<200; } case XE_BTN_RT: { return ctrl.rt<200; } default: return 0; } }