void Obstacles::load(SaveFileReadStream &f) { for (int i = 0; i < kPolygonCount; ++i) { _polygons[i].isPresent = false; _polygons[i].verticeCount = 0; _polygonsBackup[i].isPresent = false; _polygonsBackup[i].verticeCount = 0; } _backup = f.readBool(); _count = f.readInt(); for (int i = 0; i < _count; ++i) { Polygon &p = _polygonsBackup[i]; p.isPresent = f.readBool(); p.verticeCount = f.readInt(); p.rect.x0 = f.readFloat(); p.rect.y0 = f.readFloat(); p.rect.x1 = f.readFloat(); p.rect.y1 = f.readFloat(); for (int j = 0; j < kPolygonVertexCount; ++j) { p.vertices[j] = f.readVector2(); } for (int j = 0; j < kPolygonVertexCount; ++j) { p.vertexType[j] = (VertexType)f.readInt(); } } for (int i = 0; i < kPolygonCount; ++i) { _polygons[i] = _polygonsBackup[i]; } for (int i = 0; i < kVertexCount; ++i) { _vertices[i] = f.readVector2(); } _verticeCount = f.readInt(); }
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.loopId = f.readInt(); ov.loopForever = f.readBool(); ov.frame = f.readInt(); } }
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(); }
void Spinner::load(SaveFileReadStream &f) { for (int i = 0; i != kSpinnerDestinations; ++i) { _isDestinationSelectable[i] = f.readBool(); } }