[Scummvm-cvs-logs] CVS: scummvm/saga input.cpp,1.29,1.30 interface.cpp,1.49,1.50 interface.h,1.18,1.19 rscfile.cpp,1.18,1.19 saga.cpp,1.78,1.79 scene.cpp,1.72,1.73 scene.h,1.31,1.32 script.h,1.45,1.46 sfuncs.cpp,1.66,1.67 sthread.cpp,1.54,1.55
Eugene Sandulenko
sev at users.sourceforge.net
Thu Jan 6 06:04:00 CET 2005
Update of /cvsroot/scummvm/scummvm/saga
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8714
Modified Files:
input.cpp interface.cpp interface.h rscfile.cpp saga.cpp
scene.cpp scene.h script.h sfuncs.cpp sthread.cpp
Log Message:
Next batch of panel-related fixes. Still wrong.
NOTE: lines which start with `;' should contain calls to not yet
implemented subsystems like Conversation subsystem
Index: input.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/input.cpp,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -d -r1.29 -r1.30
--- input.cpp 2 Jan 2005 20:29:27 -0000 1.29
+++ input.cpp 6 Jan 2005 14:02:52 -0000 1.30
@@ -81,10 +81,16 @@
break;
case 27: // Esc
// Skip to next scene skip target
- if (!_interface->getMode() == kPanelNull) // FIXME: hack
- _actor->abortAllSpeeches();
- else
- _scene->skipScene();
+ switch (_interface->getMode()) {
+ case kPanelNull:
+ if (_scene->isInDemo())
+ _scene->skipScene();
+ else
+ _actor->abortAllSpeeches();
+ break;
+ default:
+ break;
+ }
break;
default:
break;
Index: interface.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/interface.cpp,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -d -r1.49 -r1.50
--- interface.cpp 4 Jan 2005 16:10:43 -0000 1.49
+++ interface.cpp 6 Jan 2005 14:02:52 -0000 1.50
@@ -238,7 +238,8 @@
_activeVerb = I_VERB_WALKTO;
_active = 0;
- _panelMode = _savedMode = kPanelNull;
+ _panelMode = _savedMode = _lockedMode = kPanelNull;
+ _inMainMode = false;
*_statusText = 0;
_inventoryCount = 0;
@@ -274,6 +275,12 @@
// TODO: Is this where we should hide/show the mouse cursor?
_panelMode = mode;
+
+ if (_panelMode == kPanelConverse)
+ _inMainMode = false;
+ //else if (_panelMode == kPanelInventory)
+ // _inMainMode = true;
+
draw();
return SUCCESS;
@@ -355,16 +362,19 @@
lportrait.x = xbase + _iDesc.lportrait_x;
lportrait.y = ybase + _iDesc.lportrait_y;
- _vm->_sprite->draw(back_buf, _defPortraits, _leftPortrait, lportrait, 256);
+ if (_panelMode == kPanelMain || _panelMode == kPanelConverse ||
+ _lockedMode == kPanelMain || _lockedMode == kPanelConverse)
+ _vm->_sprite->draw(back_buf, _defPortraits, _leftPortrait, lportrait, 256);
- if (_panelMode == kPanelConverse && _iDesc.rportrait_x >= 0) {
+ if (!_inMainMode && _iDesc.rportrait_x >= 0) {
rportrait.x = xbase + _iDesc.rportrait_x;
rportrait.y = ybase + _iDesc.rportrait_y;
_vm->_sprite->draw(back_buf, _scenePortraits, _rightPortrait, rportrait, 256);
}
- drawInventory();
+ if (_inMainMode)
+ drawInventory();
return SUCCESS;
}
Index: interface.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/interface.h,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- interface.h 2 Jan 2005 20:29:27 -0000 1.18
+++ interface.h 6 Jan 2005 14:02:53 -0000 1.19
@@ -211,6 +211,9 @@
int getMode(void) { return _panelMode; }
void rememberMode() { _savedMode = _panelMode; }
void restoreMode() { _panelMode = _savedMode; }
+ void lockMode() { _lockedMode = _panelMode; }
+ void unlockMode() { _panelMode = _lockedMode; }
+ bool isInMainMode() { return _inMainMode; }
int setStatusText(const char *new_txt);
int loadScenePortraits(int res);
int setLeftPortrait(int portrait);
@@ -240,6 +243,8 @@
INTERFACE_DESC _iDesc;
int _panelMode;
int _savedMode;
+ int _lockedMode;
+ bool _inMainMode;
INTERFACE_PANEL _cPanel;
INTERFACE_PANEL _dPanel;
char _statusText[STATUS_TEXT_LEN];
Index: rscfile.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/rscfile.cpp,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- rscfile.cpp 2 Jan 2005 20:29:27 -0000 1.18
+++ rscfile.cpp 6 Jan 2005 14:02:53 -0000 1.19
@@ -253,6 +253,9 @@
break;
}
+ if (!(_vm->_features & GF_WYRMKEEP))
+ substnum = -1;
+
if (substnum != -1) {
File in;
Index: saga.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/saga.cpp,v
retrieving revision 1.78
retrieving revision 1.79
diff -u -d -r1.78 -r1.79
--- saga.cpp 2 Jan 2005 20:29:27 -0000 1.78
+++ saga.cpp 6 Jan 2005 14:02:53 -0000 1.79
@@ -245,7 +245,11 @@
if (msec > MAX_TIME_DELTA) {
msec = MAX_TIME_DELTA;
}
- _actor->direct(msec);
+ if (_vm->_interface->getMode() == kPanelMain ||
+ _vm->_interface->getMode() == kPanelConverse ||
+ _vm->_interface->getMode() == kPanelNull)
+ _actor->direct(msec);
+
_events->handleEvents(msec);
_script->executeThreads(msec);
}
Index: scene.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/scene.cpp,v
retrieving revision 1.72
retrieving revision 1.73
diff -u -d -r1.72 -r1.73
--- scene.cpp 4 Jan 2005 18:54:29 -0000 1.72
+++ scene.cpp 6 Jan 2005 14:02:53 -0000 1.73
@@ -1046,6 +1046,8 @@
EVENT event;
EVENT *q_event;
+ _inGame = true;
+
switch (param) {
case SCENE_BEGIN:
_vm->_sound->stopVoice();
Index: scene.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/scene.h,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -d -r1.31 -r1.32
--- scene.h 4 Jan 2005 17:15:53 -0000 1.31
+++ scene.h 6 Jan 2005 14:02:53 -0000 1.32
@@ -234,6 +234,7 @@
int draw(SURFACE *);
int getMode();
int getFlags() { return _desc.flags; }
+ bool isInDemo() { return !_inGame; }
void getBGMaskInfo(int &width, int &height, byte *&buffer, size_t &bufferLength);
int isBGMaskPresent() {
Index: script.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/script.h,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -d -r1.45 -r1.46
--- script.h 3 Jan 2005 21:17:32 -0000 1.45
+++ script.h 6 Jan 2005 14:02:53 -0000 1.46
@@ -313,14 +313,14 @@
int SF_takeObject(SCRIPTFUNC_PARAMS);
int SF_objectIsCarried(SCRIPTFUNC_PARAMS);
int sfStatusBar(SCRIPTFUNC_PARAMS);
- int SF_commandMode(SCRIPTFUNC_PARAMS);
+ int SF_mainMode(SCRIPTFUNC_PARAMS);
int sfScriptWalkTo(SCRIPTFUNC_PARAMS);
int SF_doAction(SCRIPTFUNC_PARAMS);
int sfSetActorFacing(SCRIPTFUNC_PARAMS);
int sfStartBgdAnim(SCRIPTFUNC_PARAMS);
int sfStopBgdAnim(SCRIPTFUNC_PARAMS);
- int SF_freezeInterface(SCRIPTFUNC_PARAMS);
- int SF_dialogMode(SCRIPTFUNC_PARAMS);
+ int sfLockUser(SCRIPTFUNC_PARAMS);
+ int SF_preDialog(SCRIPTFUNC_PARAMS);
int SF_killActorThreads(SCRIPTFUNC_PARAMS);
int SF_faceTowards(SCRIPTFUNC_PARAMS);
int sfSetFollower(SCRIPTFUNC_PARAMS);
Index: sfuncs.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/sfuncs.cpp,v
retrieving revision 1.66
retrieving revision 1.67
diff -u -d -r1.66 -r1.67
--- sfuncs.cpp 3 Jan 2005 21:17:32 -0000 1.66
+++ sfuncs.cpp 6 Jan 2005 14:02:53 -0000 1.67
@@ -52,14 +52,14 @@
OPCODE(SF_takeObject),
OPCODE(SF_objectIsCarried),
OPCODE(sfStatusBar),
- OPCODE(SF_commandMode),
+ OPCODE(SF_mainMode),
OPCODE(sfScriptWalkTo),
OPCODE(SF_doAction),
OPCODE(sfSetActorFacing),
OPCODE(sfStartBgdAnim),
OPCODE(sfStopBgdAnim),
- OPCODE(SF_freezeInterface),
- OPCODE(SF_dialogMode),
+ OPCODE(sfLockUser),
+ OPCODE(SF_preDialog),
OPCODE(SF_killActorThreads),
OPCODE(SF_faceTowards),
OPCODE(sfSetFollower),
@@ -192,8 +192,14 @@
}
// Script function #5 (0x05)
-int Script::SF_commandMode(SCRIPTFUNC_PARAMS) {
- return _vm->_interface->setMode(kPanelMain);
+int Script::SF_mainMode(SCRIPTFUNC_PARAMS) {
+ ; // center actor
+ ; // show verb
+ _vm->_interface->activate();
+ //_vm->_interface->setMode(kPanelInventory);
+ ; // set pointer verb
+
+ return SUCCESS;
}
// Script function #6 (0x06) blocking
@@ -278,7 +284,7 @@
// continues to run. If the parameter is false, the user interface is
// reenabled.
// Param1: boolean
-int Script::SF_freezeInterface(SCRIPTFUNC_PARAMS) {
+int Script::sfLockUser(SCRIPTFUNC_PARAMS) {
ScriptDataWord b_param;
b_param = thread->pop();
@@ -294,8 +300,16 @@
// Script function #12 (0x0C)
// Disables mouse input, etc.
-int Script::SF_dialogMode(SCRIPTFUNC_PARAMS) {
- return _vm->_interface->setMode(kPanelConverse);
+int Script::SF_preDialog(SCRIPTFUNC_PARAMS) {
+ _vm->_interface->deactivate();
+ ; // clear converse text
+ if (_vm->_interface->isInMainMode())
+ _vm->_interface->setMode(kPanelConverse);
+ else
+ ; // display zero text
+ _vm->_interface->setMode(kPanelNull);
+
+ debug(1, "stub: SF_preDialog()");
}
// Script function #13 (0x0D)
@@ -972,7 +986,6 @@
PALENTRY *pal;
// Fade down
- _vm->_gfx->showCursor(false);
_vm->_gfx->getCurrentPal(cur_pal);
_vm->_gfx->palToBlackWait(back_buf, cur_pal, kNormalFadeDuration);
Index: sthread.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/sthread.cpp,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -d -r1.54 -r1.55
--- sthread.cpp 5 Jan 2005 07:13:15 -0000 1.54
+++ sthread.cpp 6 Jan 2005 14:02:53 -0000 1.55
@@ -27,6 +27,7 @@
#include "saga/gfx.h"
#include "saga/actor.h"
#include "saga/console.h"
+#include "saga/interface.h"
#include "saga/script.h"
@@ -784,6 +785,10 @@
break;
// (DLGX): Run dialogue interface
case 0x55:
+ if (0) {
+ _vm->_interface->activate();
+ _vm->_interface->setMode(kPanelConverse);
+ }
warning("dialog_end opcode: stub");
break;
// (DLGO): Add a dialogue option to interface
More information about the Scummvm-git-logs
mailing list