Mercurial > minori
comparison src/core/anime.cc @ 279:657fda1b9cac
*: clean up enums
| author | Paper <paper@paper.us.eu.org> |
|---|---|
| date | Fri, 19 Apr 2024 13:24:06 -0400 |
| parents | ff0b2052b234 |
| children | 9b6e12c14a1e |
comparison
equal
deleted
inserted
replaced
| 274:f6a756c19bfb | 279:657fda1b9cac |
|---|---|
| 1 /* | 1 /* |
| 2 * anime.cpp: defining of custom anime-related | 2 * anime.cpp: defining of custom anime-related |
| 3 * datatypes & variables | 3 * datatypes & variables |
| 4 */ | 4 */ |
| 5 #include "core/anime.h" | 5 #include "core/anime.h" |
| 6 #include "core/anime_season.h" | |
| 6 #include "core/date.h" | 7 #include "core/date.h" |
| 7 #include "core/session.h" | 8 #include "core/session.h" |
| 8 #include "core/strings.h" | 9 #include "core/strings.h" |
| 9 | 10 |
| 10 #include <algorithm> | 11 #include <algorithm> |
| 44 return list_info_->score; | 45 return list_info_->score; |
| 45 } | 46 } |
| 46 | 47 |
| 47 std::string Anime::GetUserPresentableScore() const { | 48 std::string Anime::GetUserPresentableScore() const { |
| 48 assert(list_info_.has_value()); | 49 assert(list_info_.has_value()); |
| 50 | |
| 49 const int score = list_info_->score; | 51 const int score = list_info_->score; |
| 50 if (score == 0) | 52 if (score == 0) |
| 51 return ""; | 53 return ""; |
| 52 | 54 |
| 53 switch (session.config.anime_list.score_format) { | 55 switch (session.config.anime_list.score_format) { |
| 54 case ScoreFormat::POINT_10_DECIMAL: | 56 case ScoreFormat::Point10Decimal: |
| 55 return Strings::ToUtf8String(score / 10) + "." + Strings::ToUtf8String(score % 10); | 57 return Strings::ToUtf8String(score / 10) + "." + Strings::ToUtf8String(score % 10); |
| 56 case ScoreFormat::POINT_10: return Strings::ToUtf8String(score / 10); | 58 case ScoreFormat::Point10: return Strings::ToUtf8String(score / 10); |
| 57 case ScoreFormat::POINT_5: { | 59 case ScoreFormat::Point5: { |
| 58 std::string stars = ""; | 60 std::string stars = ""; |
| 59 | 61 |
| 60 for (int i = 0; i < 100; i += 20) | 62 for (int i = 0; i < 100; i += 20) |
| 61 stars.append((i <= score) ? "★" : "☆"); | 63 stars.append((i <= score) ? "★" : "☆"); |
| 62 | 64 |
| 63 return stars; | 65 return stars; |
| 64 } | 66 } |
| 65 case ScoreFormat::POINT_3: { | 67 case ScoreFormat::Point3: { |
| 66 if (score >= 100) | 68 if (score >= 100) |
| 67 return ":)"; | 69 return ":)"; |
| 68 else if (score >= 66) | 70 else if (score >= 66) |
| 69 return ":|"; | 71 return ":|"; |
| 70 else if (score >= 33) | 72 else if (score >= 33) |
| 71 return ":("; | 73 return ":("; |
| 72 else | 74 else |
| 73 return ""; | 75 return ""; |
| 74 } | 76 } |
| 75 default: | 77 default: |
| 76 case ScoreFormat::POINT_100: return Strings::ToUtf8String(score); | 78 case ScoreFormat::Point100: return Strings::ToUtf8String(score); |
| 77 } | 79 } |
| 78 } | 80 } |
| 79 | 81 |
| 80 Date Anime::GetUserDateStarted() const { | 82 Date Anime::GetUserDateStarted() const { |
| 81 assert(list_info_.has_value()); | 83 assert(list_info_.has_value()); |
| 220 SeriesFormat Anime::GetFormat() const { | 222 SeriesFormat Anime::GetFormat() const { |
| 221 return info_.format; | 223 return info_.format; |
| 222 } | 224 } |
| 223 | 225 |
| 224 SeriesSeason Anime::GetSeason() const { | 226 SeriesSeason Anime::GetSeason() const { |
| 225 return info_.season; | 227 std::optional<Date::Month> month = info_.air_date.GetMonth(); |
| 228 return (month.has_value() ? GetSeasonForMonth(month.value()) : SeriesSeason::Unknown); | |
| 226 } | 229 } |
| 227 | 230 |
| 228 int Anime::GetAudienceScore() const { | 231 int Anime::GetAudienceScore() const { |
| 229 return info_.audience_score; | 232 return info_.audience_score; |
| 230 } | 233 } |
| 241 return info_.poster_url; | 244 return info_.poster_url; |
| 242 } | 245 } |
| 243 | 246 |
| 244 std::string Anime::GetServiceUrl() const { | 247 std::string Anime::GetServiceUrl() const { |
| 245 /* todo: add support for other services... */ | 248 /* todo: add support for other services... */ |
| 246 return "https://anilist.co/anime/" + Strings::ToUtf8String(GetId()); | 249 switch (session.config.service) { |
| 250 case Service::AniList: return "https://anilist.co/anime/" + Strings::ToUtf8String(GetId()); | |
| 251 default: return ""; | |
| 252 } | |
| 247 } | 253 } |
| 248 | 254 |
| 249 void Anime::SetId(int id) { | 255 void Anime::SetId(int id) { |
| 250 info_.id = id; | 256 info_.id = id; |
| 251 } | 257 } |
| 292 | 298 |
| 293 void Anime::SetFormat(SeriesFormat format) { | 299 void Anime::SetFormat(SeriesFormat format) { |
| 294 info_.format = format; | 300 info_.format = format; |
| 295 } | 301 } |
| 296 | 302 |
| 297 void Anime::SetSeason(SeriesSeason season) { | |
| 298 info_.season = season; | |
| 299 } | |
| 300 | |
| 301 void Anime::SetAudienceScore(int audience_score) { | 303 void Anime::SetAudienceScore(int audience_score) { |
| 302 info_.audience_score = audience_score; | 304 info_.audience_score = audience_score; |
| 303 } | 305 } |
| 304 | 306 |
| 305 void Anime::SetSynopsis(std::string synopsis) { | 307 void Anime::SetSynopsis(std::string synopsis) { |
| 314 info_.poster_url = url; | 316 info_.poster_url = url; |
| 315 } | 317 } |
| 316 | 318 |
| 317 std::string Anime::GetUserPreferredTitle() const { | 319 std::string Anime::GetUserPreferredTitle() const { |
| 318 switch (session.config.anime_list.language) { | 320 switch (session.config.anime_list.language) { |
| 319 case TitleLanguage::NATIVE: return (GetNativeTitle().empty()) ? GetRomajiTitle() : GetNativeTitle(); | 321 case TitleLanguage::Native: return (GetNativeTitle().empty()) ? GetRomajiTitle() : GetNativeTitle(); |
| 320 case TitleLanguage::ENGLISH: return (GetEnglishTitle().empty()) ? GetRomajiTitle() : GetEnglishTitle(); | 322 case TitleLanguage::Romaji: return (GetEnglishTitle().empty()) ? GetRomajiTitle() : GetEnglishTitle(); |
| 321 default: break; | 323 default: break; |
| 322 } | 324 } |
| 323 return GetRomajiTitle(); | 325 return GetRomajiTitle(); |
| 324 } | 326 } |
| 325 | 327 |
