[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