File indexing completed on 2024-05-12 05:09:23

0001 /***************************************************************************
0002     Copyright (C) 2006-2009 Robby Stephenson <robby@periapsis.org>
0003 
0004  ***************************************************************************/
0005 
0006 /***************************************************************************
0007  *                                                                         *
0008  *   This program is free software; you can redistribute it and/or         *
0009  *   modify it under the terms of the GNU General Public License as        *
0010  *   published by the Free Software Foundation; either version 2 of        *
0011  *   the License or (at your option) version 3 or any later version        *
0012  *   accepted by the membership of KDE e.V. (or its successor approved     *
0013  *   by the membership of KDE e.V.), which shall act as a proxy            *
0014  *   defined in Section 14 of version 3 of the license.                    *
0015  *                                                                         *
0016  *   This program is distributed in the hope that it will be useful,       *
0017  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
0018  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
0019  *   GNU General Public License for more details.                          *
0020  *                                                                         *
0021  *   You should have received a copy of the GNU General Public License     *
0022  *   along with this program.  If not, see <http://www.gnu.org/licenses/>. *
0023  *                                                                         *
0024  ***************************************************************************/
0025 
0026 #ifndef GAMECOLLECTION_H
0027 #define GAMECOLLECTION_H
0028 
0029 #include "../collection.h"
0030 
0031 namespace Tellico {
0032   namespace Data {
0033 
0034 /**
0035  * A collection for games.
0036  */
0037 class GameCollection : public Collection {
0038 Q_OBJECT
0039 
0040 public:
0041   /**
0042    * The constructor
0043    *
0044    * @param title The title of the collection
0045    */
0046   explicit GameCollection(bool addDefaultFields, const QString& title = QString());
0047 
0048   virtual Type type() const Q_DECL_OVERRIDE { return Game; }
0049 
0050   static FieldList defaultFields();
0051 
0052   enum GamePlatform {
0053       UnknownPlatform = 0,
0054       Linux,
0055       MacOS,
0056       Windows,
0057       iOS,
0058       Android,
0059       Xbox,
0060       Xbox360,
0061       XboxOne,
0062       XboxSeriesX,
0063       PlayStation,
0064       PlayStation2,
0065       PlayStation3,
0066       PlayStation4,
0067       PlayStation5,
0068       PlayStationPortable,
0069       PlayStationVita,
0070       GameBoy,
0071       GameBoyColor,
0072       GameBoyAdvance,
0073       Nintendo,
0074       SuperNintendo,
0075       Nintendo64,
0076       NintendoGameCube,
0077       NintendoWii,
0078       NintendoWiiU,
0079       NintendoSwitch,
0080       NintendoDS,
0081       Nintendo3DS,
0082       Genesis,
0083       Dreamcast,
0084       LastPlatform
0085   };
0086   static QString normalizePlatform(const QString& platformName);
0087   static GamePlatform guessPlatform(const QString& platformName);
0088   static QString platformName(GamePlatform platform);
0089 
0090   enum EsrbRating {
0091     UnknownEsrb = 0,
0092     Unrated,
0093     Adults,
0094     Mature,
0095     Teen,
0096     Everyone10,
0097     Everyone,
0098     EarlyChildhood,
0099     Pending
0100   };
0101   static QStringList esrbRatings();
0102   static QString esrbRating(EsrbRating rating);
0103 };
0104 
0105   } // end namespace
0106 } // end namespace
0107 #endif