void Overlays::load(SaveFileReadStream &f) { for (int i = 0; i < kOverlayVideos; ++i) { // 37 bytes per overlay Video &ov = _videos[i]; ov.loaded = f.readBool(); f.skip(4); // vqaPlayer pointer ov.vqaPlayer = nullptr; ov.name = f.readStringSz(13); ov.hash = f.readSint32LE(); ov.field0 = f.readInt(); ov.field1 = f.readInt(); ov.field2 = f.readInt(); } }
void Items::load(SaveFileReadStream &f) { for (int i = _items.size() - 1; i >= 0; i--) { delete _items.remove_at(i); } _items.resize(f.readInt()); int size = (int)_items.size(); int i; for (i = 0; i != size; ++i) { _items[i] = new Item(_vm); _items[i]->load(f); } // Always read out 100 items for (; i != 100; ++i) { f.skip(0x174); // bbox + rect + 18 float fields } }
void Item::load(SaveFileReadStream &f) { _setId = f.readInt(); _itemId = f.readInt(); _boundingBox = f.readBoundingBox(false); _screenRectangle = f.readRect(); _animationId = f.readInt(); _position = f.readVector3(); _facing = f.readInt(); _angle = f.readFloat(); _width = f.readInt(); _height = f.readInt(); _screenX = f.readInt(); _screenY = f.readInt(); _depth = f.readFloat(); _isTarget = f.readBool(); _isSpinning = f.readBool(); _facingChange = f.readInt(); f.skip(4); _isVisible = f.readBool(); _isPoliceMazeEnemy = f.readBool(); }