[Scummvm-cvs-logs] CVS: scummvm/wince pocketpc.cpp,1.23,1.24
Nicolas Bacca
arisme at users.sourceforge.net
Thu Jul 18 15:56:07 CEST 2002
Update of /cvsroot/scummvm/scummvm/wince
In directory usw-pr-cvs1:/tmp/cvs-serv18553
Modified Files:
pocketpc.cpp
Log Message:
Update class (implement mutex), new GFX rendering, display keyboard for Monkey2 copy protection
Index: pocketpc.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/wince/pocketpc.cpp,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- pocketpc.cpp 7 Jul 2002 21:27:06 -0000 1.23
+++ pocketpc.cpp 18 Jul 2002 22:55:51 -0000 1.24
@@ -25,10 +25,9 @@
#include "SDL_timer.h"
#include "SDL_thread.h"
-
#define MAX(a,b) (((a)<(b)) ? (b) : (a))
#define MIN(a,b) (((a)>(b)) ? (b) : (a))
-#define POCKETSCUMM_BUILD "051902"
+#define POCKETSCUMM_BUILD "070202"
#define VERSION "Build " POCKETSCUMM_BUILD " (VM " SCUMMVM_CVS ")"
@@ -137,7 +136,14 @@
void addEventKeyPressed(int ascii_code);
- void addEventRightButtonClicked();
+ void addEventRightButtonClicked();
+
+ // Mutex functions
+
+ void* create_mutex();
+ void lock_mutex(void*);
+ void unlock_mutex(void*);
+ void delete_mutex(void*);
private:
// Windows callbacks & stuff
@@ -246,7 +252,11 @@
extern void getSelectedGame(int, char*, TCHAR*);
extern void palette_update();
-#define SHMenuBar_GetMenu(hWndMB,ID_MENU) (HMENU)SendMessage((hWndMB), SHCMBM_GETSUBMENU, (WPARAM)0, (LPARAM)ID_MENU)
+//#define SHMenuBar_GetMenu(hWndMB,ID_MENU) (HMENU)SendMessage((hWndMB), SHCMBM_GETSUBMENU, (WPARAM)0, (LPARAM)ID_MENU)
+
+/* Monkey2 keyboard stuff */
+bool monkey2_keyboard;
+int monkey2_keyboard_count;
void do_quit() {
GXCloseInput();
@@ -382,7 +392,14 @@
// No default toolbar for zak256
if (strcmp(game_name, "zak256") == 0)
- hide_toolbar = true;
+ hide_toolbar = true;
+
+ // Keyboard activated for Monkey Island 2
+ if (strcmp(game_name, "monkey2") == 0) {
+ draw_keyboard = true;
+ monkey2_keyboard = true;
+ monkey2_keyboard_count = 0;
+ }
if (detector.detectMain(argc, argv))
return (-1);
@@ -500,7 +517,13 @@
if (!hide_toolbar)
toolbar_drawn = false;
// SHHandleWMActivate(hWnd, wParam, lParam, &sai, SHA_INPUTDIALOG);
-
+
+ SHSipPreference(hWnd, SIP_FORCEDOWN);
+ SHFullScreen(hWnd, SHFS_HIDETASKBAR);
+ MoveWindow(hWnd, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), TRUE);
+ SetCapture(hWnd);
+
+ /*
if (LOWORD(wParam) == WA_ACTIVE) {
if (GetScreenMode()) {
SHSipPreference(hWnd, SIP_FORCEDOWN);
@@ -512,7 +535,8 @@
SHFullScreen(hWnd, SHFS_SHOWTASKBAR);
MoveWindow(hWnd, 0, 0, GetSystemMetrics(SM_CYSCREEN), GetSystemMetrics(SM_CXSCREEN), TRUE);
}
- }
+ }
+ */
return 0;
@@ -528,8 +552,10 @@
if (!hide_toolbar)
toolbar_drawn = false;
return 0;
-
- case WM_COMMAND:
+
+
+ case WM_COMMAND:
+ /*
switch(wParam)
{
case IDC_OPTIONS:
@@ -594,7 +620,8 @@
if (taskbar)
ShowWindow(taskbar, SW_HIDE);*/
/*SHSipPreference(hWnd, SIP_FORCEDOWN);
- SHFullScreen(hWnd, SHFS_HIDETASKBAR);*/
+ SHFullScreen(hWnd, SHFS_HIDETASKBAR);*/
+ /*
SetForegroundWindow(hWnd);
MoveWindow(hWnd, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), TRUE);
SetCapture(hWnd);
@@ -603,7 +630,9 @@
toolbar_drawn = false;
break;
- }
+ }
+ */
+
return 0;
case WM_KEYDOWN:
@@ -646,43 +675,76 @@
{
ToolbarSelected toolbar_selection;
int x = ((int16*)&lParam)[0];
- int y = ((int16*)&lParam)[1];
- Translate(&x, &y);
+ int y = ((int16*)&lParam)[1];
+
+ //FILE *toto;
+
+ Translate(&x, &y);
+
+ /*
+ fprintf(toto, "Non translated %d %d Translated %d %d\n",
+ ((int16*)&lParam)[0], ((int16*)&lParam)[1],
+ x, y);
+ fclose(toto);
+ */
+
if (draw_keyboard) {
- // Handle keyboard selection
+ // Handle keyboard selection
+ int offset_y;
+ int saved_x = x;
+ int saved_y = y;
+
+ /*
+ if (!GetScreenMode()) {
+ x = ((int16*)&lParam)[0];
+ y = ((int16*)&lParam)[1];
+ }
+ */
+
+ offset_y = (GetScreenMode() ? 0 : 40 + 22);
- if (x<185 && y>=200) {
+ if (x<185 && y>=(200 + offset_y)) {
//Alpha selection
wm->_event.event_code = EVENT_KEYDOWN;
wm->_event.kbd.ascii =
- (y <= 220 ? KEYBOARD_MAPPING_ALPHA_HIGH[((x + 10) / 14) - 1] :
- KEYBOARD_MAPPING_ALPHA_LOW[((x + 10) / 14) - 1]);
+ (y <= (220 + offset_y)? KEYBOARD_MAPPING_ALPHA_HIGH[((x + 10) / 14) - 1] :
+ KEYBOARD_MAPPING_ALPHA_LOW[((x + 10) / 14) - 1]);
break;
}
else
- if (x>=186 && y>=200 && x<=255) {
- // Numeric selection
+ if (x>=186 && y>=(200 + offset_y) && x<=255) {
+ // Numeric selection
+ if (monkey2_keyboard)
+ monkey2_keyboard_count++;
+ if (monkey2_keyboard_count == 4) {
+ monkey2_keyboard = false;
+ draw_keyboard = false;
+ toolbar_drawn = false;
+ }
wm->_event.event_code = EVENT_KEYDOWN;
wm->_event.kbd.ascii =
- (y <= 220 ? KEYBOARD_MAPPING_NUMERIC_HIGH[((x - 187 + 10) / 14) - 1] :
- KEYBOARD_MAPPING_NUMERIC_LOW[((x - 187 + 10) / 14) - 1]);
+ (y <= (220 + offset_y) ? KEYBOARD_MAPPING_NUMERIC_HIGH[((x - 187 + 10) / 14) - 1] :
+ KEYBOARD_MAPPING_NUMERIC_LOW[((x - 187 + 10) / 14) - 1]);
break;
}
else
- if (x>=302 && x <= 316 && y >= 200 && y <= 220) {
+ if (x>=302 && x <= 316 && y >= (200 + offset_y) && y <= (220 + offset_y)) {
// Backspace
wm->_event.event_code = EVENT_KEYDOWN;
wm->_event.kbd.ascii = mapKey(VK_BACK);
break;
}
else
- if (x>=302 && x<= 316 && y >= 220) {
+ if (x>=302 && x<= 316 && y >= (220 + offset_y)) {
// Enter
wm->_event.event_code = EVENT_KEYDOWN;
wm->_event.kbd.ascii = mapKey(VK_RETURN);
break;
}
+
+ x = saved_x;
+ y = saved_y;
wm->_event.event_code = EVENT_LBUTTONDOWN;
wm->_event.mouse.x = x;
@@ -694,13 +756,16 @@
toolbar_selection = (hide_toolbar || get_key_mapping ? ToolbarNone :
- getToolbarSelection(x, y));
+ getToolbarSelection(
+ (GetScreenMode() ? x : ((int16*)&lParam)[0]),
+ (GetScreenMode() ? y : ((int16*)&lParam)[1])));
if (toolbar_selection == ToolbarNone) {
wm->_event.event_code = EVENT_LBUTTONDOWN;
wm->_event.mouse.x = x;
wm->_event.mouse.y = y;
wm->_last_mouse_event = wm->_event;
-
+
+ /*
if(y > 200 && !hide_toolbar)
{
if(x<160) {
@@ -723,7 +788,8 @@
hDC = BeginPaint (hWnd, &ps);
EndPaint (hWnd, &ps);
}
- }
+ }
+ */
}
else {
switch(toolbar_selection) {
@@ -732,17 +798,18 @@
detector._gameId <= GID_SIMON_LAST) {
break;
}
- if (GetScreenMode()) {
+ /*if (GetScreenMode()) {*/
draw_keyboard = true;
if (!hide_toolbar)
toolbar_drawn = false;
- }
+ /*}*/
wm->_event.event_code = EVENT_KEYDOWN;
wm->_event.kbd.ascii = mapKey(VK_F5);
break;
- case ToolbarExit:
- wm->_event.event_code = EVENT_KEYDOWN;
- wm->_event.kbd.ascii = KEY_SET_OPTIONS;
+ case ToolbarMode:
+ SetScreenMode(!GetScreenMode());
+ if (!hide_toolbar)
+ toolbar_drawn = false;
break;
case ToolbarSkip:
if (detector._gameId >= GID_SIMON_FIRST) {
@@ -898,11 +965,11 @@
OSystem_WINCE3* system;
system = (OSystem_WINCE3*)g_scumm->_system;
- if (GetScreenMode()) {
+ /*if (GetScreenMode()) {*/
draw_keyboard = true;
if (!hide_toolbar)
toolbar_drawn = false;
- }
+ /*}*/
system->addEventKeyPressed(mapKey(VK_F5));
}
@@ -933,11 +1000,11 @@
}
void action_keyboard() {
- if (GetScreenMode()) {
+ /*if (GetScreenMode()) {*/
draw_keyboard = !draw_keyboard;
if (!hide_toolbar)
toolbar_drawn = false;
- }
+ /*}*/
}
void action_sound() {
@@ -1002,7 +1069,8 @@
ShowWindow(syst->hWnd, SW_SHOW);
UpdateWindow(syst->hWnd);
-
+
+ /*
SHMENUBARINFO smbi;
smbi.cbSize = sizeof(smbi);
smbi.hwndParent = syst->hWnd;
@@ -1014,10 +1082,13 @@
smbi.hwndMB = NULL;
BOOL res = SHCreateMenuBar(&smbi);
hWnd_MainMenu = smbi.hwndMB;
+ */
- /* Sound is activated on default - initialize it in the menu */
+ /* Sound is activated on default - initialize it in the menu */
+ /*
CheckMenuItem((HMENU)SHMenuBar_GetMenu (hWnd_MainMenu, IDM_POCKETSCUMM),
IDC_SOUND, MF_BYCOMMAND | MF_CHECKED);
+ */
GraphicsOn(syst->hWnd);
@@ -1030,7 +1101,10 @@
if (SDL_Init(SDL_INIT_AUDIO)==-1) {
exit(1);
- }
+ }
+
+ Cls();
+ drawWait();
return syst;
}
@@ -1333,4 +1407,20 @@
bool OSystem_WINCE3::poll_cdrom() {return 0;}
void OSystem_WINCE3::update_cdrom() {;}
-void ScummDebugger::attach(Scumm *s) {;}
+void ScummDebugger::attach(Scumm *s) {;}
+
+/* Mutex stuff */
+void* OSystem_WINCE3::create_mutex() {
+ return (void*)CreateMutex(NULL, FALSE, NULL);
+}
+void OSystem_WINCE3::lock_mutex(void *handle) {
+ WaitForSingleObject((HANDLE)handle, INFINITE);
+}
+
+void OSystem_WINCE3::unlock_mutex(void *handle) {
+ ReleaseMutex((HANDLE)handle);
+}
+
+void OSystem_WINCE3::delete_mutex(void *handle) {
+ CloseHandle((HANDLE)handle);
+}
\ No newline at end of file
More information about the Scummvm-git-logs
mailing list