/* ScummVM - Graphic Adventure Engine * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT * file distributed with this source distribution. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "trecision/struct.h" namespace Trecision { void SRoom::loadRoom(Common::File *file) { file->read(&_baseName, 4); _flag = file->readByte(); file->readByte(); // Padding _bkgAnim = file->readUint16LE(); for (int j = 0; j < MAXOBJINROOM; ++j) _object[j] = file->readUint16LE(); for (int j = 0; j < MAXSOUNDSINROOM; ++j) _sounds[j] = file->readUint16LE(); for (int j = 0; j < MAXACTIONINROOM; ++j) _actions[j] = file->readUint16LE(); } void SRoom::syncGameStream(Common::Serializer &ser) { ser.syncBytes((byte *)_baseName, 4); for (int i = 0; i < MAXACTIONINROOM; i++) ser.syncAsUint16LE(_actions[i]); ser.syncAsByte(_flag); ser.syncAsUint16LE(_bkgAnim); } /********************************************************************/ void SObject::readRect(Common::SeekableReadStream *stream) { _rect.left = stream->readUint16LE(); _rect.top = stream->readUint16LE(); _rect.setWidth(stream->readUint16LE()); _rect.setHeight(stream->readUint16LE()); } void SObject::syncGameStream(Common::Serializer &ser) { ser.syncAsUint16LE(_lim.left); ser.syncAsUint16LE(_lim.top); ser.syncAsUint16LE(_lim.right); ser.syncAsUint16LE(_lim.bottom); ser.syncAsUint16LE(_name); ser.syncAsUint16LE(_examine); ser.syncAsUint16LE(_action); ser.syncAsUint16LE(_anim); ser.syncAsByte(_mode); ser.syncAsByte(_flag); ser.syncAsByte(_goRoom); ser.syncAsByte(_nbox); ser.syncAsByte(_ninv); ser.syncAsSByte(_position); } void SObject::loadObj(Common::File *file) { uint16 w = file->readUint16LE(); uint16 h = file->readUint16LE(); _rect.left = file->readUint16LE(); _rect.top = file->readUint16LE(); _rect.setWidth(w); _rect.setHeight(h); _lim.left = file->readUint16LE(); _lim.top = file->readUint16LE(); _lim.right = file->readUint16LE(); _lim.bottom = file->readUint16LE(); _position = file->readSByte(); file->readByte(); // Padding _name = file->readUint16LE(); _examine = file->readUint16LE(); _action = file->readUint16LE(); _goRoom = file->readByte(); _nbox = file->readByte(); _ninv = file->readByte(); _mode = file->readByte(); _flag = file->readByte(); file->readByte(); // Padding _anim = file->readUint16LE(); } /********************************************************************/ void SInvObject::syncGameStream(Common::Serializer &ser) { ser.syncAsUint16LE(_name); ser.syncAsUint16LE(_examine); ser.syncAsUint16LE(_action); ser.syncAsUint16LE(_anim); ser.syncAsByte(_flag); } void SInvObject::loadObj(Common::File *file) { _name = file->readUint16LE(); _examine = file->readUint16LE(); _action = file->readUint16LE(); _flag = file->readByte(); file->readByte(); // Padding _anim = file->readUint16LE(); } } // namespace Trecision