00001 /* 00002 Copyright (C) 2003-2005 The Pentagram team 00003 00004 This program is free software; you can redistribute it and/or 00005 modify it under the terms of the GNU General Public License 00006 as published by the Free Software Foundation; either version 2 00007 of the License, or (at your option) any later version. 00008 00009 This program is distributed in the hope that it will be useful, 00010 but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00012 GNU General Public License for more details. 00013 00014 You should have received a copy of the GNU General Public License 00015 along with this program; if not, write to the Free Software 00016 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00017 */ 00018 00019 #include "pent_include.h" 00020 00021 #include "Savegame.h" 00022 #include "IDataSource.h" 00023 #include "ZipFile.h" 00024 00025 Savegame::Savegame(IDataSource* ds) 00026 { 00027 zipfile = new ZipFile(ds); 00028 } 00029 00030 Savegame::~Savegame() 00031 { 00032 delete zipfile; 00033 } 00034 00035 uint32 Savegame::getVersion() 00036 { 00037 IDataSource* ids = getDataSource("VERSION"); 00038 if (!ids || ids->getSize() != 4) return 0; 00039 00040 uint32 version = ids->read4(); 00041 delete ids; 00042 00043 return version; 00044 } 00045 00046 std::string Savegame::getDescription() 00047 { 00048 return zipfile->getComment(); 00049 } 00050 00051 IDataSource* Savegame::getDataSource(const std::string& name) 00052 { 00053 uint32 size; 00054 uint8* data = zipfile->getObject(name, &size); 00055 return new IBufferDataSource(data, size, false, true); 00056 }