Fixed a NullRef

Spegeli [2016-07-24 07:33:07]
Fixed a NullRef
Filename
PokemonGo.RocketAPI.Logic/Logic.cs
PokemonGo.RocketAPI.Logic/Navigation.cs
PokemonGo.RocketAPI/GeneratedCode/Payloads.cs
PokemonGo.RocketAPI/PokemonGo.RocketAPI.csproj
PokemonGo.RocketAPI/Properties/AssemblyInfo.cs
diff --git a/PokemonGo.RocketAPI.Logic/Logic.cs b/PokemonGo.RocketAPI.Logic/Logic.cs
index 0de5aaa..2586ddf 100644
--- a/PokemonGo.RocketAPI.Logic/Logic.cs
+++ b/PokemonGo.RocketAPI.Logic/Logic.cs
@@ -64,59 +64,28 @@ namespace PokemonGo.RocketAPI.Logic
             {
                 try
                 {
-                    if (_clientSettings.AuthType == AuthType.Ptc)
-                        await _client.DoPtcLogin(_clientSettings.PtcUsername, _clientSettings.PtcPassword);
-                    else if (_clientSettings.AuthType == AuthType.Google)
-                        await _client.DoGoogleLogin();
+                    switch (_clientSettings.AuthType)
+                    {
+                        case AuthType.Ptc:
+                            await _client.DoPtcLogin(_clientSettings.PtcUsername, _clientSettings.PtcPassword);
+                            break;
+                        case AuthType.Google:
+                            await _client.DoGoogleLogin();
+                            break;
+                        default:
+                            Logger.Write("wrong AuthType");
+                            Environment.Exit(0);
+                            break;
+                    }

                     await _client.SetServer();

                     await PostLoginExecute();
                 }
-                catch (AccessTokenExpiredException ex)
-                {
-                    Logger.Write($"Access token expired", LogLevel.Error);
-                    Logger.Write($"{ex}", LogLevel.Error);
-                }
-                catch (TaskCanceledException ex)
-                {
-                    Logger.Write("Task Canceled Exception - Restarting", LogLevel.Error);
-                    Logger.Write($"{ex}", LogLevel.Error);
-                    await Execute();
-                }
-                catch (UriFormatException ex)
-                {
-                    Logger.Write("UriFormatException - Restarting", LogLevel.Error);
-                    Logger.Write($"{ex}", LogLevel.Error);
-                    await Execute();
-                }
-                catch (ArgumentOutOfRangeException ex)
-                {
-                    Logger.Write("ArgumentOutOfRangeException - Restarting", LogLevel.Error);
-                    Logger.Write($"{ex}", LogLevel.Error);
-                    await Execute();
-                }
-                catch (ArgumentNullException ex)
+                catch (Exception e)
                 {
-                    Logger.Write("ArgumentNullException - Restarting", LogLevel.Error);
-                    Logger.Write($"{ex}");
-                    await Execute();
-                }
-                catch (NullReferenceException ex)
-                {
-                    Logger.Write("NullReferenceException - Restarting", LogLevel.Error);
-                    Logger.Write($"{ex}");
-                    await Execute();
-                }
-                catch (InvalidResponseException)
-                {
-                    Logger.Write("InvalidResponseException - Restarting", LogLevel.Error);
-                    await Execute();
-                }
-                catch (AggregateException ex)
-                {
-                    Logger.Write("AggregateException - Restarting", LogLevel.Error);
-                    Logger.Write($"{ex}");
+                    Logger.Write(e.Message + " from " + e.Source);
+                    Logger.Write("Got an exception, trying automatic restart..", LogLevel.Error);
                     await Execute();
                 }
                 await Task.Delay(10000);
@@ -243,6 +212,7 @@ namespace PokemonGo.RocketAPI.Logic
                     Logger.Write($"You don't own any Pokeballs :( - We missed a {pokemon.PokemonId} with CP {encounter?.WildPokemon?.PokemonData?.Cp}", LogLevel.Warning);
                     return;
                 }
+
                 var berries = inventoryBerries.Where(p => (ItemId)p.Item_ == bestBerry).FirstOrDefault();
                 if (bestBerry != ItemId.ItemUnknown && probability.HasValue && probability.Value < 0.35 && PokemonInfo.CalculatePokemonPerfection(encounter?.WildPokemon?.PokemonData) >= _clientSettings.KeepMinIVPercentage)
                 {
@@ -263,18 +233,14 @@ namespace PokemonGo.RocketAPI.Logic
                     _stats.GetStardust(profile.Profile.Currency.ToArray()[1].Amount);
                 }
                 _stats.UpdateConsoleTitle(_inventory);
+
                 if (encounter?.CaptureProbability?.CaptureProbability_ != null)
                 {
                     string catchStatus = attemptCounter > 1 ? $"{caughtPokemonResponse.Status} Attempt #{attemptCounter}" : $"{caughtPokemonResponse.Status}";
-                    Logger.Write(
-                        $"({catchStatus}) | {pokemon.PokemonId} Lvl {PokemonInfo.GetLevel(encounter?.WildPokemon?.PokemonData)} (CP {encounter?.WildPokemon?.PokemonData?.Cp}/{PokemonInfo.CalculateMaxCP(encounter?.WildPokemon?.PokemonData)} | {Math.Round(PokemonInfo.CalculatePokemonPerfection(encounter?.WildPokemon?.PokemonData)).ToString("0.00")} % perfect) | Chance: {(float)((int)(encounter?.CaptureProbability?.CaptureProbability_.First() * 100)) / 100} | {Math.Round(distance)}m dist | with {bestPokeball} and received XP {caughtPokemonResponse.Scores.Xp.Sum()}"
-                        , LogLevel.Pokemon);
-                    //Logger.Normal(ConsoleColor.Yellow,
-                    //caughtPokemonResponse.Status == CatchPokemonResponse.Types.CatchStatus.CatchSuccess
-                    //? $"(POKEBATTLE) ({catchStatus}) | {pokemon.PokemonId} Lvl {PokemonInfo.GetLevel(encounter?.WildPokemon?.PokemonData)} (CP {encounter?.WildPokemon?.PokemonData?.Cp}/{PokemonInfo.CalculateMaxCP(encounter?.WildPokemon?.PokemonData)} | {Math.Round(PokemonInfo.CalculatePokemonPerfection(encounter?.WildPokemon?.PokemonData)).ToString("0.00")} % perfect) | Chance: {(float)((int)(encounter?.CaptureProbability?.CaptureProbability_.First() * 100)) / 100} | {Math.Round(distance)}m dist | with {bestPokeball} and received XP {caughtPokemonResponse.Scores.Xp.Sum()}"
-                    //: $"(POKEBATTLE) ({catchStatus}) | {pokemon.PokemonId} Lvl {PokemonInfo.GetLevel(encounter?.WildPokemon?.PokemonData)} (CP {encounter?.WildPokemon?.PokemonData?.Cp} | {Math.Round(PokemonInfo.CalculatePokemonPerfection(encounter?.WildPokemon?.PokemonData)).ToString("0.00")} % perfect) | Chance: {(float)((int)(encounter?.CaptureProbability?.CaptureProbability_.First() * 100)) / 100} {caughtPokemonResponse.Status} | {Math.Round(distance)}m dist | using a {bestPokeball}.."
-                    //);
+                    string receivedXP = catchStatus == "CatchSuccess" ? $"and received XP {caughtPokemonResponse.Scores.Xp.Sum()}" : $"";
+                    Logger.Write($"({catchStatus}) | {pokemon.PokemonId} Lvl {PokemonInfo.GetLevel(encounter?.WildPokemon?.PokemonData)} (CP {encounter?.WildPokemon?.PokemonData?.Cp}/{PokemonInfo.CalculateMaxCP(encounter?.WildPokemon?.PokemonData)} | {Math.Round(PokemonInfo.CalculatePokemonPerfection(encounter?.WildPokemon?.PokemonData)).ToString("0.00")} % perfect) | Chance: {(float)((int)(encounter?.CaptureProbability?.CaptureProbability_.First() * 100)) / 100} | {Math.Round(distance)}m dist | with {bestPokeball} {receivedXP}", LogLevel.Pokemon);
                 }
+
                 attemptCounter++;
                 await RandomHelper.RandomDelay(750, 1250);
             }
diff --git a/PokemonGo.RocketAPI.Logic/Navigation.cs b/PokemonGo.RocketAPI.Logic/Navigation.cs
index d7a97ee..96e8a5d 100644
--- a/PokemonGo.RocketAPI.Logic/Navigation.cs
+++ b/PokemonGo.RocketAPI.Logic/Navigation.cs
@@ -70,7 +70,7 @@ namespace PokemonGo.RocketAPI.Logic
                             _client.Settings.DefaultAltitude);
                 if (functionExecutedWhileWalking != null)
                     await functionExecutedWhileWalking();// look for pokemon
-                await Task.Delay(Math.Min((int)(distanceToTarget / speedInMetersPerSecond * 1000), 3000));
+                await Task.Delay(Math.Min((int)(distanceToTarget / speedInMetersPerSecond * 100), 3000));
             } while (LocationUtils.CalculateDistanceInMeters(sourceLocation, targetLocation) >= 30);

             return result;
diff --git a/PokemonGo.RocketAPI/GeneratedCode/Payloads.cs b/PokemonGo.RocketAPI/GeneratedCode/Payloads.cs
index e1f80a0..881b11f 100644
--- a/PokemonGo.RocketAPI/GeneratedCode/Payloads.cs
+++ b/PokemonGo.RocketAPI/GeneratedCode/Payloads.cs
@@ -9897,6 +9897,11 @@ namespace PokemonGo.RocketAPI.GeneratedCode
             fromFort_ = other.fromFort_;
         }

+        public double CalculateIV()
+        {
+            return ((double)(IndividualAttack + IndividualDefense + IndividualStamina) / (3.0f * 15.0f)) * 100.0f;
+        }
+
         public static pb::MessageParser<PokemonData> Parser
         {
             get { return _parser; }
diff --git a/PokemonGo.RocketAPI/PokemonGo.RocketAPI.csproj b/PokemonGo.RocketAPI/PokemonGo.RocketAPI.csproj
index 4de48ff..3e83198 100644
--- a/PokemonGo.RocketAPI/PokemonGo.RocketAPI.csproj
+++ b/PokemonGo.RocketAPI/PokemonGo.RocketAPI.csproj
@@ -17,7 +17,7 @@
     <UpdateAssemblyInfoVersion>False</UpdateAssemblyInfoVersion>
     <AssemblyVersionSettings>YearStamp.MonthStamp.DayStamp.Increment</AssemblyVersionSettings>
     <PrimaryVersionType>AssemblyVersionAttribute</PrimaryVersionType>
-    <AssemblyVersion>2016.7.23.183</AssemblyVersion>
+    <AssemblyVersion>2016.7.24.212</AssemblyVersion>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
diff --git a/PokemonGo.RocketAPI/Properties/AssemblyInfo.cs b/PokemonGo.RocketAPI/Properties/AssemblyInfo.cs
index aa83ddd..bcb772a 100644
--- a/PokemonGo.RocketAPI/Properties/AssemblyInfo.cs
+++ b/PokemonGo.RocketAPI/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
 // You can specify all the values or you can default the Build and Revision Numbers
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("2016.7.23.184")]
+[assembly: AssemblyVersion("2016.7.24.213")]
 [assembly: AssemblyFileVersion("1.0.0.0")]
You may download the files in Public Git.