[Scummvm-cvs-logs] CVS: scummvm/queen defs.h,1.18,1.19 walk.cpp,1.14,1.15 logic.h,1.46,1.47 logic.cpp,1.62,1.63 xref.txt,1.22,1.23
Gregory Montoir
cyx at users.sourceforge.net
Mon Oct 27 07:06:12 CET 2003
- Previous message: [Scummvm-cvs-logs] CVS: web press.php,1.16,1.17
- Next message: [Scummvm-cvs-logs] CVS: scummvm/queen graphics.cpp,1.36,1.37 logic.cpp,1.63,1.64 resource.cpp,1.19,1.20 resource.h,1.15,1.16 sound.cpp,1.4,1.5 talk.cpp,1.24,1.25
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/queen
In directory sc8-pr-cvs1:/tmp/cvs-serv9045
Modified Files:
defs.h walk.cpp logic.h logic.cpp xref.txt
Log Message:
more stuff for future Command class
Index: defs.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/defs.h,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- defs.h 25 Oct 2003 20:26:50 -0000 1.18
+++ defs.h 27 Oct 2003 15:00:25 -0000 1.19
@@ -57,10 +57,11 @@
enum {
- INK_BG_PANEL = 0xE2,
- INK_SELECT = 17,
+ INK_BG_PANEL = 226,
INK_JOURNAL = 16,
- INK_NORMAL = 1,
+ INK_CMD_SELECT = 17,
+ INK_CMD_NORMAL = 1,
+ INK_CMD_LOCK = 234,
INK_TALK_NORMAL = 1,
INK_JOE = 17,
INK_OUTLINED_TEXT = 16
Index: walk.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/walk.cpp,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- walk.cpp 23 Oct 2003 06:44:35 -0000 1.14
+++ walk.cpp 27 Oct 2003 15:00:25 -0000 1.15
@@ -336,7 +336,7 @@
}
else {
// path has been blocked, make Joe say so
- // XXX SPEAK(JOE_RESPstr[4],"JOE",find_cd_desc(4));
+ _logic->joeSpeak(4);
can = -1;
}
Index: logic.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/logic.h,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -d -r1.46 -r1.47
--- logic.h 26 Oct 2003 13:54:26 -0000 1.46
+++ logic.h 27 Oct 2003 15:00:25 -0000 1.47
@@ -40,9 +40,27 @@
Box box;
};
+// Temporary class
struct Command_ {
Verb action, action2;
uint16 noun, noun2;
+
+ CmdListData *_cmdList;
+ uint16 _numCmdList; //COM_LIST_MAX
+
+ CmdArea *_cmdArea;
+ uint16 _numCmdArea; //COM_A_MAX
+
+ CmdObject *_cmdObject;
+ uint16 _numCmdObject; //COM_O_MAX
+
+ CmdInventory *_cmdInventory;
+ uint16 _numCmdInventory; //COM_I_MAX
+
+ CmdGameState *_cmdGameState;
+ uint16 _numCmdGameState; //COM_G_MAX
+
+ void readAllCommandsFrom(byte *&ptr);
};
struct GameSettings {
@@ -137,6 +155,7 @@
uint16 roomData(int room);
uint16 objMax(int room);
GraphicData *graphicData(int index);
+ ItemData *itemData(int index) const { return &_itemData[index]; }
uint16 findBob(uint16 obj);
uint16 findFrame(uint16 obj);
@@ -150,6 +169,9 @@
uint16 walkOffCount();
WalkOffData *walkOffData(int index);
uint16 currentRoomObjMax() const { return _objMax[_currentRoom]; }
+ uint16 currentRoomData() const { return _roomData[_currentRoom]; }
+ ObjectDescription *objectDescription(uint16 objNum) const { return &_objectDescription[objNum]; }
+ uint16 objectDescriptionCount() const { return _numDescriptions; }
uint16 joeFacing() { return _joe.facing; }
uint16 joeX() { return _joe.x; }
@@ -168,8 +190,9 @@
int16 gameState(int index);
void gameState(int index, int16 newValue);
- const char *roomName(uint16 roomNum) { return _roomName[roomNum] ; }
- const char *objectName(uint16 objNum) { return _objName[objNum]; }
+ const char *roomName(uint16 roomNum) const { return _roomName[roomNum] ; }
+ const char *objectName(uint16 objNum) const { return _objName[objNum]; }
+ const char *objectTextualDescription(uint16 objNum) const { return _objDescription[objNum]; }
uint16 numFrames() { return _numFrames; }
@@ -233,12 +256,14 @@
//! USE_UNDERWEAR
void joeUseUnderwear();
+ void joeSpeak(uint16 descNum, bool objectType = false);
+
void playCutaway(const char* cutFile);
const char* objectOrItemName(int16 obj) const;
- //! return selected verb in panel
- Verb findVerb(int16 cursorx, int16 cursory) const;
+ Verb findVerbUnderCursor(int16 cursorx, int16 cursory) const;
+ uint16 findObjectUnderCursor(int16 cursorx, int16 cursory) const;
Walk *walk() { return _walk; }
Display *display() { return _display; }
@@ -247,6 +272,7 @@
uint16 findObjectGlobalNumber(uint16 zoneNum) const;
const char *verbName(Verb v) const;
+ const char *lockedVerbPrefix() const { return _joeResponse[39]; }
void update();
@@ -312,21 +338,6 @@
WalkOffData *_walkOffData;
uint16 _numWalkOffs;
- CmdListData *_cmdList;
- uint16 _numCmdList; //COM_LIST_MAX
-
- CmdArea *_cmdArea;
- uint16 _numCmdArea; //COM_A_MAX
-
- CmdObject *_cmdObject;
- uint16 _numCmdObject; //COM_O_MAX
-
- CmdInventory *_cmdInventory;
- uint16 _numCmdInventory; //COM_I_MAX
-
- CmdGameState *_cmdGameState;
- uint16 _numCmdGameState; //COM_G_MAX
-
FurnitureData *_furnitureData;
uint16 _numFurniture; //FURN_DATA_MAX
@@ -403,8 +414,6 @@
//! Verbs (in order) available in panel
static const Verb PANEL_VERBS[];
-
- friend class Command; // TEMP
};
} // End of namespace Queen
Index: logic.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/logic.cpp,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -d -r1.62 -r1.63
--- logic.cpp 26 Oct 2003 13:54:26 -0000 1.62
+++ logic.cpp 27 Oct 2003 15:00:25 -0000 1.63
@@ -26,6 +26,7 @@
#include "queen/display.h"
#include "queen/graphics.h"
#include "queen/input.h"
+#include "queen/talk.h"
#include "queen/walk.h"
@@ -167,6 +168,57 @@
}
+void Command_::readAllCommandsFrom(byte *&ptr) {
+
+ uint16 i;
+
+ // Command List Data
+ _numCmdList = READ_BE_UINT16(ptr); ptr += 2;
+
+ _cmdList = new CmdListData[_numCmdList + 1];
+ memset(&_cmdList[0], 0, sizeof(CmdListData));
+ for (i = 1; i <= _numCmdList; i++) {
+ _cmdList[i].readFrom(ptr);
+ }
+
+ // Command AREA
+ _numCmdArea = READ_BE_UINT16(ptr); ptr += 2;
+
+ _cmdArea = new CmdArea[_numCmdArea + 1];
+ memset(&_cmdArea[0], 0, sizeof(CmdArea));
+ for (i = 1; i <= _numCmdArea; i++) {
+ _cmdArea[i].readFrom(ptr);
+ }
+
+ // Command OBJECT
+ _numCmdObject = READ_BE_UINT16(ptr); ptr += 2;
+
+ _cmdObject = new CmdObject[_numCmdObject + 1];
+ memset(&_cmdObject[0], 0, sizeof(CmdObject));
+ for (i = 1; i <= _numCmdObject; i++) {
+ _cmdObject[i].readFrom(ptr);
+ }
+
+ // Command INVENTORY
+ _numCmdInventory = READ_BE_UINT16(ptr); ptr += 2;
+
+ _cmdInventory = new CmdInventory[_numCmdInventory + 1];
+ memset(&_cmdInventory[0], 0, sizeof(CmdInventory));
+ for (i = 1; i <= _numCmdInventory; i++) {
+ _cmdInventory[i].readFrom(ptr);
+ }
+
+ // Command GAMESTATE
+ _numCmdGameState = READ_BE_UINT16(ptr); ptr += 2;
+ _cmdGameState = new CmdGameState[_numCmdGameState + 1];
+ memset(&_cmdGameState[0], 0, sizeof(CmdGameState));
+ for (i = 1; i <= _numCmdGameState; i++) {
+ _cmdGameState[i].readFrom(ptr);
+ }
+}
+
+
+
Logic::Logic(Resource *resource, Graphics *graphics, Display *theDisplay, Input *input, Sound *sound)
: _resource(resource), _graphics(graphics), _display(theDisplay),
_input(input), _sound(sound) {
@@ -280,49 +332,7 @@
_objectDescription[i].readFrom(ptr);
}
- // Command List Data
- _numCmdList = READ_BE_UINT16(ptr); ptr += 2;
-
- _cmdList = new CmdListData[_numCmdList + 1];
- memset(&_cmdList[0], 0, sizeof(CmdListData));
- for (i = 1; i <= _numCmdList; i++) {
- _cmdList[i].readFrom(ptr);
- }
-
- // Command AREA
- _numCmdArea = READ_BE_UINT16(ptr); ptr += 2;
-
- _cmdArea = new CmdArea[_numCmdArea + 1];
- memset(&_cmdArea[0], 0, sizeof(CmdArea));
- for (i = 1; i <= _numCmdArea; i++) {
- _cmdArea[i].readFrom(ptr);
- }
-
- // Command OBJECT
- _numCmdObject = READ_BE_UINT16(ptr); ptr += 2;
-
- _cmdObject = new CmdObject[_numCmdObject + 1];
- memset(&_cmdObject[0], 0, sizeof(CmdObject));
- for (i = 1; i <= _numCmdObject; i++) {
- _cmdObject[i].readFrom(ptr);
- }
-
- // Command INVENTORY
- _numCmdInventory = READ_BE_UINT16(ptr); ptr += 2;
-
- _cmdInventory = new CmdInventory[_numCmdInventory + 1];
- memset(&_cmdInventory[0], 0, sizeof(CmdInventory));
- for (i = 1; i <= _numCmdInventory; i++) {
- _cmdInventory[i].readFrom(ptr);
- }
-
- // Command GAMESTATE
- _numCmdGameState = READ_BE_UINT16(ptr); ptr += 2;
- _cmdGameState = new CmdGameState[_numCmdGameState + 1];
- memset(&_cmdGameState[0], 0, sizeof(CmdGameState));
- for (i = 1; i <= _numCmdGameState; i++) {
- _cmdGameState[i].readFrom(ptr);
- }
+ Command_ cmd; cmd.readAllCommandsFrom(ptr); // TEMP
_entryObj = READ_BE_UINT16(ptr); ptr += 2;
@@ -1911,6 +1921,20 @@
}
+void Logic::joeSpeak(uint16 descNum, bool objectType) {
+
+ // joeSpeak(k, false) == SPEAK(JOE_RESPstr[k],"JOE",find_cd_desc(k))
+ // joeSpeak(k, true) == SPEAK(OBJECT_DESCRstr[k],"JOE",find_cd_desc(JOERESPMAX+k))
+ const char *text = objectType ? _objDescription[descNum] : _joeResponse[descNum];
+ if (objectType) {
+ descNum += JOE_RESPONSE_MAX;
+ }
+ char descFilePrefix[10];
+ sprintf(descFilePrefix, "JOE%04i", descNum);
+ Talk::speak(text, NULL, descFilePrefix, _graphics, _input, this, _resource, _sound);
+}
+
+
const char* Logic::objectOrItemName(int16 obj) const {
uint16 name;
@@ -1925,12 +1949,23 @@
}
-Verb Logic::findVerb(int16 cursorx, int16 cursory) const {
+Verb Logic::findVerbUnderCursor(int16 cursorx, int16 cursory) const {
return PANEL_VERBS[zoneIn(ZONE_PANEL, cursorx, cursory)];
}
+uint16 Logic::findObjectUnderCursor(int16 cursorx, int16 cursory) const {
+
+ uint16 roomObj = 0;
+ if (cursory < ROOM_ZONE_HEIGHT) {
+ int16 x = cursorx + _display->horizontalScroll();
+ roomObj = zoneIn(ZONE_ROOM, x, cursory);
+ }
+ return roomObj;
+}
+
+
uint16 Logic::findObjectRoomNumber(uint16 zoneNum) const {
// l.316-327 select.c
@@ -1956,6 +1991,7 @@
const char *Logic::verbName(Verb v) const {
+ // FIXME: rewrite this test with future VerbCommand methods
if (v != VERB_NONE && v < 13) {
return _verbName[v];
}
Index: xref.txt
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/xref.txt,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -d -r1.22 -r1.23
--- xref.txt 26 Oct 2003 13:54:26 -0000 1.22
+++ xref.txt 27 Oct 2003 15:00:25 -0000 1.23
@@ -16,12 +16,13 @@
=======
ALTER_DEFAULT() Command::alterDefault
CLEAR_COMMAND() Command::clear
+CHECK_PLAYER() Command::checkPlayer
EXECUTE_ACTION() Command::executeCurrentAction
FIND_DEFAULT() Command::findDefault
-LOOK()
-LOOK_ICON()
+LOOK() Command::look
+LOOK_ICON() Command::lookCurrentIcon
LOOK_ITEM() Command::lookCurrentItem
-LOOK_ROOM()
+LOOK_ROOM() Command::lookCurrentRoom
OPEN_CLOSE_OTHER() Command::openOrCloseAssociatedObject
P1_SET_CONDITIONS() Command::setConditions
P2_SET_AREAS() Command::setAreas
@@ -34,16 +35,16 @@
-
ACTION,ACTION2 Command::_action*
CLEVEL Command::_commandLevel
-COM_A Logic::_cmdArea
-COM_A_MAX Logic::_numCmdArea
-COM_O Logic::_cmdObject
-COM_O_MAX Logic::_numCmdObject
-COM_G Logic::_cmdGameState
-COM_G_MAX Logic::_numCmdGameState
-COM_I Logic::_cmdInventory
-COM_I_MAX Logic::_numCmdInventory
-COM_LIST Logic::_cmdList
-COM_LIST_MAX Logic::_numCmdList
+COM_A Command::_cmdArea
+COM_A_MAX Command::_numCmdArea
+COM_O Command::_cmdObject
+COM_O_MAX Command::_numCmdObject
+COM_G Command::_cmdGameState
+COM_G_MAX Command::_numCmdGameState
+COM_I Command::_cmdInventory
+COM_I_MAX Command::_numCmdInventory
+COM_LIST Command::_cmdList
+COM_LIST_MAX Command::_numCmdList
COMMANDstr Command::_command
DEFCOMM Command::_defaultVerb
OLDVERB,VERB Command::_*verb*
@@ -418,9 +419,8 @@
(UNSORTED)
==========
in() defs.h InRange() macro
-CHECK_PLAYER()
find_cd_cut() findCdCut
-find_cd_desc()
+find_cd_desc() *not needed, see Logic::joeSpeak()*
-
Kstr
bank9
- Previous message: [Scummvm-cvs-logs] CVS: web press.php,1.16,1.17
- Next message: [Scummvm-cvs-logs] CVS: scummvm/queen graphics.cpp,1.36,1.37 logic.cpp,1.63,1.64 resource.cpp,1.19,1.20 resource.h,1.15,1.16 sound.cpp,1.4,1.5 talk.cpp,1.24,1.25
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list