[Scummvm-cvs-logs] SF.net SVN: scummvm: [28872] scummvm/trunk/engines/agi

mthreepwood at users.sourceforge.net mthreepwood at users.sourceforge.net
Fri Sep 7 01:45:32 CEST 2007


Revision: 28872
          http://scummvm.svn.sourceforge.net/scummvm/?rev=28872&view=rev
Author:   mthreepwood
Date:     2007-09-06 16:45:32 -0700 (Thu, 06 Sep 2007)

Log Message:
-----------
enable inventory in Winnie

Modified Paths:
--------------
    scummvm/trunk/engines/agi/preagi_winnie.cpp
    scummvm/trunk/engines/agi/preagi_winnie.h

Modified: scummvm/trunk/engines/agi/preagi_winnie.cpp
===================================================================
--- scummvm/trunk/engines/agi/preagi_winnie.cpp	2007-09-06 23:32:08 UTC (rev 28871)
+++ scummvm/trunk/engines/agi/preagi_winnie.cpp	2007-09-06 23:45:32 UTC (rev 28872)
@@ -65,6 +65,18 @@
 	file.close();
 }
 
+void Winnie::readObj(int iObj, uint8 *buffer, int buflen) {
+	char szFile[256] = {0};
+	sprintf(szFile, IDS_WTP_PATH_OBJ, iObj);
+	Common::File file;
+	if (!file.open(szFile))
+		return;
+	uint32 filelen = file.size();
+	memset(buffer, 0, sizeof(buffer));
+	file.read(buffer, filelen);
+	file.close();
+}
+
 void Winnie::randomize() {
 	int iObj = 0;
 	int iRoom = 0;
@@ -362,6 +374,42 @@
 	}
 }
 
+void Winnie::keyHelp() {
+	//Winnie_PlaySound(IDI_WTP_SND_KEYHELP);
+	_vm->printStr(IDS_WTP_HELP_0);
+	_vm->waitAnyKeyChoice();
+	_vm->printStr(IDS_WTP_HELP_1);
+	_vm->waitAnyKeyChoice();
+}
+
+void Winnie::inventory() {
+	char szMissing[41] = {0};
+
+	if (game.iObjHave)
+		printObjStr(game.iObjHave, IDI_WTP_OBJ_TAKE);
+	else {
+		_vm->clearTextArea();
+		_vm->drawStr(IDI_WTP_ROW_MENU, IDI_WTP_COL_MENU, IDA_DEFAULT, IDS_WTP_INVENTORY_0);
+	}
+
+	sprintf(szMissing, IDS_WTP_INVENTORY_1, game.nObjMiss);
+	_vm->drawStr(IDI_WTP_ROW_OPTION_4, IDI_WTP_COL_MENU, IDA_DEFAULT, szMissing);
+	_vm->_gfx->doUpdate();
+	_vm->_system->updateScreen();
+	_vm->waitAnyKeyChoice();
+}
+
+void Winnie::printObjStr(int iObj, int iStr) {
+	WTP_OBJ_HDR hdr;
+	uint8 *buffer = (uint8 *)malloc(2048);
+
+	readObj(iObj, buffer, 2048);
+	memcpy(&hdr, buffer, sizeof(hdr));
+	_vm->printStrXOR((char *)(buffer + hdr.ofsStr[iStr] - IDI_WTP_OFS_OBJ));
+
+	free(buffer);
+}
+
 void Winnie::drawMenu(char *szMenu, int iSel, int fCanSel[]) {
 	int iRow = 0, iCol = 0;
 
@@ -504,7 +552,7 @@
 					*iSel = IDI_WTP_SEL_BACK;
 					return;
 				case Common::KEYCODE_c:
-					//Winnie_Inventory();
+					inventory();
 					break;
 				case Common::KEYCODE_SPACE:
 				case Common::KEYCODE_RIGHT:
@@ -522,7 +570,7 @@
 					if (fCanSel[*iSel + IDI_WTP_SEL_REAL_OPT_1]) {
 						return;
 					} else {
-						//Winnie_KeyHelp();
+						keyHelp();
 						clrMenuSel(iSel, fCanSel);
 					}
 					break;
@@ -573,7 +621,7 @@
 						break;
 					}
 				default:
-					//Winnie_KeyHelp();
+					keyHelp();
 					clrMenuSel(iSel, fCanSel);
 					break;
 				}

Modified: scummvm/trunk/engines/agi/preagi_winnie.h
===================================================================
--- scummvm/trunk/engines/agi/preagi_winnie.h	2007-09-06 23:32:08 UTC (rev 28871)
+++ scummvm/trunk/engines/agi/preagi_winnie.h	2007-09-06 23:45:32 UTC (rev 28872)
@@ -318,12 +318,15 @@
 	int getObjInRoom(int);
 	bool getSelOkBack();
 	void getMenuSel(char*, int*, int[]);
-	void keyHelp() {}
+	void keyHelp();
 	void clrMenuSel(int*, int[]);
 	void incMenuSel(int*, int[]);
 	void decMenuSel(int*, int[]);
 	void drawMenu(char*, int, int[]);
 	void printRoomStr(int, int);
+	void inventory();
+	void printObjStr(int, int);
+	void readObj(int, uint8*, int);
 };
 
 }


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list