void Node::loadSpotItem(uint16 id, uint16 condition, bool fade) { SpotItem *spotItem = new SpotItem(_vm); spotItem->setCondition(condition); spotItem->setFade(fade); spotItem->setFadeVar(abs(condition)); for (int i = 0; i < 6; i++) { const DirectorySubEntry *jpegDesc = _vm->getFileDescription(0, id, i + 1, DirectorySubEntry::kSpotItem); if (!jpegDesc) jpegDesc = _vm->getFileDescription(0, id, i + 1, DirectorySubEntry::kMenuSpotItem); if (!jpegDesc) continue; SpotItemFace *spotItemFace = new SpotItemFace( _faces[i], jpegDesc->getSpotItemData().u, jpegDesc->getSpotItemData().v); Common::MemoryReadStream *jpegStream = jpegDesc->getData(); Graphics::JPEGDecoder jpeg; if (!jpeg.loadStream(*jpegStream)) error("Could not decode Myst III JPEG"); spotItemFace->loadData(&jpeg); delete jpegStream; spotItem->addFace(spotItemFace); } _spotItems.push_back(spotItem); }
void Node::loadSpotItem(uint16 id, uint16 condition, bool fade) { SpotItem *spotItem = new SpotItem(_vm); spotItem->setCondition(condition); spotItem->setFade(fade); spotItem->setFadeVar(abs(condition)); for (int i = 0; i < 6; i++) { const DirectorySubEntry *jpegDesc = _vm->getFileDescription(0, id, i + 1, DirectorySubEntry::kLocalizedSpotItem); if (!jpegDesc) jpegDesc = _vm->getFileDescription(0, id, i + 1, DirectorySubEntry::kSpotItem); if (!jpegDesc) continue; SpotItemFace *spotItemFace = new SpotItemFace( _faces[i], jpegDesc->getSpotItemData().u, jpegDesc->getSpotItemData().v); spotItemFace->loadData(jpegDesc); spotItem->addFace(spotItemFace); } _spotItems.push_back(spotItem); }
void Node::loadSpotItem(uint16 id, int16 condition, bool fade) { SpotItem *spotItem = new SpotItem(_vm); spotItem->setCondition(condition); spotItem->setFade(fade); spotItem->setFadeVar(abs(condition)); for (int i = 0; i < 6; i++) { const DirectorySubEntry *jpegDesc = _vm->getFileDescription("", id, i + 1, DirectorySubEntry::kLocalizedSpotItem); if (!jpegDesc) jpegDesc = _vm->getFileDescription("", id, i + 1, DirectorySubEntry::kSpotItem); if (!jpegDesc) continue; SpotItemFace *spotItemFace = new SpotItemFace( _faces[i], jpegDesc->getSpotItemData().u, jpegDesc->getSpotItemData().v); spotItemFace->loadData(jpegDesc); // SpotItems with an always true conditions cannot be undrawn. // Draw them now to make sure the "non drawn backups" for other, potentially // overlapping SpotItems have them drawn. if (condition == 1) { spotItemFace->draw(); } spotItem->addFace(spotItemFace); } _spotItems.push_back(spotItem); }
SpotItemFace *Node::loadMenuSpotItem(uint16 condition, const Common::Rect &rect) { SpotItem *spotItem = new SpotItem(_vm); spotItem->setCondition(condition); spotItem->setFade(false); spotItem->setFadeVar(abs(condition)); SpotItemFace *spotItemFace = new SpotItemFace(_faces[0], rect.left, rect.top); spotItemFace->initBlack(rect.width(), rect.height()); spotItem->addFace(spotItemFace); _spotItems.push_back(spotItem); return spotItemFace; }