public void HandleEvent(EggIncubatorStatusEvent evt, ISession session)
 {
     this.gui.updateIncubator(evt.IncubatorId, evt.KmWalked.ToString("F3"));
     Logger.Write(evt.WasAddedNow
         ? session.Translation.GetTranslation(TranslationString.IncubatorPuttingEgg, evt.KmRemaining)
         : session.Translation.GetTranslation(TranslationString.IncubatorStatusUpdate, evt.KmRemaining), LogLevel.Egg);
 }
 public void HandleEvent(EggIncubatorStatusEvent eggIncubatorStatusEvent, ISession session)
 {
     Write(eggIncubatorStatusEvent.WasAddedNow
         ? session.Translation.GetTranslation(TranslationString.IncubatorPuttingEgg, eggIncubatorStatusEvent.KmRemaining)
         : session.Translation.GetTranslation(TranslationString.IncubatorStatusUpdate, eggIncubatorStatusEvent.KmRemaining),
           LogLevel.Egg);
 }
 public void OnBotEvent(EggIncubatorStatusEvent e)
 {
     datacontext.EggsList.OnEggIncubatorStatus(e);
     //datacontext.PlayerInfo.UpdateEggs(e.KmRemaining); //Still in the works(TheWizard1328)
     datacontext.PlayerInfo.RaisePropertyChanged("KmRemaining");
     datacontext.PlayerInfo.RaisePropertyChanged("KmToWalk");
     datacontext.PlayerInfo.RaisePropertyChanged("EggPerc");
 }
 private static void HandleEvent(EggIncubatorStatusEvent eggIncubatorStatusEvent, ISession session)
 {
     Logger.Write(eggIncubatorStatusEvent.WasAddedNow
             ? session.Translation.GetTranslation(TranslationString.IncubatorPuttingEgg,
                                                  eggIncubatorStatusEvent.KmToWalk.ToString("0.00").PadLeft(5))
             : session.Translation.GetTranslation(TranslationString.IncubatorStatusUpdate,
                                                  eggIncubatorStatusEvent.KmRemaining.ToString("0.00").PadLeft(5),
                                                  eggIncubatorStatusEvent.KmToWalk.ToString("0.00").PadLeft(5)),
                  LogLevel.Egg);
 }
Exemple #5
0
        internal void OnEggIncubatorStatus(EggIncubatorStatusEvent e)
        {
            var egg  = this.Eggs.FirstOrDefault(t => t.Id == e.PokemonId);
            var incu = this.Incubators.FirstOrDefault(t => t.Id == e.IncubatorId);

            egg.Hatchable = false;
            incu.InUse    = true;
            egg.KM        = e.KmWalked;

            egg.RaisePropertyChanged("KM");
            egg.RaisePropertyChanged("Hatchable");
            incu.RaisePropertyChanged("InUse");
        }
        internal void OnEggIncubatorStatus(EggIncubatorStatusEvent e)
        {
            var egg  = Eggs.FirstOrDefault(t => t.Id == e.PokemonId);
            var incu = Incubators.FirstOrDefault(t => t.Id == e.IncubatorId);

            if (egg == null)
            {
                return;
            }

            egg.Hatchable = false;
            incu.InUse    = true;
            egg.KM        = e.KmToWalk - e.KmWalked; //Still in the works(TheWizard1328)

            egg.RaisePropertyChanged("KM");
            egg.RaisePropertyChanged("Hatchable");
            incu.RaisePropertyChanged("InUse");
        }
Exemple #7
0
 public void HandleEvent(EggIncubatorStatusEvent evt, ISession session)
 {
 }
Exemple #8
0
 public void OnBotEvent(EggIncubatorStatusEvent e)
 {
     datacontext.EggsList.OnEggIncubatorStatus(e);
 }
        public static async Task Execute(ISession session, CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();
            TinyIoC.TinyIoCContainer.Current.Resolve <MultiAccountManager>().ThrowIfSwitchAccountRequested();

            try
            {
                var playerStats = (await session.Inventory.GetPlayerStats().ConfigureAwait(false)).FirstOrDefault();
                if (playerStats == null)
                {
                    return;
                }

                var kmWalked = playerStats.KmWalked;

                var incubators = (await session.Inventory.GetEggIncubators().ConfigureAwait(false))
                                 .Where(x => x.UsesRemaining > 0 || x.ItemId == ItemId.ItemIncubatorBasicUnlimited)
                                 .OrderByDescending(x => x.ItemId == ItemId.ItemIncubatorBasicUnlimited)
                                 .ToList();

                var unusedEggs = (await session.Inventory.GetEggs().ConfigureAwait(false))
                                 .Where(x => string.IsNullOrEmpty(x.EggIncubatorId))
                                 .OrderBy(x => x.EggKmWalkedTarget - x.EggKmWalkedStart)
                                 .ToList();

                var rememberedIncubatorsFilePath = Path.Combine(session.LogicSettings.ProfilePath, "temp", "incubators.json");
                var rememberedIncubators         = GetRememberedIncubators(rememberedIncubatorsFilePath);
                var pokemons = (await session.Inventory.GetPokemons().ConfigureAwait(false)).ToList();
                var eggIncubatorStatusEvent = new EggIncubatorStatusEvent();

                // Check if eggs in remembered incubator usages have since hatched
                // (instead of calling session.Client.Inventory.GetHatchedEgg(), which doesn't seem to work properly)
                foreach (var incubator in rememberedIncubators)
                {
                    var hatched = pokemons.FirstOrDefault(x => !x.IsEgg && x.Id == incubator.PokemonId);
                    if (hatched == null)
                    {
                        continue;
                    }

                    //Still Needs some work - TheWizard1328
                    var stats       = session.RuntimeStatistics;        // Total Km walked
                    var KMs         = eggIncubatorStatusEvent.KmToWalk; //playerStats.KmWalked - hatched.EggKmWalkedStart; // Total Km Walked(hatched.EggKmWalkedStart=0)
                    var stardust1   = session.Inventory.GetStarDust();  // Total trainer Stardust
                    var stardust2   = stats.TotalStardust;              // Total trainer Stardust
                    var ExpAwarded1 = playerStats.Experience;           // Total Player Exp - TheWizard1328
                    var ExpAwarded2 = stats.TotalExperience;            // Session Exp - TheWizard1328
                    var TotCandy    = session.Inventory.GetCandyCount(hatched.PokemonId);
                    //Temp logger line personal testing info - TheWizard1328
#if DEBUG
                    Logger.Write($"Hatch: eISE.KmWalked: {eggIncubatorStatusEvent.KmWalked:0.00} | eISE.KmToWalk: {eggIncubatorStatusEvent.KmToWalk:0.00} | " +
                                 $"XP1: {ExpAwarded1} | XP2: {ExpAwarded2} | SD1: {stardust1} | SD2: {stardust2}", LogLevel.Egg, ConsoleColor.DarkYellow);
#endif
                    if (session.LogicSettings.NotificationConfig.EnablePushBulletNotification)
                    {
                        await PushNotificationClient.SendNotification(session, $"Egg has hatched.", $"Pokemon: {hatched.PokemonId}\n" +
                                                                      $"Lvl: {PokemonInfo.GetLevel(hatched)}\n" +
                                                                      $"CP:  {hatched.Cp}\n" +
                                                                      $"IV:  {Math.Round(PokemonInfo.CalculatePokemonPerfection(hatched), 2)}\n", true).ConfigureAwait(false);
                    }

                    session.EventDispatcher.Send(new EggHatchedEvent
                    {
                        Dist       = KMs, //Still working on this - TheWizard1328
                        Id         = hatched.Id,
                        PokemonId  = hatched.PokemonId,
                        Level      = PokemonInfo.GetLevel(hatched),
                        Cp         = hatched.Cp,
                        MaxCp      = PokemonInfo.CalculateMaxCp(hatched.PokemonId),
                        Perfection = Math.Round(PokemonInfo.CalculatePokemonPerfection(hatched), 2),
                        HXP        = ExpAwarded1,
                        HSD        = stardust2, // This still needs work too to display the total SD after hatching - TheWizard1328
                        HCandy     = await TotCandy,
                    });
                }

                var newRememberedIncubators = new List <IncubatorUsage>();

                foreach (var incubator in incubators)
                {
                    cancellationToken.ThrowIfCancellationRequested();
                    TinyIoC.TinyIoCContainer.Current.Resolve <MultiAccountManager>().ThrowIfSwitchAccountRequested();
                    if (incubator.PokemonId == 0)
                    {
                        // Unlimited incubators prefer short eggs, limited incubators prefer long eggs
                        // Special case: If only one incubator is available at all, it will prefer long eggs
                        var egg = (incubator.ItemId == ItemId.ItemIncubatorBasicUnlimited && incubators.Count > 1)
                            ? unusedEggs.FirstOrDefault()
                            : unusedEggs.LastOrDefault();

                        if (egg == null)
                        {
                            continue;
                        }

                        // Skip (save) limited incubators depending on user choice in config
                        if (!session.LogicSettings.UseLimitedEggIncubators &&
                            incubator.ItemId != ItemId.ItemIncubatorBasicUnlimited)
                        {
                            continue;
                        }

                        var response = await session.Client.Inventory.UseItemEggIncubator(incubator.Id, egg.Id).ConfigureAwait(false);

                        unusedEggs.Remove(egg);

                        newRememberedIncubators.Add(new IncubatorUsage {
                            IncubatorId = incubator.Id, PokemonId = egg.Id
                        });

                        session.EventDispatcher.Send(new EggIncubatorStatusEvent
                        {
                            IncubatorId = incubator.Id,
                            WasAddedNow = true,
                            PokemonId   = egg.Id,
                            KmToWalk    = egg.EggKmWalkedTarget,
                            KmRemaining = response.EggIncubator.TargetKmWalked - kmWalked
                        });
                    }
                    else
                    {
                        newRememberedIncubators.Add(new IncubatorUsage
                        {
                            IncubatorId = incubator.Id,
                            PokemonId   = incubator.PokemonId
                        });

                        session.EventDispatcher.Send(new EggIncubatorStatusEvent
                        {
                            IncubatorId = incubator.Id,
                            PokemonId   = incubator.PokemonId,
                            KmToWalk    = incubator.TargetKmWalked - incubator.StartKmWalked,
                            KmRemaining = incubator.TargetKmWalked - kmWalked
                        });
                    }
                }

                if (!newRememberedIncubators.SequenceEqual(rememberedIncubators))
                {
                    SaveRememberedIncubators(newRememberedIncubators, rememberedIncubatorsFilePath);
                }
            }
            catch (Exception)
            {
            }
        }
Exemple #10
0
 public void HandleEvent(EggIncubatorStatusEvent evt, ISession session)
 {
     Logger.Write(evt.WasAddedNow
         ? session.Translation.GetTranslation(TranslationString.IncubatorPuttingEgg, evt.KmRemaining)
         : session.Translation.GetTranslation(TranslationString.IncubatorStatusUpdate, evt.KmRemaining));
 }