[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