예제 #1
0
 /// <summary>
 /// Создать запись
 /// </summary>
 public void Create(SuccessGrade grade, ActionType action)
 {
     Author.text  = $"{TweeterData.Nicknames[Random.Range(0, TweeterData.Nicknames.Count)]}";
     Comment.text = GetComment(grade, action);
     Likes.text   = $"Likes: {Random.Range(0, 200)}";
     Views.text   = $"Views: {Random.Range(0, 3000)}";
 }
예제 #2
0
        /// <summary>
        /// Возвращает нужный фон окна
        /// </summary>
        private Sprite GetSprite(ActionType type, SuccessGrade grade)
        {
            switch (type)
            {
            case ActionType.NewTrack:
            case ActionType.Feat:
                return(WindowSprites[ActionSpriteKey.TRACK]);

            case ActionType.NewClip:
                return(WindowSprites[ActionSpriteKey.CLIP]);

            case ActionType.Concert:
                var concertKey = grade <SuccessGrade.Middle
                                        ?ActionSpriteKey.BAD_CONCERT
                                        : grade> SuccessGrade.Middle
                            ? ActionSpriteKey.SUCCESS_CONCERT
                            : ActionSpriteKey.NORMAL_CONCERT;
                return(WindowSprites[concertKey]);

            case ActionType.Battle:
                var battleKey = grade >= SuccessGrade.Middle ? ActionSpriteKey.WIN_BATTLE : ActionSpriteKey.LOSE_BATTLE;
                return(WindowSprites[battleKey]);

            default:
                return(WindowSprites[ActionSpriteKey.DEFAULT]);
            }
        }
예제 #3
0
        /// <summary>
        /// Добавляет запись в ленту
        /// </summary>
        public void AddTweet(SuccessGrade grade, ActionType action)
        {
            var newObject = ObjectPool.GetObject();

            newObject.transform.localScale = scale;
            newObject.GetComponent <Tweet>().Create(grade, action);
            if (tweets.Count == 50)
            {
                tweets.RemoveAt(0);
            }
            tweets.Add(newObject);
            RefreshFeed();
        }
예제 #4
0
        /// <summary>
        /// Обработчик победной заставки на батле
        /// </summary>
        private void ProcessWinScreen(SuccessGrade grade)
        {
            var playerInfo = PlayerManager.GetInfo();

            if (!playerInfo.BattleScreenWin && battleModel.Rival.Name == "Oxxxymiron" && grade > SuccessGrade.Middle)
            {
                BattleWinImage.GetComponentsInChildren <Text>().First(e => e.name == "Content").text =
                    "Это историческая х@#%я! Вы одержали победу над одним из лучших батл МС и присоединились к касте элиты батл рэпа. " +
                    "Многие до сих пор не могут поверить, что это произошло!";
                BattleWinImage.gameObject.SetActive(true);
                playerInfo.BattleScreenWin = true;
            }
        }
예제 #5
0
        /// <summary>
        /// Возвращает результат съемок
        /// </summary>
        private ActionResultModel GetClipResult(SuccessGrade grade)
        {
            var gradePercent     = GradePercentManager.GetRewardPercent(grade, ActionType.NewClip);
            var fansPercentValue = PlayerManager.GetFansPercentValue();
            var featBonus        = _clip.Track.Feat?.Fans / 150 ?? 0;

            return(new ActionResultModel {
                Action = ActionType.NewClip,
                FansIncrease = CalculateStatIncrease(gradePercent, fansPercentValue, 0.1f) + featBonus,
                Income = CalculateStatIncrease(gradePercent, fansPercentValue, 0.2f) * Random.Range(3, 5),
                Popularity = CalculateStatIncrease(gradePercent, fansPercentValue, 0.1f) * Random.Range(2, 5),
                Grade = grade
            });
        }
예제 #6
0
        /// <summary>
        /// Возвращает результат трэка
        /// </summary>
        private ActionResultModel GetTrackResult(SuccessGrade grade)
        {
            var gradePercent     = GradePercentManager.GetRewardPercent(grade, ActionType.NewTrack);
            var fansPercentValue = PlayerManager.GetFansPercentValue();
            var featBonus        = _track.Feat?.Fans / 150 ?? 0;

            return(new ActionResultModel {
                Action = _track.Feat == null ? ActionType.NewTrack : ActionType.Feat,
                FansIncrease = CalculateStatIncrease(gradePercent, fansPercentValue, 0.1f) + featBonus,
                Income = CalculateStatIncrease(gradePercent, fansPercentValue, 0.2f) * Random.Range(3, 6),
                Top = PlayerManager.GetInfo().Fans >= 50000 ? GetPlaceInTop(grade) : -1,
                Popularity = CalculateStatIncrease(gradePercent, fansPercentValue, 0.1f) * Random.Range(2, 5),
                Grade = grade
            });
        }
예제 #7
0
        /// <summary>
        /// Возвращает результат съемок
        /// </summary>
        private ActionResultModel GetBattleResult(SuccessGrade grade)
        {
            var gradePercent     = GradePercentManager.GetRewardPercent(grade, ActionType.Battle);
            var fansPercentValue = PlayerManager.GetFansPercentValue();
            var income           = CalculateStatIncrease(gradePercent, fansPercentValue, 0.1f);
            var rivalFansBonus   = battleModel.Rival.Fans * 5;

            return(new ActionResultModel {
                Action = ActionType.Battle,
                FansIncrease = CalculateStatIncrease(gradePercent, fansPercentValue, 0.2f) / 3,
                Income = income > 0 ? income : 0,
                Popularity = Math.Abs(CalculateStatIncrease(gradePercent, fansPercentValue, 0.1f) * 5 + rivalFansBonus),
                Grade = grade
            });
        }
예제 #8
0
 /// <summary>
 /// Возвращает место в топе
 /// </summary>
 private static int GetPlaceInTop(SuccessGrade grade)
 {
     if (grade == SuccessGrade.Highest)
     {
         return(Random.Range(1, 10));
     }
     if (grade == SuccessGrade.Hight)
     {
         return(Random.Range(11, 40));
     }
     if (grade == SuccessGrade.Middle)
     {
         return(Random.Range(41, 90));
     }
     if (grade == SuccessGrade.Low)
     {
         return(Random.Range(91, 200));
     }
     return(-1);
 }
예제 #9
0
        /// <summary>
        /// Возвращает процент награды для трэка
        /// </summary>
        public static float GetRewardPercent(SuccessGrade grade, ActionType type)
        {
            var percent = 0f;

            switch (type)
            {
            case ActionType.NewTrack:
            case ActionType.Feat:
                percent = trackPercents[grade];
                break;

            case ActionType.NewClip:
                percent = clipPercents[grade];
                break;

            case ActionType.Battle:
                percent = battlePercents[grade];
                break;
            }
            return(percent * GetFansCoef());
        }
예제 #10
0
        /// <summary>
        /// Возвращает сообщение успешности для
        /// </summary>
        private static string GetBattleTopMessage(SuccessGrade grade)
        {
            switch (grade)
            {
            case SuccessGrade.Lowest:
                return("Разгромное поражение. У вас не было шансов");

            case SuccessGrade.Low:
                return("У вас была пара хороших моментов, но в целом все выглядело слабее, чем у соперника");

            case SuccessGrade.Middle:
                return("Неоднозначный батл. Каждый зритель решил для себя сам, кто победил");

            case SuccessGrade.Hight:
                return("Это была практически равная битва, но все же вы оказались сильнее");

            case SuccessGrade.Highest:
                return("Вы уничтожили оппонента! Ему просто нечего было предоставить в ответ");

            default:
                throw new ArgumentOutOfRangeException(nameof(grade), grade, null);
            }
        }
예제 #11
0
        /// <summary>
        /// Возвращает сообщение успешности для
        /// </summary>
        private static string GetConcertTopMessage(SuccessGrade grade)
        {
            switch (grade)
            {
            case SuccessGrade.Lowest:
                return("Концерт провалился, зал был пуст...");

            case SuccessGrade.Low:
                return("Пришло очень мало людей, но это лучше, чем ничего!");

            case SuccessGrade.Middle:
                return("Неплохо! Вам удалось заполнить зал наполовину");

            case SuccessGrade.Hight:
                return("В зале было совсем немного свободных мест. Хороший результат!");

            case SuccessGrade.Highest:
                return("Это солд-аут! Зал битком забит людьми, а на улице огромная очередь желающих попасть внутрь. Оглушительный успех!");

            default:
                throw new ArgumentOutOfRangeException(nameof(grade), grade, null);
            }
        }
예제 #12
0
        /// <summary>
        /// Возвращает комментарий
        /// </summary>
        private static string GetComment(SuccessGrade grade, ActionType action)
        {
            var comments = TweeterData.Comments[action][grade];

            return(comments[Random.Range(0, comments.Count)]);
        }