void DreamWebEngine::removeObFromInv() { if (_command == 100) return; // object doesn't exist assert(_objectType == kExObjectType); deleteExObject(_command); }
void DreamWebEngine::purgeALocation(uint8 index) { // index == al for (uint8 i = 0; i < kNumexobjects; ++i) { DynObject *t = getExAd(i); if (t->currentLocation == index && t->mapad[0] == 0) { deleteExObject(i); } } }
void DreamWebEngine::purgeAnItem() { const DynObject *extraObjects = _exData; for (size_t i = 0; i < kNumexobjects; ++i) { if (extraObjects[i].mapad[0] && extraObjects[i].objId[0] == 255 && extraObjects[i].initialLocation != _realLocation) { deleteExObject(i); return; } } for (size_t i = 0; i < kNumexobjects; ++i) { if (extraObjects[i].mapad[0] && extraObjects[i].objId[0] == 255) { deleteExObject(i); return; } } }
void DreamWebEngine::deleteExObject(uint8 index) { DynObject *obj = getExAd(index); memset(obj, 0xFF, sizeof(DynObject)); deleteExFrame(3*index); deleteExFrame(3*index + 1); deleteExText(index); for (uint8 i = 0; i < kNumexobjects; ++i) { DynObject *t = getExAd(i); // Is this object contained in the one we've just deleted? if (t->mapad[0] == 4 && t->mapad[1] == index) deleteExObject(i); } }