/// <summary> /// Loads a player using the drop down list. /// </summary> /// <param name="selectedSave">Item from the drop down list.</param> /// <param name="isIT"></param> /// <returns></returns> public LoadPlayerResult LoadPlayer(PlayerSave selectedSave, bool isIT = false) { var result = new LoadPlayerResult(); if (string.IsNullOrWhiteSpace(selectedSave?.Name)) { return(result); } #region Get the player result.PlayerFile = GamePathResolver.GetPlayerFile(selectedSave.Name); var resultPlayer = this.userContext.Players.GetOrAddAtomic(result.PlayerFile, k => { var resultPC = new PlayerCollection(selectedSave.Name, k); resultPC.IsImmortalThrone = isIT; try { PlayerCollectionProvider.LoadFile(resultPC); selectedSave.Info = resultPC.PlayerInfo; } catch (ArgumentException argumentException) { resultPC.ArgumentException = argumentException; } return(resultPC); }); result.Player = resultPlayer; #endregion return(result); }
/// <summary> /// Loads a player using the drop down list. /// Assumes designators are appended to character name. /// </summary> /// <param name="selectedText">Player string from the drop down list.</param> /// <param name="isIT"></param> /// <returns></returns> public LoadPlayerResult LoadPlayer(string selectedText, bool isIT = false) { var result = new LoadPlayerResult(); if (string.IsNullOrWhiteSpace(selectedText)) { return(result); } result.IsCustom = selectedText.EndsWith(PlayerService.CustomDesignator, StringComparison.Ordinal); if (result.IsCustom) { // strip off the end from the player name. selectedText = selectedText.Remove(selectedText.IndexOf(PlayerService.CustomDesignator, StringComparison.Ordinal), PlayerService.CustomDesignator.Length); } #region Get the player result.PlayerFile = GamePathResolver.GetPlayerFile(selectedText); try { result.Player = this.userContext.Players[result.PlayerFile]; } catch (KeyNotFoundException) { result.Player = new PlayerCollection(selectedText, result.PlayerFile); result.Player.IsImmortalThrone = isIT; try { PlayerCollectionProvider.LoadFile(result.Player); this.userContext.Players.Add(result.PlayerFile, result.Player); } catch (ArgumentException argumentException) { result.PlayerArgumentException = argumentException; } } #endregion #region Get the player's stash result.StashFile = GamePathResolver.GetPlayerStashFile(selectedText); try { result.Stash = this.userContext.Stashes[result.StashFile]; } catch (KeyNotFoundException) { result.Stash = new Stash(selectedText, result.StashFile); try { result.StashFound = StashProvider.LoadFile(result.Stash); if (result.StashFound.Value) { this.userContext.Stashes.Add(result.StashFile, result.Stash); } } catch (ArgumentException argumentException) { result.StashArgumentException = argumentException; } } #endregion return(result); }