1 /*************************************************************************** 2 * Copyright (C) 2005-2019 by the FIFE team * 3 * http://www.fifengine.net * 4 * This file is part of FIFE. * 5 * * 6 * FIFE is free software; you can redistribute it and/or * 7 * modify it under the terms of the GNU Lesser General Public * 8 * License as published by the Free Software Foundation; either * 9 * version 2.1 of the License, or (at your option) any later version. * 10 * * 11 * This library is distributed in the hope that it will be useful, * 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 * Lesser General Public License for more details. * 15 * * 16 * You should have received a copy of the GNU Lesser General Public * 17 * License along with this library; if not, write to the * 18 * Free Software Foundation, Inc., * 19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * 20 ***************************************************************************/ 21 22 // Standard C++ library includes 23 #include <memory> 24 25 // 3rd party library includes 26 27 // FIFE includes 28 // These includes are split up in two parts, separated by one empty line 29 // First block: files included from the FIFE root src directory 30 // Second block: files included from the same folder 31 #include "vfs/raw/rawdata.h" 32 #include "util/base/exception.h" 33 34 #include "lzssdecoder.h" 35 #include "rawdatadat1.h" 36 37 namespace FIFE { 38 RawDataDAT1(VFS * vfs,const std::string & datfile,const s_info & info)39 RawDataDAT1::RawDataDAT1(VFS* vfs, const std::string& datfile, const s_info& info) : 40 RawDataMemSource(info.unpackedLength) { 41 42 std::unique_ptr<RawData> input (vfs->open(datfile)); 43 input->setIndex(info.offset); 44 45 if (info.type == 0x40) { // compressed 46 LZSSDecoder decoder; 47 decoder.decode(input.get(), getRawData(), getSize()); 48 } else 49 input->readInto(getRawData(), getSize()); 50 } 51 } // FIFE 52