[Scummvm-cvs-logs] CVS: scummvm sdl.cpp,1.29,1.30 object.cpp,1.19,1.20 actor.cpp,1.20,1.21

Ludvig Strigeus strigeus at users.sourceforge.net
Sat Dec 29 04:46:06 CET 2001


Update of /cvsroot/scummvm/scummvm
In directory usw-pr-cvs1:/tmp/cvs-serv11551

Modified Files:
	sdl.cpp object.cpp actor.cpp 
Log Message:
fixed two bugs in indy4.
actors were facing in the wrong direction on the stairs,
actors moved strangely in monte carlo

Index: sdl.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sdl.cpp,v
retrieving revision 1.29
retrieving revision 1.30
diff -C2 -d -r1.29 -r1.30
*** sdl.cpp	2001/12/28 17:56:53	1.29
--- sdl.cpp	2001/12/29 12:45:54	1.30
***************
*** 288,294 ****
--- 288,306 ----
  	dst = (byte*)screen->pixels + y*640*2 + x*2;
  	addDirtyRect(x,y,w,h);		
+ #ifdef DEBUG_CODE
+ 	byte black = GetAsyncKeyState(VK_SHIFT)<0 ? 0 : 0xFF;
  	do {
  		i=0;
  		do {
+ 			dst[i*2] = dst[i*2+1] = src[i] & black;
+ 		} while (++i!=w);
+ 		memcpy(dst+640, dst, w*2);
+ 		dst += 640*2;
+ 		src += 320;
+ 	} while (--h);
+ #else
+ 	do {
+ 		i=0;
+ 		do {
  			dst[i*2] = dst[i*2+1] = src[i];
  		} while (++i!=w);
***************
*** 297,302 ****
  		src += 320;
  	} while (--h);
- 
  #endif
  
  	SDL_UnlockSurface(screen);
--- 309,314 ----
  		src += 320;
  	} while (--h);
  #endif
+ #endif
  
  	SDL_UnlockSurface(screen);
***************
*** 327,331 ****
  		for (i=0; i<numDirtyRects; i++)
  			area += (dirtyRects[i].w * dirtyRects[i].h);
! 		debug(2,"update area %f %%", (float)area/640);
  #endif
  
--- 339,343 ----
  		for (i=0; i<numDirtyRects; i++)
  			area += (dirtyRects[i].w * dirtyRects[i].h);
! 		debug(2,"update area %f %%", (float)area/(640*400/100));
  #endif
  
***************
*** 501,505 ****
  		SDL_CreateThread((int (*)(void *))&music_thread, &scumm);
  	}
- 
  	
  
--- 513,516 ----

Index: object.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/object.cpp,v
retrieving revision 1.19
retrieving revision 1.20
diff -C2 -d -r1.19 -r1.20
*** object.cpp	2001/12/27 17:51:58	1.19
--- object.cpp	2001/12/29 12:45:54	1.20
***************
*** 153,158 ****
  		y = od->y_pos + (int16)READ_LE_UINT16(&imhd->hotspot[state].y);
  	} else {
! 		x = od->walk_x;
! 		y = od->walk_y;
  	}
  
--- 153,158 ----
  		y = od->y_pos + (int16)READ_LE_UINT16(&imhd->hotspot[state].y);
  	} else {
! 		x = (int16)READ_LE_UINT16(&od->walk_x);
! 		y = (int16)READ_LE_UINT16(&od->walk_y);
  	}
  

Index: actor.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/actor.cpp,v
retrieving revision 1.20
retrieving revision 1.21
diff -C2 -d -r1.20 -r1.21
*** actor.cpp	2001/12/27 17:51:57	1.20
--- actor.cpp	2001/12/29 12:45:54	1.21
***************
*** 163,166 ****
--- 163,167 ----
  	int specdir;
  	byte flags;
+ 	byte dirflag;
  
  	if (!a->ignoreBoxes) {
***************
*** 175,192 ****
  
  		flags = getBoxFlags(a->walkbox);
  
  		if ((flags&8) || getClass(a->number, 0x1E)) {
  			dir = 360 - dir;
  		}
  
  		if ((flags&0x10) || getClass(a->number, 0x1D)) {
  			dir = 180 - dir;
  		}
  
  		switch(flags & 7) {
  		case 1:
! 			return a->walkdata.XYFactor >0 ? 90 : 270;
  		case 2: 
! 			return a->walkdata.YXFactor >0 ? 180 : 0;
  		case 3: return 270;
  		case 4: return 90;
--- 176,199 ----
  
  		flags = getBoxFlags(a->walkbox);
+ 		
+ 		dirflag = ((a->walkdata.XYFactor>0) ? 1 : 0) |
+ 			        ((a->walkdata.YXFactor>0) ? 2 : 0);
+ 
  
  		if ((flags&8) || getClass(a->number, 0x1E)) {
  			dir = 360 - dir;
+ 			dirflag ^= 1;
  		}
  
  		if ((flags&0x10) || getClass(a->number, 0x1D)) {
  			dir = 180 - dir;
+ 			dirflag ^= 2;
  		}
  
  		switch(flags & 7) {
  		case 1:
! 			return (dirflag&1) ? 90 : 270;
  		case 2: 
! 			return (dirflag&2) ? 180 : 0;
  		case 3: return 270;
  		case 4: return 90;





More information about the Scummvm-git-logs mailing list