[Scummvm-cvs-logs] CVS: scummvm/saga interface.cpp,1.125,1.126 interface.h,1.69,1.70 scene.cpp,1.140,1.141 sthread.cpp,1.99,1.100
Eugene Sandulenko
sev at users.sourceforge.net
Wed Aug 10 06:59:46 CEST 2005
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/simon sound.cpp,1.89,1.90
- Next message: [Scummvm-cvs-logs] CVS: scummvm/saga actor.cpp,1.169,1.170 animation.cpp,1.52,1.53 events.cpp,1.63,1.64 events.h,1.20,1.21 ihnm_introproc.cpp,1.51,1.52 interface.cpp,1.126,1.127 ite_introproc.cpp,1.65,1.66 palanim.cpp,1.25,1.26 scene.cpp,1.141,1.142 scene.h,1.72,1.73 script.cpp,1.76,1.77 sfuncs.cpp,1.147,1.148
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/saga
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10567
Modified Files:
interface.cpp interface.h scene.cpp sthread.cpp
Log Message:
Implement part of chapter selection panel.
Index: interface.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/interface.cpp,v
retrieving revision 1.125
retrieving revision 1.126
diff -u -d -r1.125 -r1.126
--- interface.cpp 8 Aug 2005 07:44:51 -0000 1.125
+++ interface.cpp 10 Aug 2005 13:56:51 -0000 1.126
@@ -27,6 +27,7 @@
#include "saga/gfx.h"
#include "saga/actor.h"
#include "saga/console.h"
+#include "saga/events.h"
#include "saga/font.h"
#include "saga/objectmap.h"
#include "saga/isomap.h"
@@ -264,7 +265,7 @@
switch (_panelMode) {
case kPanelMain:
if (_vm->getGameType() == GType_IHNM)
- warning("FIXME: Implement IHNM differences from ExecuteInvontoryPanel");
+ warning("FIXME: Implement IHNM differences from ExecuteInventoryPanel");
_mainPanel.currentButton = NULL;
break;
@@ -301,6 +302,8 @@
_vm->_render->setFlag(RF_DEMO_SUBST);
_vm->_gfx->getCurrentPal(_mapSavedPal);
break;
+ case kPanelChapterSelection:
+ break;
}
draw();
@@ -1169,6 +1172,56 @@
}
}
+void Interface::handleChapterSelectionUpdate(const Point& mousePoint) {
+
+}
+
+void Interface::handleChapterSelectionClick(const Point& mousePoint) {
+ int obj = _vm->_script->_pointerObject;
+
+ _vm->_actor->abortSpeech();
+
+ if (obj) {
+ int script = 0;
+ HitZone *hitZone;
+ ActorData *a;
+ ObjectData *o;
+ EVENT event;
+
+ switch (objectTypeId(obj)) {
+ case kGameObjectHitZone:
+ hitZone = _vm->_scene->_actionMap->getHitZone(objectIdToIndex(obj));
+ if (hitZone->getFlags() & kHitZoneExit)
+ script = hitZone->getScriptNumber();
+ break;
+
+ case kGameObjectActor:
+ a = _vm->_actor->getActor(obj);
+ script = a->scriptEntrypointNumber;
+ break;
+
+ case kGameObjectObject:
+ o = _vm->_actor->getObj(obj);
+ script = o->scriptEntrypointNumber;
+ break;
+ }
+
+ if (script > 0) {
+ event.type = ONESHOT_EVENT;
+ event.code = SCRIPT_EVENT;
+ event.op = EVENT_EXEC_NONBLOCKING;
+ event.time = 0;
+ event.param = _vm->_scene->getScriptModuleNumber();
+ event.param2 = script;
+ event.param3 = kVerbIHNMUse; // Action
+ event.param4 = obj; // Object
+ event.param5 = 0; // With Object
+ event.param6 = obj; // Actor
+
+ _vm->_events->queue(&event);
+ }
+ }
+}
void Interface::setOption(PanelButton *panelButton) {
char * fileName;
@@ -1210,7 +1263,8 @@
return;
}
- if (_panelMode == kPanelMain) {
+ switch (_panelMode) {
+ case kPanelMain:
if (updateFlag & UPDATE_MOUSEMOVE) {
bool lastWasPlayfield = _lastMousePoint.y < _vm->getSceneHeight();
if (mousePoint.y < _vm->getSceneHeight()) {
@@ -1235,13 +1289,11 @@
}
}
}
- }
+ break;
- if (_panelMode == kPanelConverse) {
+ case kPanelConverse:
if (updateFlag & UPDATE_MOUSEMOVE) {
-
handleConverseUpdate(mousePoint);
-
} else {
if (updateFlag & UPDATE_MOUSECLICK) {
handleConverseClick(mousePoint);
@@ -1257,13 +1309,11 @@
_vm->_puzzle->handleClick(mousePoint);
}
}
- }
+ break;
- if (_panelMode == kPanelOption) {
+ case kPanelOption:
if (updateFlag & UPDATE_MOUSEMOVE) {
-
handleOptionUpdate(mousePoint);
-
} else {
if (updateFlag & UPDATE_MOUSECLICK) {
handleOptionClick(mousePoint);
@@ -1279,21 +1329,19 @@
calcOptionSaveSlider();
}
}
- }
+ break;
- if (_panelMode == kPanelQuit) {
+ case kPanelQuit:
if (updateFlag & UPDATE_MOUSEMOVE) {
-
handleQuitUpdate(mousePoint);
-
} else {
if (updateFlag & UPDATE_MOUSECLICK) {
handleQuitClick(mousePoint);
}
}
- }
+ break;
- if (_panelMode == kPanelLoad) {
+ case kPanelLoad:
if (updateFlag & UPDATE_MOUSEMOVE) {
handleLoadUpdate(mousePoint);
@@ -1303,9 +1351,9 @@
handleLoadClick(mousePoint);
}
}
- }
+ break;
- if (_panelMode == kPanelSave) {
+ case kPanelSave:
if (updateFlag & UPDATE_MOUSEMOVE) {
handleSaveUpdate(mousePoint);
@@ -1315,20 +1363,31 @@
handleSaveClick(mousePoint);
}
}
- }
+ break;
- if (_panelMode == kPanelMap) {
+ case kPanelMap:
if (updateFlag & UPDATE_MOUSECLICK)
mapPanelClean();
- }
+ break;
- if (_panelMode == kPanelSceneSubstitute) {
+ case kPanelSceneSubstitute:
if (updateFlag & UPDATE_MOUSECLICK) {
_vm->_render->clearFlag(RF_DEMO_SUBST);
_vm->_gfx->setPalette(_mapSavedPal);
setMode(kPanelMain);
_vm->_script->setNoPendingVerb();
}
+ break;
+
+ case kPanelChapterSelection:
+ // TODO: panel has silent button
+ if (updateFlag & UPDATE_MOUSEMOVE) {
+ handleChapterSelectionUpdate(mousePoint);
+ } else {
+ if (updateFlag & UPDATE_MOUSECLICK)
+ handleChapterSelectionClick(mousePoint);
+ }
+ break;
}
_lastMousePoint = mousePoint;
Index: interface.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/interface.h,v
retrieving revision 1.69
retrieving revision 1.70
diff -u -d -r1.69 -r1.70
--- interface.h 7 Aug 2005 00:00:41 -0000 1.69
+++ interface.h 10 Aug 2005 13:56:51 -0000 1.70
@@ -70,7 +70,7 @@
kPanelPlacard,
kPanelMap,
kPanelSceneSubstitute,
- kPanelUnknown
+ kPanelChapterSelection
// kPanelInventory
};
@@ -313,6 +313,9 @@
void handleSaveUpdate(const Point& mousePoint); // save panel update
void handleSaveClick(const Point& mousePoint); // save panel click
+ void handleChapterSelectionUpdate(const Point& mousePoint);
+ void handleChapterSelectionClick(const Point& mousePoint);
+
void mapPanelShow();
void mapPanelClean();
Index: scene.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/scene.cpp,v
retrieving revision 1.140
retrieving revision 1.141
diff -u -d -r1.140 -r1.141
--- scene.cpp 7 Aug 2005 00:00:41 -0000 1.140
+++ scene.cpp 10 Aug 2005 13:56:51 -0000 1.141
@@ -620,7 +620,7 @@
_vm->_interface->activate();
if (loadSceneParams->chapter == 8 || loadSceneParams->chapter == -1)
- _vm->_interface->setMode(kPanelUnknown);
+ _vm->_interface->setMode(kPanelChapterSelection);
else
_vm->_interface->setMode(kPanelMain);
Index: sthread.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/sthread.cpp,v
retrieving revision 1.99
retrieving revision 1.100
diff -u -d -r1.99 -r1.100
--- sthread.cpp 9 Aug 2005 16:01:04 -0000 1.99
+++ sthread.cpp 10 Aug 2005 13:56:51 -0000 1.100
@@ -649,9 +649,11 @@
}
}
- if (sampleResourceId < 0 || sampleResourceId > 4000) {
+ if (sampleResourceId < 0 || sampleResourceId > 4000)
+ sampleResourceId = -1;
+
+ if (_vm->getGameType() == GType_ITE && !sampleResourceId)
sampleResourceId = -1;
- }
_vm->_actor->actorSpeech(actorId, strings, stringsCount, sampleResourceId, speechFlags);
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/simon sound.cpp,1.89,1.90
- Next message: [Scummvm-cvs-logs] CVS: scummvm/saga actor.cpp,1.169,1.170 animation.cpp,1.52,1.53 events.cpp,1.63,1.64 events.h,1.20,1.21 ihnm_introproc.cpp,1.51,1.52 interface.cpp,1.126,1.127 ite_introproc.cpp,1.65,1.66 palanim.cpp,1.25,1.26 scene.cpp,1.141,1.142 scene.h,1.72,1.73 script.cpp,1.76,1.77 sfuncs.cpp,1.147,1.148
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list