Skip to content
This repository has been archived by the owner on Jul 30, 2020. It is now read-only.

Commit

Permalink
Merge pull request #352 from Necrobot-Private/feature/fix-first-start…
Browse files Browse the repository at this point in the history
…-tutorial

Fix login for first time users that have not yet completed the tutorial.
  • Loading branch information
jjskuld authored Nov 17, 2016
2 parents 5bb7b25 + 1b730e4 commit e43c5ef
Show file tree
Hide file tree
Showing 11 changed files with 180 additions and 247 deletions.
2 changes: 1 addition & 1 deletion FeroxRev
Submodule FeroxRev updated 1 files
+2 −0 Rpc/Login.cs
8 changes: 4 additions & 4 deletions PoGo.NecroBot.Logic/Common/Translations.cs
Original file line number Diff line number Diff line change
Expand Up @@ -530,13 +530,13 @@ public class Translation : ITranslation
new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupProxyUsernameConfirm, "Accepted Proxy Username: {0}"),
new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupProxyPasswordPrompt, "Please enter your Proxy Password (Right click to paste)"),
new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupProxyPasswordConfirm, "Accepted Proxy Password: {0}"),
new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupAutoCompleteTutPrompt, "Would you like to enable the Auto-Complete Tutorial Feature? {0}/{1}"),
//new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupAutoCompleteTutPrompt, "Would you like to enable the Auto-Complete Tutorial Feature? {0}/{1}"),
new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupAutoCompleteTutNicknamePrompt, "Please enter your desired Nickname"),
new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupAutoCompleteTutNicknameConfirm, "Accepted Nickname: {0}"),
//new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupAutoCompleteTutNicknameConfirm, "Accepted Nickname: {0}"),
new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupAutoCompleteTutGenderPrompt, "Please enter your desired Gender (ENGLISH WORD: Male or Female)"),
new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupAutoCompleteTutGenderConfirm, "Accepted Gender: {0}"),
//new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupAutoCompleteTutGenderConfirm, "Accepted Gender: {0}"),
new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupAutoCompleteTutStarterPrompt, "Please enter your desired Starter (ENGLISH NAME: Bulbasaur, Charmander, Squirtle)"),
new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupAutoCompleteTutStarterConfirm, "Accepted Starter: {0}"),
//new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupAutoCompleteTutStarterConfirm, "Accepted Starter: {0}"),
new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupWebSocketPrompt, "Would you like to enable the WebSocket Feature? {0}/{1}"),
new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupWebSocketPortPrompt, "Please enter your WebSocket Port (default 14251)"),
new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupWebSocketPortConfirm, "Accepted Port: {0}"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,10 +140,6 @@ public interface ILogicSettings
bool UsePokeStopLimit { get; }
bool UseCatchLimit { get; }
bool UseNearActionRandom { get; }
bool AutoCompleteTutorial { get; }
string DesiredNickname { get; }
string DesiredGender { get; }
string DesiredStarter { get; }
ICollection<KeyValuePair<ItemId, int>> ItemRecycleFilter { get; }

ICollection<PokemonId> PokemonsToEvolve { get; }
Expand Down
47 changes: 16 additions & 31 deletions PoGo.NecroBot.Logic/Inventory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -267,11 +267,7 @@ public int GetStarDust()

public async void GetPlayerData()
{
for (int i = 0; i < 3; i++)
{
_player = await _client.Player.GetPlayer();
if (_player != null) break;
}
_player = await _client.Player.GetPlayer();
}

public async Task<PokemonData> GetHighestPokemonOfTypeByIv(PokemonData pokemon)
Expand Down Expand Up @@ -440,36 +436,27 @@ public async Task<IEnumerable<PokemonData>> GetPokemons()
inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.PokemonData)
.Where(p => p != null && p.PokemonId > 0);
}
public async Task<IEnumerable<PokemonData>> GetFaveriotPokemon()
public async Task<IEnumerable<PokemonData>> GetFavoritePokemons()
{
var inventory = await GetPokemons();
return
inventory.Where(i => i.Favorite == 1);
}

public async Task<IEnumerable<PokemonData>> GetDeployedPokemons()
{
var inventory = await GetPokemons();
return
inventory.Where(i => !string.IsNullOrEmpty(i.DeployedFortId));
}

public async Task<IEnumerable<PokemonSettings>> GetPokemonSettings()
{
var ss = new SemaphoreSlim(1);

await ss.WaitAsync();
try
if (_templates == null || _pokemonSettings == null)
{
if (_templates == null || _pokemonSettings == null)
{
for (int j = 0; j < 3; j++)
{
_templates = await _client.Download.GetItemTemplates();
_pokemonSettings = _templates.ItemTemplates.Select(i => i.PokemonSettings).Where(p => p != null && p.FamilyId != PokemonFamilyId.FamilyUnset);
if (_templates.ItemTemplates.Count > 10) break;
}
}
_templates = await _client.Download.GetItemTemplates();
_pokemonSettings = _templates.ItemTemplates.Select(i => i.PokemonSettings).Where(p => p != null && p.FamilyId != PokemonFamilyId.FamilyUnset);
}
finally
{
ss.Release();
}

return _pokemonSettings;
}

Expand Down Expand Up @@ -591,7 +578,9 @@ public TransferFilter GetPokemonTransferFilter(PokemonId pokemon)
if (_logicSettings.PokemonsTransferFilter != null &&
_logicSettings.PokemonsTransferFilter.ContainsKey(pokemon))
{
return _logicSettings.PokemonsTransferFilter[pokemon];
var filter = _logicSettings.PokemonsTransferFilter[pokemon];
if(filter.Moves == null ) { filter.Moves = new List<List<PokemonMove>>(); }
return filter;
}
return new TransferFilter(_logicSettings.KeepMinCp, _logicSettings.KeepMinLvl, _logicSettings.UseKeepMinLvl, _logicSettings.KeepMinIvPercentage,
_logicSettings.KeepMinOperator, _logicSettings.KeepMinDuplicatePokemon);
Expand All @@ -605,12 +594,8 @@ public async Task<GetInventoryResponse> RefreshCachedInventory()
await ss.WaitAsync();
try
{
for (int i = 0; i < 3; i++)
{
_lastRefresh = now;
_cachedInventory = await _client.Inventory.GetInventory();
if (_cachedInventory != null && _cachedInventory.InventoryDelta.InventoryItems.Count > 0) break;
}
_lastRefresh = now;
_cachedInventory = await _client.Inventory.GetInventory();
return _cachedInventory;
}
finally
Expand Down
63 changes: 23 additions & 40 deletions PoGo.NecroBot.Logic/Model/Settings/GlobalSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
using PokemonGo.RocketAPI.Enums;
using POGOProtos.Enums;
using PoGo.NecroBot.Logic.Service.Elevation;
using PokemonGo.RocketAPI.Extensions;

#endregion

Expand Down Expand Up @@ -304,6 +305,9 @@ public static GlobalSettings Load(string path, bool boolSkipSave = false, bool v
LogLevel.Warning);
Console.ReadKey();
}

// Now we know it's valid so update input with the migrated version.
input = jsonObj.ToString();
}

settings = JsonConvert.DeserializeObject<GlobalSettings>(input, jsonSettings);
Expand Down Expand Up @@ -377,7 +381,8 @@ private static void MigrateSettings(JObject settings, string configFile, string
}

// Backup old config file.
string backupPath = configFile.Replace(".json", $"-{schemaVersion}.backup.json");
long ts = DateTime.UtcNow.ToUnixTime(); // Add timestamp to avoid file conflicts
string backupPath = configFile.Replace(".json", $"-{schemaVersion}-{ts}.backup.json");
Logger.Write($"Backing up config.json to: {backupPath}", LogLevel.Info);
File.Copy(configFile, backupPath);

Expand All @@ -388,11 +393,12 @@ private static void MigrateSettings(JObject settings, string configFile, string
Logger.Write($"Migrating configuration from schema version {version} to {version + 1}", LogLevel.Info);
switch(version)
{
case 0:
settings["UpdateConfig"]["SchemaVersion"] = UpdateConfig.CURRENT_SCHEMA_VERSION;
break;
case 1:
// TODO Add schema migrations from version 1 to 2 here.
// Delete the auto complete tutorial settings.
((JObject)settings["PlayerConfig"]).Remove("AutoCompleteTutorial");
((JObject)settings["PlayerConfig"]).Remove("DesiredNickname");
((JObject)settings["PlayerConfig"]).Remove("DesiredGender");
((JObject)settings["PlayerConfig"]).Remove("DesiredStarter");
break;

case 2:
Expand All @@ -402,6 +408,9 @@ private static void MigrateSettings(JObject settings, string configFile, string
// Add more here.
}
}

// After migration we need to update the schema version to the latest version.
settings["UpdateConfig"]["SchemaVersion"] = UpdateConfig.CURRENT_SCHEMA_VERSION;
}

public void CheckProxy(ITranslation translator)
Expand All @@ -428,7 +437,6 @@ public static Session SetupSettings(Session session, GlobalSettings settings, IE
SetupWalkingConfig(newSession.Translation, settings);
SetupTelegramConfig(newSession.Translation, settings);
SetupProxyConfig(newSession.Translation, settings);
SetupAutoCompleteTutConfig(newSession.Translation, settings);
SetupWebSocketConfig(newSession.Translation, settings);
SaveFiles(settings, configPath);

Expand Down Expand Up @@ -494,30 +502,7 @@ private static void SetupWalkingConfig(ITranslation translator, GlobalSettings s
settings.LocationConfig.WalkingSpeedVariant = PromptForDouble(translator, translator.GetTranslation(TranslationString.FirstStartSetupWalkingSpeedVariantPrompt));
Logger.Write(translator.GetTranslation(TranslationString.FirstStartSetupWalkingSpeedVariantConfirm, settings.LocationConfig.WalkingSpeedVariant.ToString()));
}

private static void SetupAutoCompleteTutConfig(ITranslation translator, GlobalSettings settings)
{
if (false == PromptForBoolean(translator, translator.GetTranslation(TranslationString.FirstStartSetupAutoCompleteTutPrompt, "Y", "N")))
return;

settings.PlayerConfig.AutoCompleteTutorial = true;

string strInput = PromptForString(translator, translator.GetTranslation(TranslationString.FirstStartSetupAutoCompleteTutNicknamePrompt));
settings.PlayerConfig.DesiredNickname = strInput;
Logger.Write(translator.GetTranslation(TranslationString.FirstStartSetupAutoCompleteTutNicknameConfirm,
strInput));

strInput = PromptForString(translator, translator.GetTranslation(TranslationString.FirstStartSetupAutoCompleteTutGenderPrompt));
settings.PlayerConfig.DesiredGender = strInput;
Logger.Write(translator.GetTranslation(TranslationString.FirstStartSetupAutoCompleteTutGenderConfirm,
strInput));

strInput = PromptForString(translator, translator.GetTranslation(TranslationString.FirstStartSetupAutoCompleteTutStarterPrompt));
settings.PlayerConfig.DesiredStarter = strInput;
Logger.Write(translator.GetTranslation(TranslationString.FirstStartSetupAutoCompleteTutStarterConfirm,
strInput));
}


private static void SetupWebSocketConfig(ITranslation translator, GlobalSettings settings)
{
if (false == PromptForBoolean(translator, translator.GetTranslation(TranslationString.FirstStartSetupWebSocketPrompt, "Y", "N")))
Expand Down Expand Up @@ -677,11 +662,11 @@ public void Save(string fullPath, bool validate = false)
Console.ReadKey();
}

private static bool PromptForBoolean(ITranslation translator, string initialPrompt, string errorPrompt = null)
public static bool PromptForBoolean(ITranslation translator, string initialPrompt, string errorPrompt = null)
{
Logger.Write(initialPrompt, LogLevel.Info);
while (true)
{
Logger.Write(initialPrompt, LogLevel.Info);
var strInput = Console.ReadLine().ToLower();

switch (strInput)
Expand All @@ -700,11 +685,11 @@ private static bool PromptForBoolean(ITranslation translator, string initialProm
}
}

private static double PromptForDouble(ITranslation translator, string initialPrompt, string errorPrompt = null)
public static double PromptForDouble(ITranslation translator, string initialPrompt, string errorPrompt = null)
{
Logger.Write(initialPrompt, LogLevel.Info);
while (true)
{
Logger.Write(initialPrompt, LogLevel.Info);
var strInput = Console.ReadLine();

double doubleVal;
Expand All @@ -722,11 +707,11 @@ private static double PromptForDouble(ITranslation translator, string initialPro
}
}

private static int PromptForInteger(ITranslation translator, string initialPrompt, string errorPrompt = null)
public static int PromptForInteger(ITranslation translator, string initialPrompt, string errorPrompt = null)
{
Logger.Write(initialPrompt, LogLevel.Info);
while (true)
{
Logger.Write(initialPrompt, LogLevel.Info);
var strInput = Console.ReadLine();

int intVal;
Expand All @@ -744,12 +729,11 @@ private static int PromptForInteger(ITranslation translator, string initialPromp
}
}

private static string PromptForString(ITranslation translator, string initialPrompt, string[] validStrings = null, string errorPrompt = null, bool caseSensitive = true)
public static string PromptForString(ITranslation translator, string initialPrompt, string[] validStrings = null, string errorPrompt = null, bool caseSensitive = true)
{
Logger.Write(initialPrompt, LogLevel.Info);

while (true)
{
Logger.Write(initialPrompt, LogLevel.Info);
// For now this just reads from the console, but in the future, we may change this to read from the GUI.
string strInput = Console.ReadLine();

Expand All @@ -774,7 +758,6 @@ private static string PromptForString(ITranslation translator, string initialPro
}
Logger.Write(errorPrompt, LogLevel.Error);
}

}
}
}
4 changes: 0 additions & 4 deletions PoGo.NecroBot.Logic/Model/Settings/LogicSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -98,10 +98,6 @@ public LogicSettings(GlobalSettings settings)
public int RecycleActionDelay => _settings.PlayerConfig.RecycleActionDelay;
public int RenamePokemonActionDelay => _settings.PlayerConfig.RenamePokemonActionDelay;
public bool UseNearActionRandom => _settings.PlayerConfig.UseNearActionRandom;
public bool AutoCompleteTutorial => _settings.PlayerConfig.AutoCompleteTutorial;
public string DesiredNickname => _settings.PlayerConfig.DesiredNickname;
public string DesiredGender => _settings.PlayerConfig.DesiredGender;
public string DesiredStarter => _settings.PlayerConfig.DesiredStarter;
public bool UsePokemonToNotCatchFilter => _settings.PokemonConfig.UsePokemonToNotCatchFilter;
public bool UsePokemonSniperFilterOnly => _settings.PokemonConfig.UsePokemonSniperFilterOnly;
public int KeepMinDuplicatePokemon => _settings.PokemonConfig.KeepMinDuplicatePokemon;
Expand Down
33 changes: 0 additions & 33 deletions PoGo.NecroBot.Logic/Model/Settings/PlayerConfig.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,6 @@ namespace PoGo.NecroBot.Logic.Model.Settings
[JsonObject(Title = "Player Config", Description = "Set your player settings.", ItemRequired = Required.DisallowNull)]
public class PlayerConfig
{
internal enum Gender
{
Male,
Female
}

internal enum Starter
{
Bulbasaur,
Charmander,
Squirtle
}

[DefaultValue(10000)]
[Range(0, 999999)]
[JsonProperty(Required = Required.DisallowNull, DefaultValueHandling = DefaultValueHandling.Populate, Order = 1)]
Expand Down Expand Up @@ -48,25 +35,5 @@ internal enum Starter
[DefaultValue(true)]
[JsonProperty(Required = Required.DisallowNull, DefaultValueHandling = DefaultValueHandling.Populate, Order = 6)]
public bool UseNearActionRandom = true;

[DefaultValue(false)]
[JsonProperty(Required = Required.DisallowNull, DefaultValueHandling = DefaultValueHandling.Populate, Order = 7)]
public bool AutoCompleteTutorial;

[DefaultValue("Nickname")]
[MinLength(0)]
[MaxLength(15)]
[JsonProperty(Required = Required.DisallowNull, DefaultValueHandling = DefaultValueHandling.Populate, Order = 8)]
public string DesiredNickname = "Nickname";

[DefaultValue("Male")]
[EnumDataType(typeof(Gender))]
[JsonProperty(Required = Required.DisallowNull, DefaultValueHandling = DefaultValueHandling.Populate, Order = 9)]
public string DesiredGender = "Male";

[DefaultValue("Squirtle")]
[EnumDataType(typeof(Starter))]
[JsonProperty(Required = Required.DisallowNull, DefaultValueHandling = DefaultValueHandling.Populate, Order = 10)]
public string DesiredStarter = "Squirtle";
}
}
2 changes: 1 addition & 1 deletion PoGo.NecroBot.Logic/Model/Settings/UpdateConfig.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ namespace PoGo.NecroBot.Logic.Model.Settings
[JsonObject(Title = "Update Config", Description = "Set your update settings.", ItemRequired = Required.DisallowNull)]
public class UpdateConfig
{
public const int CURRENT_SCHEMA_VERSION = 1;
public const int CURRENT_SCHEMA_VERSION = 2;

[DefaultValue(CURRENT_SCHEMA_VERSION)]
[JsonProperty(Required = Required.DisallowNull, DefaultValueHandling = DefaultValueHandling.Populate, Order = 1)]
Expand Down
Loading

0 comments on commit e43c5ef

Please sign in to comment.