public IActionResult EditIV(int pokemonTeamId, int pokemonTeamDetailId) { this.UpdatePokemonTeamList(); if (pokemonTeams.Count < pokemonTeamId) { return(this.RedirectToAction("PokemonTeams", "User")); } else { PokemonTeamIV pokemonIV = this.dataService.GetObjectByPropertyValue <PokemonTeamIV>("Id", (int)pokemonTeams[pokemonTeamId - 1].GrabPokemonTeamDetails[pokemonTeamDetailId - 1].PokemonTeamIVId); PokemonTeamIVViewModel model = new PokemonTeamIVViewModel() { Id = pokemonIV.Id, Health = pokemonIV.Health, Attack = pokemonIV.Attack, Defense = pokemonIV.Defense, SpecialAttack = pokemonIV.SpecialAttack, SpecialDefense = pokemonIV.SpecialDefense, Speed = pokemonIV.Speed, PokemonId = pokemonIV.Id, }; return(this.View(model)); } }
/// <summary> /// Creates a pokemon for the imported team. /// </summary> /// <param name="importedPokemon">The pokemon string from the Pokemon Showdown export string.</param> /// <returns>The created PokemonTeamDetail object.</returns> private PokemonTeamDetailViewModel CreatePokemonDetailFromImport(string importedPokemon) { PokemonTeamDetailViewModel pokemonTeamDetail = new PokemonTeamDetailViewModel(); string pokemonName = importedPokemon.Split("\r\n")[0]; string remainingImportedText = importedPokemon.Replace(string.Concat(pokemonName, "\r\n"), string.Empty); pokemonName = pokemonName.Trim(); // Held item converter. if (pokemonName.IndexOf(" @ ") != -1) { string itemName = pokemonName.Split(" @ ")[1]; BattleItem battleItem = this.dataService.GetObjectByPropertyValue <BattleItem>("Name", itemName); if (battleItem != null) { pokemonTeamDetail.BattleItemId = battleItem.Id; } pokemonName = pokemonName.Split(string.Concat(" @ ", itemName))[0]; } // Gender converter. int genderCheckStart = pokemonName.LastIndexOf('('); if (genderCheckStart != -1 && pokemonName.Substring(genderCheckStart + 2, 1) == ")") { string genderInitial = pokemonName.Substring(genderCheckStart + 1, 1); if (genderInitial == "M") { pokemonTeamDetail.Gender = "Male"; } else if (genderInitial == "F") { pokemonTeamDetail.Gender = "Female"; } pokemonName = pokemonName.Split(string.Concat(" (", genderInitial, ")"))[0]; } // Nickname converter. if (pokemonName.IndexOf("(") != -1) { pokemonTeamDetail.Nickname = pokemonName.Substring(0, pokemonName.IndexOf("(") - 1); pokemonName = pokemonName.Replace(string.Concat(pokemonTeamDetail.Nickname, " ("), string.Empty); pokemonName = pokemonName.Replace(")", string.Empty); } // Pokemon converter. Pokemon pokemon; // Converts Pokemon Showdown's apostrophe to the database's apostrophe. pokemonName = pokemonName.Replace('’', '\''); // Used to check for alternate form if (pokemonName.LastIndexOf('-') != -1) { if (pokemonName.Contains("Gmax")) { pokemonName = pokemonName.Replace("-Gmax", "-Gigantamax"); } if (pokemonName == "Meowstic-F" || pokemonName == "Indeedee-F") { pokemonName = pokemonName.Replace("-F", "-Female"); } List <Form> forms = this.dataService.GetObjects <Form>("Name"); foreach (var f in forms) { f.Name = f.Name.Replace(' ', '-'); } string formName = pokemonName.Remove(0, pokemonName.IndexOf('-') + 1); Form form = forms.Find(x => x.Name == formName); if (form != null) { pokemon = this.dataService.GetPokemonFromNameAndFormName(pokemonName.Replace(string.Concat("-", form.Name), string.Empty), form.Name.Replace('-', ' ')); } else { pokemon = this.dataService.GetPokemon(pokemonName); } } else { pokemon = this.dataService.GetPokemon(pokemonName); } pokemonTeamDetail.PokemonId = pokemon.Id; // Ability converter. Ability ability; string abilityName = remainingImportedText.Split("\r\n")[0]; if (abilityName.Contains("Ability: ")) { remainingImportedText = remainingImportedText.Replace(string.Concat(abilityName, "\r\n"), string.Empty); abilityName = abilityName.Split("Ability: ")[1].Trim(); ability = this.dataService.GetObjectByPropertyValue <Ability>("Name", abilityName); } else { ability = this.dataService.GetAbilitiesForPokemon(pokemon.Id)[0]; } pokemonTeamDetail.AbilityId = ability.Id; // Level converter. if (remainingImportedText.Contains("Level:")) { string pokemonLevel = remainingImportedText.Split("\r\n")[0]; remainingImportedText = remainingImportedText.Replace(string.Concat(pokemonLevel, "\r\n"), string.Empty); pokemonLevel = pokemonLevel.Trim(); pokemonTeamDetail.Level = Convert.ToByte(pokemonLevel.Substring(pokemonLevel.IndexOf(':') + 2, pokemonLevel.Length - (pokemonLevel.IndexOf(':') + 2))); if (pokemonTeamDetail.Level == 0) { pokemonTeamDetail.Level = 1; } else if (pokemonTeamDetail.Level > 100 || string.Compare(pokemonTeamDetail.Level.ToString(), pokemonLevel.Substring(pokemonLevel.IndexOf(':') + 2)) != 0) { pokemonTeamDetail.Level = 100; } } else { pokemonTeamDetail.Level = 100; } // Shiny converter. if (remainingImportedText.Contains("Shiny: Yes")) { remainingImportedText = remainingImportedText.Replace(string.Concat(remainingImportedText.Split("\r\n")[0], "\r\n"), string.Empty); pokemonTeamDetail.IsShiny = true; } // Happiness converter. if (remainingImportedText.Contains("Happiness:")) { string happiness = remainingImportedText.Split("\r\n")[0]; remainingImportedText = remainingImportedText.Replace(string.Concat(happiness, "\r\n"), string.Empty); happiness = happiness.Trim(); pokemonTeamDetail.Happiness = Convert.ToByte(happiness.Substring(happiness.IndexOf(':') + 2, happiness.Length - (happiness.IndexOf(':') + 2))); if (string.Compare(pokemonTeamDetail.Happiness.ToString(), happiness.Substring(happiness.IndexOf(':') + 2)) != 0) { pokemonTeamDetail.Happiness = 255; } } else { pokemonTeamDetail.Happiness = 255; } // EV converter. if (remainingImportedText.Contains("EVs:")) { string evs = remainingImportedText.Split("\r\n")[0]; remainingImportedText = remainingImportedText.Replace(string.Concat(evs, "\r\n"), string.Empty); PokemonTeamEV pokemonEVs = new PokemonTeamEV(); if (evs.Contains("HP")) { string health = evs.Substring(evs.IndexOf("HP") - 4, 3); health = health.Replace(":", string.Empty).Replace("/", string.Empty).Trim(); pokemonEVs.Health = Convert.ToByte(health); } if (evs.Contains("Atk")) { string attack = evs.Substring(evs.IndexOf("Atk") - 4, 3); attack = attack.Replace(":", string.Empty).Replace("/", string.Empty).Trim(); pokemonEVs.Attack = Convert.ToByte(attack); } if (evs.Contains("Def")) { string defense = evs.Substring(evs.IndexOf("Def") - 4, 3); defense = defense.Replace(":", string.Empty).Replace("/", string.Empty).Trim(); pokemonEVs.Defense = Convert.ToByte(defense); } if (evs.Contains("SpA")) { string specialAttack = evs.Substring(evs.IndexOf("SpA") - 4, 3); specialAttack = specialAttack.Replace(":", string.Empty).Replace("/", string.Empty).Trim(); pokemonEVs.SpecialAttack = Convert.ToByte(specialAttack); } if (evs.Contains("SpD")) { string specialDefense = evs.Substring(evs.IndexOf("SpD") - 4, 3); specialDefense = specialDefense.Replace(":", string.Empty).Replace("/", string.Empty).Trim(); pokemonEVs.SpecialDefense = Convert.ToByte(specialDefense); } if (evs.Contains("Spe")) { string speed = evs.Substring(evs.IndexOf("Spe") - 4, 3); speed = speed.Replace(":", string.Empty).Replace("/", string.Empty).Trim(); pokemonEVs.Speed = Convert.ToByte(speed); } pokemonTeamDetail.EVs = pokemonEVs; } // Nature converter. if (remainingImportedText.Contains("Nature")) { string natureName = remainingImportedText.Split("\r\n")[0]; remainingImportedText = remainingImportedText.Replace(string.Concat(natureName, "\r\n"), string.Empty); natureName = natureName.Replace("Nature", string.Empty).Trim(); Nature nature = this.dataService.GetObjectByPropertyValue <Nature>("Name", natureName); pokemonTeamDetail.NatureId = nature.Id; } else { pokemonTeamDetail.NatureId = this.dataService.GetObjectByPropertyValue <Nature>("Name", "Serious").Id; } // IV converter. if (remainingImportedText.Contains("IVs:")) { string ivs = remainingImportedText.Split("\r\n")[0]; remainingImportedText = remainingImportedText.Replace(string.Concat(ivs, "\r\n"), string.Empty); PokemonTeamIV pokemonIVs = new PokemonTeamIV(); if (ivs.Contains("HP")) { string health = ivs.Substring(ivs.IndexOf("HP") - 3, 2).Trim(); pokemonIVs.Health = Convert.ToByte(health); } if (ivs.Contains("Atk")) { string health = ivs.Substring(ivs.IndexOf("Atk") - 3, 2).Trim(); pokemonIVs.Attack = Convert.ToByte(health); } if (ivs.Contains("Def")) { string health = ivs.Substring(ivs.IndexOf("Def") - 3, 2).Trim(); pokemonIVs.Defense = Convert.ToByte(health); } if (ivs.Contains("SpA")) { string health = ivs.Substring(ivs.IndexOf("SpA") - 3, 2).Trim(); pokemonIVs.SpecialAttack = Convert.ToByte(health); } if (ivs.Contains("SpD")) { string health = ivs.Substring(ivs.IndexOf("SpD") - 3, 2).Trim(); pokemonIVs.SpecialDefense = Convert.ToByte(health); } if (ivs.Contains("Spe")) { string health = ivs.Substring(ivs.IndexOf("Spe") - 3, 2).Trim(); pokemonIVs.Speed = Convert.ToByte(health); } pokemonTeamDetail.IVs = pokemonIVs; } // Moveset converter. if (remainingImportedText.Contains("- ")) { List <string> moves = remainingImportedText.Split("\r\n").ToList(); List <string> validMoves = new List <string>(); string move; PokemonTeamMoveset moveset = new PokemonTeamMoveset(); foreach (var m in moves) { if (!string.IsNullOrEmpty(m) && validMoves.Count < 4) { validMoves.Add(m); } } foreach (var m in validMoves) { move = m.Substring(2, m.Length - 2).Trim(); moveset.FourthMove = move; moveset = this.dataService.SortMoveset(moveset); } pokemonTeamDetail.Moveset = moveset; } return(pokemonTeamDetail); }