[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