comparison include/core/anime.h @ 279:657fda1b9cac

*: clean up enums
author Paper <paper@paper.us.eu.org>
date Fri, 19 Apr 2024 13:24:06 -0400
parents 9a04802848c0
children e66ffc338d82
comparison
equal deleted inserted replaced
274:f6a756c19bfb 279:657fda1b9cac
8 #include <optional> 8 #include <optional>
9 9
10 namespace Anime { 10 namespace Anime {
11 11
12 enum class ListStatus { 12 enum class ListStatus {
13 NOT_IN_LIST, 13 NotInList = 0,
14 CURRENT, 14 Current,
15 COMPLETED, 15 Completed,
16 PAUSED, 16 Paused,
17 DROPPED, 17 Dropped,
18 PLANNING 18 Planning
19 }; 19 };
20 20
21 constexpr std::array<ListStatus, 5> ListStatuses{ListStatus::CURRENT, ListStatus::COMPLETED, ListStatus::PAUSED, 21 constexpr std::array<ListStatus, 5> ListStatuses{
22 ListStatus::DROPPED, ListStatus::PLANNING}; 22 ListStatus::Current, ListStatus::Completed, ListStatus::Paused,
23 ListStatus::Dropped, ListStatus::Planning
24 };
23 25
24 enum class SeriesStatus { 26 enum class SeriesStatus {
25 UNKNOWN, 27 Unknown = 0,
26 FINISHED, 28 Finished,
27 RELEASING, 29 Releasing,
28 NOT_YET_RELEASED, 30 NotYetReleased,
29 CANCELLED, 31 Cancelled,
30 HIATUS 32 Hiatus
33 };
34
35 constexpr std::array<SeriesStatus, 6> SeriesStatuses{
36 SeriesStatus::Unknown,
37 SeriesStatus::Finished,
38 SeriesStatus::Releasing,
39 SeriesStatus::NotYetReleased,
40 SeriesStatus::Cancelled,
41 SeriesStatus::Hiatus
31 }; 42 };
32 43
33 enum class SeriesFormat { 44 enum class SeriesFormat {
34 UNKNOWN, 45 Unknown = 0,
35 TV, 46 Tv,
36 TV_SHORT, 47 TvShort,
37 MOVIE, 48 Movie,
38 SPECIAL, 49 Special,
39 OVA, 50 Ova,
40 ONA, 51 Ona,
41 MUSIC, 52 Music
42 MANGA, 53 };
43 NOVEL, 54
44 ONE_SHOT 55 constexpr std::array<SeriesFormat, 8> SeriesFormats{
56 SeriesFormat::Unknown,
57 SeriesFormat::Tv,
58 SeriesFormat::TvShort,
59 SeriesFormat::Movie,
60 SeriesFormat::Special,
61 SeriesFormat::Ova,
62 SeriesFormat::Ona,
63 SeriesFormat::Music
45 }; 64 };
46 65
47 enum class SeriesSeason { 66 enum class SeriesSeason {
48 UNKNOWN, 67 Unknown = 0,
49 WINTER, 68 Winter,
50 SPRING, 69 Spring,
51 SUMMER, 70 Summer,
52 FALL 71 Fall
53 }; 72 };
54 73
55 constexpr std::array<SeriesSeason, 4> SeriesSeasons{ 74 constexpr std::array<SeriesSeason, 4> SeriesSeasons{
56 SeriesSeason::WINTER, SeriesSeason::SPRING, 75 SeriesSeason::Winter, SeriesSeason::Spring,
57 SeriesSeason::SUMMER, SeriesSeason::FALL 76 SeriesSeason::Summer, SeriesSeason::Fall
58 }; 77 };
59 78
60 enum class TitleLanguage { 79 enum class TitleLanguage {
61 ROMAJI, 80 Romaji,
62 NATIVE, 81 Native,
63 ENGLISH 82 English
64 }; 83 };
65 84
66 enum class Services { 85 constexpr std::array<TitleLanguage, 3> TitleLanguages{TitleLanguage::Romaji, TitleLanguage::Native, TitleLanguage::English};
67 NONE, 86
68 ANILIST, 87 enum class Service {
69 NB_SERVICES 88 None,
70 }; 89 AniList
90 };
91
92 constexpr std::array<Service, 1> Services{Service::AniList};
71 93
72 enum class ScoreFormat { 94 enum class ScoreFormat {
73 POINT_100, // 0-100 95 Point100, // 0-100
74 POINT_10_DECIMAL, // 0.0-10.0 96 Point10Decimal, // 0.0-10.0
75 POINT_10, // 0-10 97 Point10, // 0-10
76 POINT_5, // 0-5, should be represented in stars 98 Point5, // 0-5, should be represented in stars
77 POINT_3 // 1-3, should be represented in smileys 99 Point3 // 1-3, should be represented in smileys
78 }; 100 };
79 101
80 constexpr std::array<ScoreFormat, 5> ScoreFormats{ScoreFormat::POINT_100, ScoreFormat::POINT_10_DECIMAL, 102 constexpr std::array<ScoreFormat, 5> ScoreFormats{ScoreFormat::Point100, ScoreFormat::Point10Decimal,
81 ScoreFormat::POINT_10, ScoreFormat::POINT_5, ScoreFormat::POINT_3}; 103 ScoreFormat::Point10, ScoreFormat::Point5, ScoreFormat::Point3};
82 104
83 struct ListInformation { 105 struct ListInformation {
84 int id = 0; 106 int id = 0;
85 int progress = 0; 107 int progress = 0;
86 int score = 0; // note that this will ALWAYS be in POINT_100 format and must be converted 108 int score = 0; // this will ALWAYS be in POINT_100 format internally
87 ListStatus status = ListStatus::NOT_IN_LIST; 109 ListStatus status = ListStatus::NotInList;
88 Date started; 110 Date started;
89 Date completed; 111 Date completed;
90 bool is_private = false; 112 bool is_private = false;
91 unsigned int rewatched_times = 0; 113 unsigned int rewatched_times = 0;
92 bool rewatching = false; 114 bool rewatching = false;
101 std::string english; 123 std::string english;
102 std::string native; 124 std::string native;
103 } title; 125 } title;
104 std::vector<std::string> synonyms; 126 std::vector<std::string> synonyms;
105 int episodes = 0; 127 int episodes = 0;
106 SeriesStatus status = SeriesStatus::UNKNOWN; 128 SeriesStatus status = SeriesStatus::Unknown;
107 Date air_date; 129 Date air_date;
108 std::vector<std::string> genres; 130 std::vector<std::string> genres;
109 std::vector<std::string> producers; 131 std::vector<std::string> producers;
110 SeriesFormat format = SeriesFormat::UNKNOWN; 132 SeriesFormat format = SeriesFormat::Unknown;
111 SeriesSeason season = SeriesSeason::UNKNOWN;
112 int audience_score = 0; 133 int audience_score = 0;
113 std::string synopsis; 134 std::string synopsis;
114 int duration = 0; 135 int duration = 0;
115 std::string poster_url; 136 std::string poster_url;
116 }; 137 };
170 void SetAiringStatus(SeriesStatus status); 191 void SetAiringStatus(SeriesStatus status);
171 void SetAirDate(Date const& date); 192 void SetAirDate(Date const& date);
172 void SetGenres(std::vector<std::string> const& genres); 193 void SetGenres(std::vector<std::string> const& genres);
173 void SetProducers(std::vector<std::string> const& producers); 194 void SetProducers(std::vector<std::string> const& producers);
174 void SetFormat(SeriesFormat format); 195 void SetFormat(SeriesFormat format);
175 void SetSeason(SeriesSeason season);
176 void SetAudienceScore(int audience_score); 196 void SetAudienceScore(int audience_score);
177 void SetSynopsis(std::string synopsis); 197 void SetSynopsis(std::string synopsis);
178 void SetDuration(int duration); 198 void SetDuration(int duration);
179 void SetPosterUrl(std::string poster); 199 void SetPosterUrl(std::string poster);
180 200