[Scummvm-cvs-logs] CVS: scummvm object.cpp,1.49,1.50

James Brown ender at users.sourceforge.net
Wed Apr 3 08:46:17 CEST 2002


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

Modified Files:
	object.cpp 
Log Message:
Fix removal of objects in Zak/Indy3/Loom



Index: object.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/object.cpp,v
retrieving revision 1.49
retrieving revision 1.50
diff -C2 -d -r1.49 -r1.50
*** object.cpp	3 Apr 2002 15:45:32 -0000	1.49
--- object.cpp	3 Apr 2002 16:20:17 -0000	1.50
***************
*** 26,32 ****
  bool Scumm::getClass(int obj, int cls) {
  	checkRange(_numGlobalObjects-1, 0, obj, "Object %d out of range in getClass");
! 
! 	
  	checkRange(32,1,cls,"Class %d out of range in getClass");
  	if (_features && GF_SMALL_HEADER) {
  		byte *oldClass = (byte*)&_classData[obj];
--- 26,32 ----
  bool Scumm::getClass(int obj, int cls) {
  	checkRange(_numGlobalObjects-1, 0, obj, "Object %d out of range in getClass");
! 	cls &= 0x7F;
  	checkRange(32,1,cls,"Class %d out of range in getClass");
+ 
  	if (_features && GF_SMALL_HEADER) {
  		byte *oldClass = (byte*)&_classData[obj];
***************
*** 35,40 ****
  
  		return (oldClass[cls/8] & bit_table[cls&0x07]) != 0;
! 	} else {
! 		cls &= 0x7F;
  		return (_classData[obj] & (1<<(cls-1))) != 0;	
  	}
--- 35,39 ----
  
  		return (oldClass[cls/8] & bit_table[cls&0x07]) != 0;
! 	} else {		
  		return (_classData[obj] & (1<<(cls-1))) != 0;	
  	}
***************
*** 43,54 ****
  void Scumm::putClass(int obj, int cls, bool set) {
  	checkRange(_numGlobalObjects-1, 0, obj, "Object %d out of range in putClass");
- 
  	cls &= 0x7F;
  	checkRange(32,1,cls,"Class %d out of range in getClass");
  
! 	if (set)
! 		_classData[obj] |= (1<<(cls-1));
! 	else
! 		_classData[obj] &= ~(1<<(cls-1));
  }
  
--- 42,64 ----
  void Scumm::putClass(int obj, int cls, bool set) {
  	checkRange(_numGlobalObjects-1, 0, obj, "Object %d out of range in putClass");
  	cls &= 0x7F;
  	checkRange(32,1,cls,"Class %d out of range in getClass");
  
! 	if (_features && GF_SMALL_HEADER) {
! 		byte *oldClass = (byte*)&_classData[obj];
! 		if (cls == 32)	// CLASS_TOUCHABLE
! 			cls = 23;
! 
! 		if (set)
! 			oldClass[cls/8] |= bit_table[cls&0x07];
! 		else
! 			oldClass[cls/8] &= bit_table[cls&0x07]^0xff;
! 
! 	} else {		
! 		if (set)
! 			_classData[obj] |= (1<<(cls-1));
! 		else
! 			_classData[obj] &= ~(1<<(cls-1));
! 	}
  }
  
***************
*** 783,786 ****
--- 793,800 ----
  
  	fo->roomptr = roomptr = getResourceAddress(rtRoom, room);
+ 	if (!roomptr) {	// FIXME: ZAK256 AIRPORT WORKAROUND (buying book from devotee)
+ 		warning("findObjectInRoom: failed getting roomptr to %d", room);
+ 		return;
+ 	}
  	roomhdr = (RoomHeader*)findResourceData(MKID('RMHD'), roomptr);
  	





More information about the Scummvm-git-logs mailing list