diff options
Diffstat (limited to 'engines/sludge/winstuff.cpp')
-rw-r--r-- | engines/sludge/winstuff.cpp | 283 |
1 files changed, 141 insertions, 142 deletions
diff --git a/engines/sludge/winstuff.cpp b/engines/sludge/winstuff.cpp index 266df699d9..a229225422 100644 --- a/engines/sludge/winstuff.cpp +++ b/engines/sludge/winstuff.cpp @@ -53,179 +53,178 @@ namespace Sludge { -HINSTANCE hInst; // Handle of the main instance -extern HWND hMainWindow; + HINSTANCE hInst; // Handle of the main instance + extern HWND hMainWindow; -extern variableStack *noStack; + extern variableStack *noStack; // The platform-specific functions - Windows edition. -WCHAR *ConvertToUTF16(const char *input) { - int s = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, input, -1, NULL, 0); - WCHAR *ret = new WCHAR [s]; - checkNew(ret); - /*int a = */MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, input, -1, ret, s); - return ret; -} - -char *ConvertFromUTF16(const WCHAR *input) { - int s = WideCharToMultiByte(CP_UTF8, 0, input, -1, NULL, 0, NULL, NULL); - char *ret = new char [s]; - checkNew(ret); - /*int a = */WideCharToMultiByte(CP_UTF8, 0, input, -1, ret, s, NULL, NULL); - return ret; -} - - -char *grabFileName() { - OPENFILENAME ofn; - WCHAR path[MAX_PATH]; - WCHAR file[MAX_PATH] = TEXT(""); - - hInst = GetModuleHandle(NULL); - - memset(& ofn, 0, sizeof(ofn)); - ofn.lStructSize = sizeof(ofn); - ofn.hwndOwner = NULL; - ofn.hInstance = hInst; - ofn.nMaxFile = MAX_PATH; - ofn.lpstrInitialDir = path; - ofn.Flags = OFN_HIDEREADONLY | OFN_EXPLORER; - ofn.lpstrFilter = TEXT("SLUDGE games (*.SLG)\0*.slg\0\0"); - ofn.lpstrFile = file; - - if (GetOpenFileName(& ofn)) { - return ConvertFromUTF16(file); - } else { - return NULL; + WCHAR *ConvertToUTF16(const char *input) { + int s = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, input, -1, NULL, 0); + WCHAR *ret = new WCHAR [s]; + checkNew(ret); + /*int a = */MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, input, -1, ret, s); + return ret; } -} -extern char **languageName; -extern int *languageTable; - -HBITMAP hLogo = NULL; -extern unsigned char *gameLogo; + char *ConvertFromUTF16(const WCHAR *input) { + int s = WideCharToMultiByte(CP_UTF8, 0, input, -1, NULL, 0, NULL, NULL); + char *ret = new char [s]; + checkNew(ret); + /*int a = */WideCharToMultiByte(CP_UTF8, 0, input, -1, ret, s, NULL, NULL); + return ret; + } -BOOL CALLBACK setupDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { - switch (message) { - case WM_INITDIALOG: - if (gameLogo) { - hLogo = CreateBitmap(310, 88, 1, 32, gameLogo); - SendDlgItemMessage(hDlg, 1003, STM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)hLogo); + char *grabFileName() { + OPENFILENAME ofn; + WCHAR path[MAX_PATH]; + WCHAR file[MAX_PATH] = TEXT(""); + + hInst = GetModuleHandle(NULL); + + memset(& ofn, 0, sizeof(ofn)); + ofn.lStructSize = sizeof(ofn); + ofn.hwndOwner = NULL; + ofn.hInstance = hInst; + ofn.nMaxFile = MAX_PATH; + ofn.lpstrInitialDir = path; + ofn.Flags = OFN_HIDEREADONLY | OFN_EXPLORER; + ofn.lpstrFilter = TEXT("SLUDGE games (*.SLG)\0*.slg\0\0"); + ofn.lpstrFile = file; + + if (GetOpenFileName(& ofn)) { + return ConvertFromUTF16(file); + } else { + return NULL; } + } + + extern char **languageName; + extern int *languageTable; + + HBITMAP hLogo = NULL; + extern unsigned char *gameLogo; + + BOOL CALLBACK setupDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { + switch (message) { + case WM_INITDIALOG: + if (gameLogo) { + hLogo = CreateBitmap(310, 88, 1, 32, gameLogo); + SendDlgItemMessage(hDlg, 1003, STM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)hLogo); + } - if (gameSettings.userFullScreen) + if (gameSettings.userFullScreen) CheckDlgButton(hDlg, 1000, BST_CHECKED); - else + else CheckDlgButton(hDlg, 1000, BST_UNCHECKED); - SendDlgItemMessage(hDlg, 1002, CB_ADDSTRING, 0, reinterpret_cast<LPARAM>((LPCTSTR)TEXT("Default (best looking)"))); - SendDlgItemMessage(hDlg, 1002, CB_ADDSTRING, 0, reinterpret_cast<LPARAM>((LPCTSTR)TEXT("Linear (faster but blurry)"))); - SendDlgItemMessage(hDlg, 1002, CB_ADDSTRING, 0, reinterpret_cast<LPARAM>((LPCTSTR)TEXT("Off (blocky graphics)"))); + SendDlgItemMessage(hDlg, 1002, CB_ADDSTRING, 0, reinterpret_cast<LPARAM>((LPCTSTR)TEXT("Default (best looking)"))); + SendDlgItemMessage(hDlg, 1002, CB_ADDSTRING, 0, reinterpret_cast<LPARAM>((LPCTSTR)TEXT("Linear (faster but blurry)"))); + SendDlgItemMessage(hDlg, 1002, CB_ADDSTRING, 0, reinterpret_cast<LPARAM>((LPCTSTR)TEXT("Off (blocky graphics)"))); - if (gameSettings.antiAlias < 0) + if (gameSettings.antiAlias < 0) SendDlgItemMessage(hDlg, 1002, CB_SETCURSEL, 1, 0); - else if (gameSettings.antiAlias) + else if (gameSettings.antiAlias) SendDlgItemMessage(hDlg, 1002, CB_SETCURSEL, 0, 0); - else + else SendDlgItemMessage(hDlg, 1002, CB_SETCURSEL, 2, 0); - if (gameSettings.numLanguages) { - WCHAR text[20]; - for (unsigned int i = 0; i <= gameSettings.numLanguages; i++) { - if (languageName[i]) { - WCHAR *w_lang = ConvertToUTF16(languageName[i]); - SendDlgItemMessage(hDlg, 1001, CB_ADDSTRING, 0, reinterpret_cast<LPARAM>((LPCTSTR)w_lang)); - delete w_lang; - } else { - swprintf(text, TEXT("Language %d"), i); - SendDlgItemMessage(hDlg, 1001, CB_ADDSTRING, 0, reinterpret_cast<LPARAM>((LPCTSTR)text)); + if (gameSettings.numLanguages) { + WCHAR text[20]; + for (unsigned int i = 0; i <= gameSettings.numLanguages; i++) { + if (languageName[i]) { + WCHAR *w_lang = ConvertToUTF16(languageName[i]); + SendDlgItemMessage(hDlg, 1001, CB_ADDSTRING, 0, reinterpret_cast<LPARAM>((LPCTSTR)w_lang)); + delete w_lang; + } else { + swprintf(text, TEXT("Language %d"), i); + SendDlgItemMessage(hDlg, 1001, CB_ADDSTRING, 0, reinterpret_cast<LPARAM>((LPCTSTR)text)); + } } + SendDlgItemMessage(hDlg, 1001, CB_SETCURSEL, getLanguageForFileB(), 0); + } else { + const WCHAR *text = TEXT("No translations available"); + SendDlgItemMessage(hDlg, 1001, CB_ADDSTRING, 0, reinterpret_cast<LPARAM>((LPCTSTR)text)); + SendDlgItemMessage(hDlg, 1001, CB_SETCURSEL, 0, 0); + EnableWindow(GetDlgItem(hDlg, 1001), false); } - SendDlgItemMessage(hDlg, 1001, CB_SETCURSEL, getLanguageForFileB(), 0); - } else { - const WCHAR *text = TEXT("No translations available"); - SendDlgItemMessage(hDlg, 1001, CB_ADDSTRING, 0, reinterpret_cast<LPARAM>((LPCTSTR)text)); - SendDlgItemMessage(hDlg, 1001, CB_SETCURSEL, 0, 0); - EnableWindow(GetDlgItem(hDlg, 1001), false); - } - return true; - - case WM_COMMAND: - if (hLogo) DeleteObject(hLogo); - switch (LOWORD(wParam)) { - case IDOK: - - gameSettings.userFullScreen = (IsDlgButtonChecked(hDlg, 1000) == BST_CHECKED); - gameSettings.antiAlias = SendDlgItemMessage(hDlg, 1002, CB_GETCURSEL, 0, 0); - if (gameSettings.antiAlias == 0) gameSettings.antiAlias = 1; - else if (gameSettings.antiAlias == 1) gameSettings.antiAlias = -1; - else if (gameSettings.antiAlias == 2) gameSettings.antiAlias = 0; + return true; + + case WM_COMMAND: + if (hLogo) DeleteObject(hLogo); + switch (LOWORD(wParam)) { + case IDOK: + + gameSettings.userFullScreen = (IsDlgButtonChecked(hDlg, 1000) == BST_CHECKED); + gameSettings.antiAlias = SendDlgItemMessage(hDlg, 1002, CB_GETCURSEL, 0, 0); + if (gameSettings.antiAlias == 0) gameSettings.antiAlias = 1; + else if (gameSettings.antiAlias == 1) gameSettings.antiAlias = -1; + else if (gameSettings.antiAlias == 2) gameSettings.antiAlias = 0; + + if (gameSettings.numLanguages) { + gameSettings.languageID = SendDlgItemMessage(hDlg, 1001, CB_GETCURSEL, 0, 0); + if (gameSettings.languageID < 0) gameSettings.languageID = 0; + gameSettings.languageID = languageTable[gameSettings.languageID]; + } + EndDialog(hDlg, true); + return TRUE; - if (gameSettings.numLanguages) { - gameSettings.languageID = SendDlgItemMessage(hDlg, 1001, CB_GETCURSEL, 0, 0); - if (gameSettings.languageID < 0) gameSettings.languageID = 0; - gameSettings.languageID = languageTable[gameSettings.languageID]; + case IDCANCEL: + EndDialog(hDlg, false); + return TRUE; } - EndDialog(hDlg, true); - return TRUE; - - case IDCANCEL: - EndDialog(hDlg, false); - return TRUE; + break; } - break; + return false; } - return false; -} -int showSetupWindow() { + int showSetupWindow() { - hInst = GetModuleHandle(NULL); + hInst = GetModuleHandle(NULL); - if (! hInst) debugOut("ERROR: No hInst!\n"); + if (! hInst) debugOut("ERROR: No hInst!\n"); - if (DialogBox(hInst, TEXT("SETUPWINDOW"), NULL, setupDlgProc)) return true; - return false; + if (DialogBox(hInst, TEXT("SETUPWINDOW"), NULL, setupDlgProc)) return true; + return false; -} + } -void msgBox(const char *head, const char *msg) { - WCHAR *w_head = ConvertToUTF16(head); - WCHAR *w_msg = ConvertToUTF16(msg); - MessageBox(NULL, w_msg, w_head, MB_OK | MB_ICONSTOP | MB_SYSTEMMODAL | MB_SETFOREGROUND); - delete w_head; - delete w_msg; -} + void msgBox(const char *head, const char *msg) { + WCHAR *w_head = ConvertToUTF16(head); + WCHAR *w_msg = ConvertToUTF16(msg); + MessageBox(NULL, w_msg, w_head, MB_OK | MB_ICONSTOP | MB_SYSTEMMODAL | MB_SETFOREGROUND); + delete w_head; + delete w_msg; + } -int msgBoxQuestion(const char *head, const char *msg) { - WCHAR *w_head = ConvertToUTF16(head); - WCHAR *w_msg = ConvertToUTF16(msg); - int val = MessageBox(NULL, w_msg, w_head, MB_YESNO | MB_SETFOREGROUND | MB_APPLMODAL | MB_ICONQUESTION) == IDNO; - delete w_head; - delete w_msg; - if (val) + int msgBoxQuestion(const char *head, const char *msg) { + WCHAR *w_head = ConvertToUTF16(head); + WCHAR *w_msg = ConvertToUTF16(msg); + int val = MessageBox(NULL, w_msg, w_head, MB_YESNO | MB_SETFOREGROUND | MB_APPLMODAL | MB_ICONQUESTION) == IDNO; + delete w_head; + delete w_msg; + if (val) return false; - return true; -} - -void changeToUserDir() { - TCHAR szAppData[MAX_PATH]; - /*hr = */SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, 0, szAppData); - _wchdir(szAppData); -} - -uint32_t launch(char *f) { - WCHAR *w_f = ConvertToUTF16(f); - uint32_t r = (uint32_t) ShellExecute(hMainWindow, TEXT("open"), w_f, NULL, TEXT("C:\\"), SW_SHOWNORMAL); - delete w_f; - return r; -} - -bool defaultUserFullScreen() { - return true; -} + return true; + } + + void changeToUserDir() { + TCHAR szAppData[MAX_PATH]; + /*hr = */SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, 0, szAppData); + _wchdir(szAppData); + } + + uint32_t launch(char *f) { + WCHAR *w_f = ConvertToUTF16(f); + uint32_t r = (uint32_t) ShellExecute(hMainWindow, TEXT("open"), w_f, NULL, TEXT("C:\\"), SW_SHOWNORMAL); + delete w_f; + return r; + } + + bool defaultUserFullScreen() { + return true; + } } // End of namespace Sludge |