diff --git a/base/BlackberryMain.cpp b/base/BlackberryMain.cpp index 98026d9b9..86467e498 100644 --- a/base/BlackberryMain.cpp +++ b/base/BlackberryMain.cpp @@ -116,7 +116,6 @@ const int buttonMappings[18] = { }; void SimulateGamepad(InputState *input) { - input->pad_buttons = 0; input->pad_lstick_x = 0; input->pad_lstick_y = 0; input->pad_rstick_x = 0; @@ -370,7 +369,7 @@ int main(int argc, char *argv[]) { int screen_resolution[2]; screen_get_display_property_iv(screen_disp, SCREEN_PROPERTY_SIZE, screen_resolution); double diagonal_pixels = sqrt(screen_resolution[0] * screen_resolution[0] + screen_resolution[1] * screen_resolution[1]); - double diagonal_inches = 0.0393700787 * sqrt(screen_phys_size[0] * screen_phys_size[0] + screen_phys_size[1] * screen_phys_size[1]); + double diagonal_inches = 0.0393700787 * sqrt(screen_phys_size[0] * screen_phys_size[0] + screen_phys_size[1] * screen_phys_size[1]); int dpi = (int)(diagonal_pixels / diagonal_inches + 0.5); #endif float dpi_scale = 213.6f / dpi; @@ -444,6 +443,12 @@ int main(int argc, char *argv[]) { input_state.pad_buttons |= (1<pad_lstick_x = 0; + input->pad_lstick_y = 0; + input->pad_rstick_x = 0; + input->pad_rstick_y = 0; + + if (input->pad_buttons | (1<<14)) + input->pad_lstick_y=1; + else if (input->pad_buttons | (1<<15)) + input->pad_lstick_y=-1; + if (input->pad_buttons | (1<<16)) + input->pad_lstick_x=-1; + else if (input->pad_buttons | (1<<17)) + input->pad_lstick_x=1; +} + float CalculateDPIScale() { // Calculate DPI from TWIPS on Symbian #ifdef __SYMBIAN32__ - TSize sizeTwips = CEikonEnv::Static()->ScreenDevice()->SizeInTwips(); + TSize sTwips = CEikonEnv::Static()->ScreenDevice()->SizeInTwips(); float dpi = sqrt((float)(pixel_xres*pixel_xres + pixel_yres*pixel_yres)) - / (sqrt((float)(sizeTwips.iHeight*sizeTwips.iHeight + sizeTwips.iWidth*sizeTwips.iWidth)) / KTwipsPerInch); + / (sqrt((float)(sTwips.iHeight*sTwips.iHeight + sTwips.iWidth*sTwips.iWidth)) / KTwipsPerInch); return dpi / 170.0f; #else + // Sane default for Blackberry and Meego return 1.2f; #endif } @@ -41,10 +58,16 @@ int main(int argc, char *argv[]) QT_TRAP_THROWING(dynamic_cast(CEikonEnv::Static()->AppUi())->SetOrientationL(CAknAppUi::EAppUiOrientationLandscape)); #endif QSize res = QApplication::desktop()->screenGeometry().size(); +#ifdef USING_GLES2 if (res.width() < res.height()) res.transpose(); pixel_xres = res.width(); pixel_yres = res.height(); +#else + // Set resolution to half of the monitor on desktop systems + pixel_xres = res.width() / 2; + pixel_yres = res.height() / 2; +#endif float dpi_scale = CalculateDPIScale(); dp_xres = (int)(pixel_xres * dpi_scale); dp_yres = (int)(pixel_yres * dpi_scale); net::Init(); @@ -55,9 +78,14 @@ int main(int argc, char *argv[]) #else NativeInit(argc, (const char **)argv, "./", "/tmp", "BADCOFFEE"); #endif + MainUI w(dpi_scale); w.resize(pixel_xres, pixel_yres); +#ifdef USING_GLES2 w.showFullScreen(); +#else + w.show(); +#endif MainAudio *audio = new MainAudio(); diff --git a/base/QtMain.h b/base/QtMain.h index 325256c12..4c4705450 100644 --- a/base/QtMain.h +++ b/base/QtMain.h @@ -18,6 +18,30 @@ #include "net/resolve.h" #include "display.h" +// Input +const int buttonMappings[18] = { + Qt::Key_X, //A + Qt::Key_S, //B + Qt::Key_Z, //X + Qt::Key_A, //Y + Qt::Key_W, //LBUMPER + Qt::Key_Q, //RBUMPER + Qt::Key_1, //START + Qt::Key_2, //SELECT + Qt::Key_Up, //UP + Qt::Key_Down, //DOWN + Qt::Key_Left, //LEFT + Qt::Key_Right, //RIGHT + 0, //MENU (event) + Qt::Key_Backspace, //BACK + Qt::Key_I, //JOY UP + Qt::Key_K, //JOY DOWN + Qt::Key_J, //JOY LEFT + Qt::Key_L, //JOY RIGHT +}; +void SimulateGamepad(InputState *input); + +//GUI class MainUI : public QGLWidget { Q_OBJECT @@ -32,6 +56,14 @@ public: } protected: + void resizeEvent(QResizeEvent * e) + { + pixel_xres = e->size().width(); + pixel_yres = e->size().height(); + dp_xres = pixel_xres * dpi_scale; + dp_yres = pixel_yres * dpi_scale; + } + bool event(QEvent *e) { QList touchPoints; @@ -64,6 +96,18 @@ protected: input_state.pointer_x[0] = ((QMouseEvent*)e)->pos().x() * dpi_scale; input_state.pointer_y[0] = ((QMouseEvent*)e)->pos().y() * dpi_scale; break; + case QEvent::KeyPress: + for (int b = 0; b < 14; b++) { + if (((QKeyEvent*)e)->key() == buttonMappings[b]) + input_state.pad_buttons |= (1<key() == buttonMappings[b]) + input_state.pad_buttons &= ~(1<