void DreamWebEngine::pickupConts(uint8 from, uint8 containerEx) { const DynObject *obj = getFreeAd(from); if (obj->slotCount == 255) return; // not openable for (uint8 index = 0; index < 80; ++index) { DynObject *freeObj = getFreeAd(index); if (freeObj->mapad[0] != kFreeObjectType) continue; if (freeObj->mapad[1] != from) continue; uint8 pos = getExPos(); DynObject *exObj = getExAd(pos); memcpy(exObj, freeObj, sizeof(DynObject)); exObj->currentLocation = _realLocation; exObj->initialLocation = _realLocation; exObj->index = index; exObj->mapad[0] = 4; // kExObjectType? exObj->mapad[1] = containerEx; transferFrame(index, pos, 0); transferFrame(index, pos, 1); transferText(index, pos); freeObj->mapad[0] = 0xFF; } }
byte DreamWebEngine::transferToEx(uint8 from) { emergencyPurge(); byte pos = getExPos(); DynObject *exObject = getExAd(pos); DynObject *freeObject = getFreeAd(from); memcpy(exObject, freeObject, sizeof(DynObject)); exObject->currentLocation = _realLocation; exObject->initialLocation = _realLocation; exObject->index = from; exObject->mapad[0] = 4; exObject->mapad[1] = 255; exObject->mapad[2] = _lastInvPos; transferFrame(from, pos, 0); transferFrame(from, pos, 1); transferText(from, pos); freeObject->mapad[0] = 254; pickupConts(from, pos); return pos; }
void DispmanxWrapper::action() { transferFrame(_grabber); }
void OsxWrapper::action() { transferFrame(_grabber); }
void AmlogicWrapper::action() { transferFrame(_grabber); }