[Scummvm-cvs-logs] CVS: scummvm/saga isomap.cpp,1.42,1.43 isomap.h,1.18,1.19 music.cpp,1.49,1.50 objectmap.cpp,1.39,1.40 render.cpp,1.52,1.53 saga.cpp,1.102,1.103 script.cpp,1.62,1.63 sfuncs.cpp,1.95,1.96 sthread.cpp,1.75,1.76

Andrew Kurushin h00ligan at users.sourceforge.net
Sun Apr 3 08:33:10 CEST 2005


Update of /cvsroot/scummvm/scummvm/saga
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24715

Modified Files:
	isomap.cpp isomap.h music.cpp objectmap.cpp render.cpp 
	saga.cpp script.cpp sfuncs.cpp sthread.cpp 
Log Message:
- fixed tile doors drawing
- right mouse action fixed


Index: isomap.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/isomap.cpp,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -d -r1.42 -r1.43
--- isomap.cpp	2 Apr 2005 20:04:38 -0000	1.42
+++ isomap.cpp	3 Apr 2005 15:32:02 -0000	1.43
@@ -230,7 +230,7 @@
 	if (_multiTable == NULL) {
 		memoryError("IsoMap::loadMulti");
 	}
-	debug(0,"resourceLength=%d but should be %d",resourceLength, 14*_multiCount + 2);
+
 	for (i = 0; i < _multiCount; i++) {
 		multiTileEntryData = &_multiTable[i];
 		readS.readUint32();//skip
@@ -370,7 +370,6 @@
 				warning("something terrible happened");
 				return 1;
 			}
-
 			return tileIndex;
 		}
 	}
@@ -606,7 +605,7 @@
 	int16 u, v;
 	Point s;
 	Point s0;
-	int16 tileIndex;
+	uint16 tileIndex;
 	Location copyLocation(location);
 
 	if (_tilePlatformsCount <= platformIndex) {
@@ -646,7 +645,7 @@
 				tileIndex = tilePlatform->tiles[u][v];
 				if (tileIndex != 0) {
 					if (tileIndex & SAGA_MULTI_TILE) {
-						tileIndex = findMulti(tileIndex, absU + u, absU + v, absH);
+						tileIndex = findMulti(tileIndex, absU + u, absV + v, absH);
 					}
 
 					drawTile(ds, tileIndex, s, &copyLocation);
@@ -661,7 +660,7 @@
 	int16 u, v;
 	Point s;
 	Point s0;
-	int16 tileIndex;
+	uint16 tileIndex;
 
 	if (_tilePlatformsCount <= platformIndex) {
 		error("IsoMap::drawPlatform wrong platformIndex");
@@ -698,7 +697,7 @@
 				tileIndex = tilePlatform->tiles[u][v];
 				if (tileIndex > 1) {
 					if (tileIndex & SAGA_MULTI_TILE) {
-						tileIndex = findMulti(tileIndex, absU + u, absU + v, absH);
+						tileIndex = findMulti(tileIndex, absU + u, absV + v, absH);
 					}
 
 					drawTile(ds, tileIndex, s, NULL);
@@ -1342,6 +1341,17 @@
 	}
 }
 
+void IsoMap::setTileDoorState(int doorNumber, int doorState) {
+	MultiTileEntryData *multiTileEntryData;
+
+	if ((doorNumber < 0) || (doorNumber >= _multiCount)) {
+		error("setTileDoorState: doorNumber >= _multiCount");
+	}
+	
+	multiTileEntryData = &_multiTable[doorNumber];
+	multiTileEntryData->currentState = doorState;
+}
+
 static const int16 directions[8][2] = {
 	{	16,		16},
 	{	16,		0},
@@ -1354,6 +1364,7 @@
 };
 
 
+
 bool IsoMap::nextTileTarget(ActorData* actor) {
 	uint16 dir;
 

Index: isomap.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/isomap.h,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- isomap.h	13 Mar 2005 17:43:50 -0000	1.18
+++ isomap.h	3 Apr 2005 15:32:03 -0000	1.19
@@ -166,7 +166,8 @@
 	void placeOnTileMap(const Location &start, Location &result, int16 distance, uint16 direction);
 	void findTilePath(ActorData* actor, const Location &start, const Location &end);
 	bool nextTileTarget(ActorData* actor);
-	
+	void setTileDoorState(int doorNumber, int doorState);
+
 private:
 	void drawTiles(SURFACE *ds, const Location *location);
 	void drawMetaTile(SURFACE *ds, uint16 metaTileIndex, const Point &point, int16 absU, int16 absV);

Index: music.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/music.cpp,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -d -r1.49 -r1.50
--- music.cpp	12 Mar 2005 18:55:42 -0000	1.49
+++ music.cpp	3 Apr 2005 15:32:03 -0000	1.50
@@ -268,7 +268,7 @@
 			stopMusic();
 		break;
 	default:
-		warning("Unhandled meta event: %02x", type);
+		//warning("Unhandled meta event: %02x", type);
 		break;
 	}
 }

Index: objectmap.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/objectmap.cpp,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -d -r1.39 -r1.40
--- objectmap.cpp	18 Mar 2005 17:11:36 -0000	1.39
+++ objectmap.cpp	3 Apr 2005 15:32:03 -0000	1.40
@@ -133,13 +133,26 @@
 }
 
 void HitZone::draw(SURFACE *ds, int color) {
-	int i, pointsCount;
+	int i, pointsCount, j;
+	Location location;
 	HitZone::ClickArea *clickArea;
 	Point *points;
 	for (i = 0; i < _clickAreasCount; i++) {
 		clickArea = &_clickAreas[i];
 		pointsCount = clickArea->pointsCount;
-		points = clickArea->points;
+		if (_vm->_scene->getFlags() & kSceneFlagISO) {
+			points = (Point*)malloc(sizeof(Point) * pointsCount);
+			for (j = 0; j < pointsCount; j++) {
+				location.u() = clickArea->points[j].x;
+				location.v() = clickArea->points[j].y;
+				location.z = 0;
+				_vm->_isoMap->tileCoordsToScreenPoint(location, points[j]);
+			}
+			//
+		} else {
+			points = clickArea->points;
+		}
+
 		if (pointsCount == 2) {
 			// 2 points represent a box
 			drawFrame(ds, &points[0], &points[1], color);
@@ -149,6 +162,10 @@
 				drawPolyLine(ds, points, pointsCount, color);
 			}
 		}
+		if (_vm->_scene->getFlags() & kSceneFlagISO) {
+			free(points);
+		}
+
 	}
 }
 

Index: render.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/render.cpp,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -d -r1.52 -r1.53
--- render.cpp	27 Jan 2005 20:07:01 -0000	1.52
+++ render.cpp	3 Apr 2005 15:32:03 -0000	1.53
@@ -124,15 +124,15 @@
 
 		if (_vm->_interface->getMode() != kPanelFade) {
 			// Display scene maps, if applicable
+
+			// Draw queued actors
+			_vm->_actor->drawActors();
 			if (getFlags() & RF_OBJECTMAP_TEST) {
 				if (_vm->_scene->_objectMap)
 					_vm->_scene->_objectMap->draw(backbuf_surface, mouse_pt, kITEColorBrightWhite, kITEColorBlack);
 				if (_vm->_scene->_actionMap)
 					_vm->_scene->_actionMap->draw(backbuf_surface, mouse_pt, kITEColorRed, kITEColorBlack);
 			}
-
-			// Draw queued actors
-			_vm->_actor->drawActors();
 			if (getFlags() & RF_ACTOR_PATH_TEST) {
 				_vm->_actor->drawPathTest();
 			}

Index: saga.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/saga.cpp,v
retrieving revision 1.102
retrieving revision 1.103
diff -u -d -r1.102 -r1.103
--- saga.cpp	25 Mar 2005 17:55:52 -0000	1.102
+++ saga.cpp	3 Apr 2005 15:32:03 -0000	1.103
@@ -390,7 +390,7 @@
 			error("SagaEngine::loadStrings wrong strings table");
 		}
 		stringsTable.strings[i] = (const char *)stringsTable.stringsPointer + offset;
-		debug(9, "string[%i]=%s", i, stringsTable.strings[i]);
+		//debug(9, "string[%i]=%s", i, stringsTable.strings[i]);
 		i++;
 	}
 	stringsTable.stringsCount = stringsCount;

Index: script.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/script.cpp,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -d -r1.62 -r1.63
--- script.cpp	18 Mar 2005 17:11:37 -0000	1.62
+++ script.cpp	3 Apr 2005 15:32:03 -0000	1.63
@@ -743,10 +743,12 @@
 						newRightButtonVerb = _leftButtonVerb = kVerbWalkTo;
 					}
 				} else {
-					if (_firstObjectSet) {
-						objectId = ID_NOTHING;
-					} else {
-						newRightButtonVerb = _leftButtonVerb = kVerbLookAt;
+					if (newRightButtonVerb == kVerbLookOnly) {
+						if (_firstObjectSet) {
+							objectId = ID_NOTHING;
+						} else {
+							newRightButtonVerb = _leftButtonVerb = kVerbLookAt;
+						}
 					}
 				}
 

Index: sfuncs.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/sfuncs.cpp,v
retrieving revision 1.95
retrieving revision 1.96
diff -u -d -r1.95 -r1.96
--- sfuncs.cpp	18 Mar 2005 17:11:37 -0000	1.95
+++ sfuncs.cpp	3 Apr 2005 15:32:04 -0000	1.96
@@ -42,6 +42,7 @@
 #include "saga/objectmap.h"
 
 #include "saga/scene.h"
+#include "saga/isomap.h"
 
 namespace Saga {
 
@@ -583,7 +584,7 @@
 	doorNumber = thread->pop();
 
 	if (_vm->_scene->getFlags() & kSceneFlagISO) {
-		//todo: it
+		_vm->_isoMap->setTileDoorState(doorNumber, 1);
 	} else {
 		_vm->_scene->setDoorState(doorNumber, 0);
 	}
@@ -596,7 +597,7 @@
 	doorNumber = thread->pop();
 
 	if (_vm->_scene->getFlags() & kSceneFlagISO) {
-		//todo: it
+		_vm->_isoMap->setTileDoorState(doorNumber, 0);
 	} else {
 		_vm->_scene->setDoorState(doorNumber, 0xff);
 	}
@@ -1319,7 +1320,7 @@
 	doorState = thread->pop();
 
 	if (_vm->_scene->getFlags() & kSceneFlagISO) {
-		//todo: it
+		_vm->_isoMap->setTileDoorState(doorNumber, doorState);
 	} else {
 		_vm->_scene->setDoorState(doorNumber, doorState);
 	}

Index: sthread.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/sthread.cpp,v
retrieving revision 1.75
retrieving revision 1.76
diff -u -d -r1.75 -r1.76
--- sthread.cpp	29 Mar 2005 19:16:46 -0000	1.75
+++ sthread.cpp	3 Apr 2005 15:32:04 -0000	1.76
@@ -228,7 +228,7 @@
 								operandName = #opName;					\
 							}
 						
-		debug(8, "Executing thread offset: %lu (%x) stack: %d", thread->_instructionOffset, operandChar, thread->pushedSize());
+//		debug(8, "Executing thread offset: %lu (%x) stack: %d", thread->_instructionOffset, operandChar, thread->pushedSize());
 		operandName="";
 		switch (operandChar) {
 		CASEOP(opNextBlock)





More information about the Scummvm-git-logs mailing list