2 // Copyright (C) 2007 Christoph Sommer <christoph.sommer@2007.expires.deltadevelopment.de>
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
14 // You should have received a copy of the GNU General Public License
15 // along with this program. If not, see <http://www.gnu.org/licenses/>.
17 #ifndef HEADER_SUPERTUX_ADDON_ADDON_HPP
18 #define HEADER_SUPERTUX_ADDON_ADDON_HPP
22 #include "util/reader_fwd.hpp"
24 /** Represents an (available or installed) Add-on, e.g. a level set */
35 /** filename suggested by addon author, e.g. "pak0.zip" */
36 std::string suggested_filename;
38 /** PhysFS filename on disk, e.g. "pak0.zip" */
39 std::string installed_physfs_filename;
41 /** complete path and filename on disk, e.g. "/home/sommer/.supertux2/pak0.zip" */
42 std::string installed_absolute_filename;
44 std::string stored_md5;
48 /** Get MD5, based either on installed file's contents or stored value */
49 std::string get_md5() const;
51 /** Read additional information from given contents of a (supertux-addoninfo ...) block */
52 void parse(const Reader& lisp);
54 /** Read additional information from given file */
55 void parse(const std::string& fname);
57 /** Checks if Add-on is the same as given one. If available, checks
58 MD5 sum, else relies on kind, author and title alone. */
59 bool operator==(const Addon& addon2) const;
62 friend class AddonManager;
64 mutable std::string calculated_md5;
74 installed_physfs_filename(),
75 installed_absolute_filename(),
83 Addon(const Addon&) = delete;
84 Addon& operator=(const Addon&) = delete;