[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