#include #include #include #include #include "engine.hh" class Glcc : public Engine { void process_input(); void displayStuff(); void gameLoop() override { process_input(); displayStuff(); } }; void Glcc::displayStuff() { glClear(GL_COLOR_BUFFER_BIT); // clang-format off glPushMatrix(); glRotatef(angle, 0, 0, 1); glColor3f(0.5f, 0.0f, 1.0f); glBegin(GL_POLYGON); glColor3f(1.0f, 0.0f, 0.0f); glVertex3fNormalized(0.25f, 0.25f, 0.0f); glColor3f(0.0f, 1.0f, 0.0f); glVertex3fNormalized(0.75f, 0.25f, 0.0f); glColor3f(0.0f, 0.0f, 1.0f); glVertex3fNormalized(0.75f, 0.75f, 0.0f); glColor3f(1.0f, 1.0f, 1.0f); glVertex3fNormalized(0.25f, 0.75f, 0.0f); glEnd(); glPopMatrix(); // clang-format on if (thirtyfps) { vid_waitvbl(); vid_waitvbl(); } glKosSwapBuffers(); } void Glcc::process_input() { maple_device_t* controller; cont_state_t* controller_state; controller = maple_enum_type(0, MAPLE_FUNC_CONTROLLER); if (controller) { controller_state = (cont_state_t*)maple_dev_status(controller); if (!controller_state) { printf( "An error has occured while trying to read the " "controller.\n"); } pressButton(controller_state, CONT_DPAD_LEFT, [&]() { speed -= 1.0f; }); pressButton(controller_state, CONT_DPAD_RIGHT, [&]() { speed += 1.0f; }); pressButton(controller_state, CONT_A, [&]() { thirtyfps = !thirtyfps; }); speed = std::clamp(speed, 1.0f, 10.0f); angle += (controller_state->joyx / 127.0f) * deltaTime * speed; } } int main() { Glcc* engine = new Glcc; engine->initializeEngine(); engine->initializeGameLoop(); }