/// <summary> /// Возвращает очки в соответствии с трэндами /// </summary> private static int GetTrandsPoints(NewTrackModel track) { var result = track.Theme == Trands.TrandTheme ? MAX_TRAND_POINTS : 0; result += track.Style == Trands.TrandStyle ? MAX_TRAND_POINTS : 0; result += track.Autotune && Trands.AutotuneTrand ? MAX_TRAND_POINTS : 0; return(result); }
/// <summary> /// Возвращает количество очков за фит /// </summary> private static int GetFeatPoints(NewTrackModel track) { if (track.Feat == null) { return(0); } var playerFans = PlayerManager.GetInfo().Fans; if (Math.Abs(playerFans - track.Feat.Fans) < GetFansInaccurancy(playerFans)) { return(20); } return(playerFans < track.Feat.Fans ? MAX_CATEGORY_POINTS * 2 : 10); }
/// <summary> /// Собирает выбранные параметры в модель трэка /// </summary> protected override void ParseActionModel() { if (_track == null) { _track = new NewTrackModel(); } _track.Name = TrackName.text; _track.Theme = EnumExt.GetFromDescription <TrackTheme>(TrackTheme.captionText.text); _track.Style = EnumExt.GetFromDescription <TrackStyle>(TrackStyle.captionText.text); _track.TextSourse = EnumExt.GetFromDescription <TextSourse>(TrackText.captionText.text); _track.BitSource = EnumExt.GetFromDescription <BitSource>(TrackBit.captionText.text); _track.Feat = RappersManager.GetByName(Feat.captionText.text); _track.Autotune = AutotuneToggle.isOn; }
/// <summary> /// Анализировать успешность трека /// </summary> public static SuccessGrade AnalyzeTrack(NewTrackModel track) { if (RandomizeGrade()) { return(GetRandomGrade()); } var playerSkills = PlayerManager.GetSkills(); var points = playerSkills.Flow * 2; points += track.TextSourse == TextSourse.Self ? 2 * playerSkills.Vocabulary : MAX_CATEGORY_POINTS; points += GetPointsForBit(track.BitSource, playerSkills); points += GetTrandsPoints(track); points += GetFeatPoints(track); return(GetGrade(points)); }
/// <summary> /// Выводит информацию о последнем треке /// </summary> private void ShowTrackInfo(NewTrackModel lastTrack) { TrackName.text = lastTrack.Name; TrackTheme.text = $"Тематика: {lastTrack.Theme.GetDescription()}"; TrackStyle.text = $"Стиль: {lastTrack.Style.GetDescription()}"; SuccessGradeText.text = $"Успешность: {lastTrack.Grade.GetDescription()}"; if (lastTrack.Feat != null) { FeatInfo.gameObject.SetActive(true); FeatInfo.GetComponentInChildren <Text>().text = $"Совместно с {lastTrack.Feat.Name}"; } else { FeatInfo.gameObject.SetActive(false); } }
/// <summary> /// Возвращает очки за трэк /// </summary> private static int GetTrackPoints(NewTrackModel track) { switch (track.Grade) { case SuccessGrade.Lowest: return(15); case SuccessGrade.Low: return(30); case SuccessGrade.Middle: return(40); case SuccessGrade.Hight: return(50); case SuccessGrade.Highest: return(60); default: throw new ArgumentOutOfRangeException(); } }