예제 #1
0
        public async Task <string> _getcurrentLevelInfos(PokeRoadieInventory _inventory)
        {
            var stats = await _inventory.GetPlayerStats();

            var output = string.Empty;
            var stat   = stats.FirstOrDefault();

            if (stat != null)
            {
                Currentlevel = stat.Level;
                var ep      = (stat.NextLevelXp - stat.PrevLevelXp) - (stat.Experience - stat.PrevLevelXp);
                var time    = Math.Round(ep / (TotalExperience / _getSessionRuntime()), 2);
                var hours   = 0.00;
                var minutes = 0.00;
                if (Double.IsInfinity(time) == false && time > 0)
                {
                    time    = Convert.ToDouble(TimeSpan.FromHours(time).ToString("h\\.mm"), System.Globalization.CultureInfo.InvariantCulture);
                    hours   = Math.Truncate(time);
                    minutes = Math.Round((time - hours) * 100);
                }

                bool didLevelUp = false;

                if (LevelForRewards == -1 || stat.Level >= LevelForRewards)
                {
                    LevelUpRewardsResponse Result = await _inventory.GetLevelUpRewards(stat.Level);

                    if (Result.Result == LevelUpRewardsResponse.Types.Result.AwardedAlready)
                    {
                        LevelForRewards = stat.Level + 1;
                    }

                    if (Result.Result == LevelUpRewardsResponse.Types.Result.Success)
                    {
                        didLevelUp = true;
                        Logger.Write($"(LEVEL) Reached level {stat.Level}!", LogLevel.None, ConsoleColor.Green);

                        RepeatedField <ItemAward> items = Result.ItemsAwarded;

                        if (items.Any <ItemAward>())
                        {
                            Logger.Write("Received Bonus Items:", LogLevel.None, ConsoleColor.Green);
                            foreach (ItemAward item in items)
                            {
                                Logger.Write($"{item.ItemId} x {item.ItemCount} ", LogLevel.None, ConsoleColor.Green);
                            }
                        }
                    }
                }

                if (!didLevelUp)
                {
                    output = $"{stat.Level} (Level in {hours}h {minutes}m | {stat.Experience - stat.PrevLevelXp - GetXpDiff(stat.Level)}/{stat.NextLevelXp - stat.PrevLevelXp - GetXpDiff(stat.Level)} XP)";
                }
            }
            return(output);
        }
예제 #2
0
 public async Task <LevelUpRewardsResponse> GetLevelUpRewards(int level)
 {
     return(await _inventory.GetLevelUpRewards(level));
 }