[Scummvm-cvs-logs] SF.net SVN: scummvm: [29291] scummvm/trunk/engines/cruise
yazoo at users.sourceforge.net
yazoo at users.sourceforge.net
Sun Oct 28 15:41:38 CET 2007
Revision: 29291
http://scummvm.svn.sourceforge.net/scummvm/?rev=29291&view=rev
Author: yazoo
Date: 2007-10-28 07:41:37 -0700 (Sun, 28 Oct 2007)
Log Message:
-----------
Find object fix
Walk fix
Modified Paths:
--------------
scummvm/trunk/engines/cruise/actor.cpp
scummvm/trunk/engines/cruise/cruise_main.cpp
scummvm/trunk/engines/cruise/cruise_main.h
scummvm/trunk/engines/cruise/function.cpp
scummvm/trunk/engines/cruise/object.cpp
Modified: scummvm/trunk/engines/cruise/actor.cpp
===================================================================
--- scummvm/trunk/engines/cruise/actor.cpp 2007-10-28 13:57:43 UTC (rev 29290)
+++ scummvm/trunk/engines/cruise/actor.cpp 2007-10-28 14:41:37 UTC (rev 29291)
@@ -581,8 +581,7 @@
}
//computePathfinding(returnVar2, params.X, params.Y, aniX, aniY, currentActor->stepX, currentActor->stepY);
-int16 computePathfinding(int16 *pSolution, int16 x, int16 y, int16 destX,
- int16 destY, int16 stepX, int16 stepY, int16 oldPathId) {
+int16 computePathfinding(int16 *pSolution, int16 x, int16 y, int16 destX, int16 destY, int16 stepX, int16 stepY, int16 oldPathId) {
persoStruct *perso;
int num;
@@ -762,16 +761,15 @@
void processAnimation(void) {
objectParamsQuery params;
int16 returnVar2[5];
- actorStruct *currentActor = &actorHead;
+ actorStruct *currentActor = actorHead.next;
actorStruct *nextActor;
while (currentActor) {
nextActor = currentActor->next;
- if (!currentActor->freeze && ((currentActor->type == 0)
- || (currentActor->type == 1))) {
- getMultipleObjectParam(currentActor->overlayNumber,
- currentActor->idx, ¶ms);
+ if (!currentActor->freeze && ((currentActor->type == 0) || (currentActor->type == 1)))
+ {
+ getMultipleObjectParam(currentActor->overlayNumber, currentActor->idx, ¶ms);
if (((animationStart && !currentActor->flag) || (!animationStart && currentActor->x_dest != -1 && currentActor->y_dest != -1)) && (currentActor->type == 0)) {
// mouse animation
Modified: scummvm/trunk/engines/cruise/cruise_main.cpp
===================================================================
--- scummvm/trunk/engines/cruise/cruise_main.cpp 2007-10-28 13:57:43 UTC (rev 29290)
+++ scummvm/trunk/engines/cruise/cruise_main.cpp 2007-10-28 14:41:37 UTC (rev 29291)
@@ -607,120 +607,111 @@
int selectDown = 0;
int menuDown = 0;
-int getCursorFromObject(int mouseX, int mouseY, int *outX, int *outY) {
- int16 var_2;
- int16 var_4;
- int16 var_14;
- int16 var_16;
- objectParamsQuery params;
- int16 var_10;
- int16 var_E;
- int16 var_C;
-// int16 var_42;
- int16 var_A;
- int16 var_6;
-
+int findObject(int mouseX, int mouseY, int *outObjOvl, int *outObjIdx)
+{
char objectName[80];
cellStruct *currentObject = cellHead.prev;
while (currentObject)
{
- if (currentObject->overlay >= 0 && overlayTable[currentObject->overlay].alreadyLoaded && (currentObject->type == 4 || currentObject->type == 1 || currentObject->type == 9 || currentObject->type == 3))
+ if (currentObject->overlay >= 0 && overlayTable[currentObject->overlay].alreadyLoaded && (currentObject->type == OBJ_TYPE_SPRITE || currentObject->type == OBJ_TYPE_MASK || currentObject->type == OBJ_TYPE_EXIT || currentObject->type == OBJ_TYPE_VIRTUEL))
{
char* pObjectName = getObjectName(currentObject->idx, overlayTable[currentObject->overlay].ovlData->specialString2);
if(pObjectName)
{
strcpy(objectName, pObjectName);
- if (strlen(objectName)) {
- if (currentObject->freeze == 0) {
- var_2 = currentObject->idx;
- var_4 = currentObject->overlay;
- var_14 = currentObject->followObjectIdx;
- var_16 = currentObject->followObjectOverlayIdx;
+ if (strlen(objectName) && (currentObject->freeze == 0))
+ {
+ int objIdx = currentObject->idx;
+ int objOvl = currentObject->overlay;
+ int linkedObjIdx = currentObject->followObjectIdx;
+ int linkedObjOvl = currentObject->followObjectOverlayIdx;
- getMultipleObjectParam(currentObject->overlay, currentObject->idx, ¶ms);
+ objectParamsQuery params;
+ getMultipleObjectParam(objOvl, objIdx, ¶ms);
- var_10 = 0;
- var_E = 0;
- var_C = 0;
+ int x2 = 0;
+ int y2 = 0;
+ int j2 = 0;
- if ((var_4 != var_16)
- && (var_2 != var_14)) {
- getMultipleObjectParam
- (var_16, var_14, ¶ms);
+ if ((objOvl != linkedObjOvl) || (objIdx != linkedObjIdx))
+ {
+ getMultipleObjectParam(linkedObjOvl, linkedObjIdx, ¶ms);
- var_C = params.X;
- var_E = params.Y;
- var_10 = params.fileIdx;
- }
+ x2 = params.X;
+ y2 = params.Y;
+ j2 = params.fileIdx;
+ }
- if (params.var5 >= 0 && params.fileIdx >= 0) {
- if (currentObject->type == 3) {
- assert(0);
+ if (params.var5 >= 0 && params.fileIdx >= 0)
+ {
+ if (currentObject->type == OBJ_TYPE_SPRITE || currentObject->type == OBJ_TYPE_MASK || currentObject->type == OBJ_TYPE_EXIT)
+ {
+ int x = params.X + x2;
+ int y = params.Y + y2;
+ int j = params.fileIdx;
- var_2 = params.scale;
- var_A = params.X + var_C;
+ if (j >= 0) {
+ j += j2;
+ }
- // TODO: this var3 is stupid, investigate...
- if ((var_A <= mouseX) && (var_A + params.fileIdx >= mouseX) && (mouseY >= params.Y + var_E) && (params.Y + var_E + var2 >= mouseY)) {
- *outX = var_16;
- *outY = var_14;
+ /*if ((filesDatabase[j].subData.resourceType == OBJ_TYPE_POLY) && (filesDatabase[j].subData.ptr)) {
+ ASSERT(0);
+ }
+ else*/
+ {
+ int numBitPlanes = filesDatabase[j].resType;
- return (currentObject->type);
+ int nWidth;
+ int nHeight;
+
+ if (numBitPlanes == 1)
+ {
+ nWidth = filesDatabase[j].widthInColumn / 2;
+ } else {
+ nWidth = filesDatabase[j].width;
}
- } else if (currentObject->type == 4 ||
- currentObject->type == 1 ||
- currentObject->type == 9) {
- int si;
- int var_8;
- int di;
- var_A = params.X + var_C;
- var_6 = params.Y + var_E;
+ nHeight = filesDatabase[j].height;
- di = params.fileIdx;
+ int offsetX = mouseX - x;
+ int offsetY = mouseY - y;
- if (di < 0) {
- di += var_10;
- }
-
- /* if ((filesDatabase[di].subData.resourceType == 8) && (filesDatabase[di].subData.ptr)) {
- assert(0);
- }
- */
+ if ((offsetX >= 0) && (offsetX < nWidth * 16) && (offsetY >= 0) && (nWidth <= nHeight) && filesDatabase[j].subData.ptr)
{
- var_4 = filesDatabase[di].resType;
-
- if (var_4 == 1) {
- var_C = filesDatabase[di].widthInColumn / 2;
- } else {
- var_C = filesDatabase[di].width;
+ if (numBitPlanes == 1)
+ {
}
+ else
+ {
+ }
- var_8 = filesDatabase[di].height;
+ printf("should compare to mask in findObject...\n");
- var_2 = mouseX - var_A;
- si = mouseY - var_6;
+ *outObjOvl = objOvl;
+ *outObjIdx = objIdx;
- if (var_2 > 0 && var_C > var_2 && si > 0 && var_8 >= si) {
- if (filesDatabase[di].subData.ptr) {
- if (var_4 == 1) {
- } else {
- }
+ printf("Selected: %s\n", objectName);
- printf("should compare to mask in getCursorFromObject...\n");
+ return currentObject->type;
+ }
+ }
+ }
+ else if (currentObject->type == OBJ_TYPE_VIRTUEL)
+ {
+ int x = params.X + x2;
+ int y = params.Y + y2;
+ int width = params.fileIdx;
+ int height = params.scale;
- *outX = var_16;
- *outY = var_14;
+ if ((mouseX >= x) && (mouseX <= x+width) && (mouseY >= y) && (mouseY <= y+height))
+ {
+ *outObjOvl = objOvl;
+ *outObjIdx = objIdx;
- printf("Selected: %s\n", objectName);
-
- return currentObject->type;
- }
- }
- }
+ return (currentObject->type);
}
}
}
@@ -731,8 +722,8 @@
currentObject = currentObject->prev;
}
- *outX = 0;
- *outY = 0;
+ *outObjOvl = 0;
+ *outObjIdx = 0;
return -1;
}
@@ -1120,7 +1111,7 @@
int Y;
int objIdx;
- objIdx = getCursorFromObject(mouseX, mouseY, &X, &Y);
+ objIdx = findObject(mouseX, mouseY, &X, &Y);
if (objIdx != -1)
{
@@ -1435,21 +1426,21 @@
if (mouseX != oldMouseX && mouseY != oldMouseY)
{
- int cursorType;
+ int objectType;
int newCursor1;
int newCursor2;
oldMouseX = mouseX;
oldMouseY = mouseY;
- cursorType = getCursorFromObject(mouseX, mouseY, &newCursor1, &newCursor2);
+ objectType = findObject(mouseX, mouseY, &newCursor1, &newCursor2);
- if (cursorType == 9)
+ if (objectType == 9)
{
changeCursor(CURSOR_EXIT);
}
else
- if (cursorType != -1)
+ if (objectType != -1)
{
changeCursor(CURSOR_MAGNIFYING_GLASS);
}
Modified: scummvm/trunk/engines/cruise/cruise_main.h
===================================================================
--- scummvm/trunk/engines/cruise/cruise_main.h 2007-10-28 13:57:43 UTC (rev 29290)
+++ scummvm/trunk/engines/cruise/cruise_main.h 2007-10-28 14:41:37 UTC (rev 29291)
@@ -67,6 +67,17 @@
#define ASSERT_PTR assert
#define ASSERT assert
+#define OBJ_TYPE_LINE 0
+#define OBJ_TYPE_MASK 1
+#define OBJ_TYPE_BGMK 2
+#define OBJ_TYPE_VIRTUEL 3
+#define OBJ_TYPE_SPRITE 4
+#define OBJ_TYPE_MSG 5
+#define OBJ_TYPE_SOUND 6
+#define OBJ_TYPE_FONT 7
+#define OBJ_TYPE_POLY 8
+#define OBJ_TYPE_EXIT 9
+
bool delphineUnpack(byte *dst, const byte *src, int len);
ovlData3Struct *getOvlData3Entry(int32 scriptNumber, int32 param);
Modified: scummvm/trunk/engines/cruise/function.cpp
===================================================================
--- scummvm/trunk/engines/cruise/function.cpp 2007-10-28 13:57:43 UTC (rev 29290)
+++ scummvm/trunk/engines/cruise/function.cpp 2007-10-28 14:41:37 UTC (rev 29291)
@@ -681,8 +681,9 @@
overlayIdx = currentScriptPtr->overlayNumber;
if (color == -1) {
- color = 0;
- ASSERT(0);
+ color = 1;
+ printf("Unimplemented automatic message color\n");
+ // ASSERT(0);
//color = calcTabSomething();
} else {
if (CVTLoaded) {
Modified: scummvm/trunk/engines/cruise/object.cpp
===================================================================
--- scummvm/trunk/engines/cruise/object.cpp 2007-10-28 13:57:43 UTC (rev 29290)
+++ scummvm/trunk/engines/cruise/object.cpp 2007-10-28 14:41:37 UTC (rev 29291)
@@ -57,8 +57,7 @@
return (&var_6[objIdx]);
}
-int16 getMultipleObjectParam(int16 overlayIdx, int16 objectIdx,
- objectParamsQuery *returnParam) {
+int16 getMultipleObjectParam(int16 overlayIdx, int16 objectIdx, objectParamsQuery *returnParam) {
int16 size;
int16 var_A;
int16 var_14;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list