From 3f8875f324b8a1cb739d0c8437deaa66893d06d2 Mon Sep 17 00:00:00 2001 From: udnp Date: Thu, 31 May 2018 02:37:06 +0900 Subject: [PATCH 1/6] [A] added Alola form Exeggutor values. --- app/src/main/res/values/integers.xml | 12 ++++++++++++ app/src/main/res/values/pokemons.xml | 2 ++ 2 files changed, 14 insertions(+) diff --git a/app/src/main/res/values/integers.xml b/app/src/main/res/values/integers.xml index 813978074..45980fa16 100644 --- a/app/src/main/res/values/integers.xml +++ b/app/src/main/res/values/integers.xml @@ -393,6 +393,8 @@ 414 230 345 + + 230 @@ -787,6 +789,8 @@ 46 218 115 + + 158 @@ -1181,6 +1185,8 @@ 100 100 100 + + 190 @@ -1575,6 +1581,8 @@ -1 -1 -1 + + 101 @@ -1970,6 +1978,8 @@ -1 -1 -1 + + 50 387 388 + + -1 diff --git a/app/src/main/res/values/pokemons.xml b/app/src/main/res/values/pokemons.xml index 820ef7a4b..e05e3dbd6 100644 --- a/app/src/main/res/values/pokemons.xml +++ b/app/src/main/res/values/pokemons.xml @@ -393,6 +393,8 @@ Deoxys_Attack Deoxys_Speed Deoxys + + Exeggutor_Alola NORMAL From 81dece785301ff66472679cea3b946562f712b45 Mon Sep 17 00:00:00 2001 From: udnp Date: Fri, 1 Jun 2018 12:54:01 +0900 Subject: [PATCH 2/6] [A] added checking pokemon type for Alola Exeggutor, tentatively in PokemonNameCorrector. --- .../pogoiv/scanlogic/PokemonNameCorrector.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/app/src/main/java/com/kamron/pogoiv/scanlogic/PokemonNameCorrector.java b/app/src/main/java/com/kamron/pogoiv/scanlogic/PokemonNameCorrector.java index 8ceafae85..9766d2c21 100644 --- a/app/src/main/java/com/kamron/pogoiv/scanlogic/PokemonNameCorrector.java +++ b/app/src/main/java/com/kamron/pogoiv/scanlogic/PokemonNameCorrector.java @@ -125,6 +125,20 @@ public PokeDist getPossiblePokemon(@NonNull ScanData scanData) { if (guess.pokemon == null) { guess = getNicknameGuess(scanData.getPokemonName(), pokeInfoCalculator.getPokedex()); } + + // check Alola form + switch (guess.pokemon.number) { + case (102): // Exeggutor + if (scanData.getPokemonType().toLowerCase().contains( + pokeInfoCalculator.getTypeName(14).toLowerCase())) { + guess = new PokeDist(pokeInfoCalculator.get(pokeInfoCalculator.get(389).name), 0); + } + break; + + default: + // do nothing + } + return guess; } From c819155b50603231bed13d2c467ee160b92079e7 Mon Sep 17 00:00:00 2001 From: udnp Date: Fri, 1 Jun 2018 16:09:08 +0900 Subject: [PATCH 3/6] [C] changed to use forms.xml values for forms pokemons instead of pokemons.xml, because of additionality of forms values. --- .../pogoiv/scanlogic/PokeInfoCalculator.java | 54 ++- .../com/kamron/pogoiv/scanlogic/Pokemon.java | 3 + .../scanlogic/PokemonNameCorrector.java | 3 +- app/src/main/res/values-de/pokemons.xml | 3 - app/src/main/res/values-fr/pokemons.xml | 3 - app/src/main/res/values/forms.xml | 47 ++ app/src/main/res/values/integers.xml | 423 ++++++++++++++++-- app/src/main/res/values/pokemons.xml | 5 - 8 files changed, 493 insertions(+), 48 deletions(-) create mode 100644 app/src/main/res/values/forms.xml diff --git a/app/src/main/java/com/kamron/pogoiv/scanlogic/PokeInfoCalculator.java b/app/src/main/java/com/kamron/pogoiv/scanlogic/PokeInfoCalculator.java index cc6cd614f..5cbc5d4a5 100644 --- a/app/src/main/java/com/kamron/pogoiv/scanlogic/PokeInfoCalculator.java +++ b/app/src/main/java/com/kamron/pogoiv/scanlogic/PokeInfoCalculator.java @@ -145,6 +145,7 @@ private void populatePokemon(@NonNull GoIVSettings settings, @NonNull Resources final int[] devolution = res.getIntArray(R.array.devolutionNumber); final int[] evolutionCandyCost = res.getIntArray(R.array.evolutionCandyCost); final int[] candyNamesArray = res.getIntArray(R.array.candyNames); + final int[] formsCountIndex = res.getIntArray(R.array.formsCountIndex); int pokeListSize = names.length; for (int i = 0; i < pokeListSize; i++) { @@ -165,6 +166,30 @@ private void populatePokemon(@NonNull GoIVSettings settings, @NonNull Resources candyPokemons.add(pokedex.get(candyNamesArray[i])); basePokemons.add(pokedex.get(i)); } + + if (formsCountIndex[i] != -1) { + int[] formsCount = res.getIntArray(R.array.formsCount); + int formsStartIndex = 0; + + for (int j = 0; j < formsCountIndex[i]; j++) { + formsStartIndex += formsCount[j]; + } + + for (int j = 0; j < formsCount[formsCountIndex[i]]; j++) { + pokedex.get(i).forms.add(new Pokemon( + String.format("%s,%s", + pokedex.get(i).name, res.getStringArray(R.array.formNames)[formsStartIndex + j]), + String.format("%s,%s", + pokedex.get(i).toString(), res.getStringArray(R.array.formNames)[formsStartIndex + j]), + i, + res.getIntArray(R.array.formAttack)[formsStartIndex + j], + res.getIntArray(R.array.formDefense)[formsStartIndex + j], + res.getIntArray(R.array.formStamina)[formsStartIndex + j], + devolution[i], + evolutionCandyCost[i]) + ); + } + } } } @@ -377,6 +402,25 @@ private Pokemon getLowestEvolution(Pokemon poke) { return devoPoke; } + /** + * Get all the pokemon forms for a pokemon. + * + * @param poke a pokemon, example Exeggutor + * @return all the pokemon forms, in the example would return Exeggutor normal and Exeggutor Alola + */ + private ArrayList getForms(Pokemon poke) { + ArrayList list = new ArrayList<>(); + Pokemon normalFormPokemon = pokedex.get(poke.number); + list.add(normalFormPokemon); + + if (normalFormPokemon.forms.isEmpty()) { + return list; // normal form only + } + + list.addAll(normalFormPokemon.forms); + return list; + } + /** * Returns the evolution line of a pokemon. * @@ -387,10 +431,12 @@ public ArrayList getEvolutionLine(Pokemon poke) { poke = getLowestEvolution(poke); ArrayList list = new ArrayList<>(); - list.add(poke); //add self - list.addAll(poke.evolutions); //add all immediate evolutions - for (Pokemon evolution : poke.evolutions) { - list.addAll(evolution.evolutions); + list.addAll(getForms(poke)); + for (Pokemon evolution2nd : poke.evolutions) { + list.addAll(getForms(evolution2nd)); + for (Pokemon evolution3rd : evolution2nd.evolutions) { + list.addAll(getForms(evolution3rd)); + } } return list; diff --git a/app/src/main/java/com/kamron/pogoiv/scanlogic/Pokemon.java b/app/src/main/java/com/kamron/pogoiv/scanlogic/Pokemon.java index 99e5e0a2b..25b36eda1 100644 --- a/app/src/main/java/com/kamron/pogoiv/scanlogic/Pokemon.java +++ b/app/src/main/java/com/kamron/pogoiv/scanlogic/Pokemon.java @@ -44,6 +44,8 @@ public String getLetter() { */ public final List evolutions; + public final List forms; + /** * Pokemon name for OCR, this is what you saw in PokemonGo app. */ @@ -71,6 +73,7 @@ public Pokemon(String name, String displayName, int number, int baseAttack, int this.baseStamina = baseStamina; this.devoNumber = devoNumber; this.evolutions = new ArrayList<>(); + this.forms = new ArrayList<>(); this.candyEvolutionCost = candyEvolutionCost; } diff --git a/app/src/main/java/com/kamron/pogoiv/scanlogic/PokemonNameCorrector.java b/app/src/main/java/com/kamron/pogoiv/scanlogic/PokemonNameCorrector.java index 9766d2c21..692c6e2c8 100644 --- a/app/src/main/java/com/kamron/pogoiv/scanlogic/PokemonNameCorrector.java +++ b/app/src/main/java/com/kamron/pogoiv/scanlogic/PokemonNameCorrector.java @@ -129,9 +129,10 @@ public PokeDist getPossiblePokemon(@NonNull ScanData scanData) { // check Alola form switch (guess.pokemon.number) { case (102): // Exeggutor + // check types including dragon if (scanData.getPokemonType().toLowerCase().contains( pokeInfoCalculator.getTypeName(14).toLowerCase())) { - guess = new PokeDist(pokeInfoCalculator.get(pokeInfoCalculator.get(389).name), 0); + guess = new PokeDist(pokeInfoCalculator.get(102).forms.get(0), 0); } break; diff --git a/app/src/main/res/values-de/pokemons.xml b/app/src/main/res/values-de/pokemons.xml index 70762f9d8..3508b9910 100644 --- a/app/src/main/res/values-de/pokemons.xml +++ b/app/src/main/res/values-de/pokemons.xml @@ -388,9 +388,6 @@ Groudon Rayquaza Jirachi - Deoxys_Defense - Deoxys_Attack - Deoxys_Speed Deoxys \ No newline at end of file diff --git a/app/src/main/res/values-fr/pokemons.xml b/app/src/main/res/values-fr/pokemons.xml index a224f9e9a..f7df0cc59 100644 --- a/app/src/main/res/values-fr/pokemons.xml +++ b/app/src/main/res/values-fr/pokemons.xml @@ -388,9 +388,6 @@ Groudon Rayquaza Jirachi - Deoxys_Defense - Deoxys_Attack - Deoxys_Speed Deoxys \ No newline at end of file diff --git a/app/src/main/res/values/forms.xml b/app/src/main/res/values/forms.xml new file mode 100644 index 000000000..0fefef612 --- /dev/null +++ b/app/src/main/res/values/forms.xml @@ -0,0 +1,47 @@ + + + + 4 + 1 + + + + + Normal Forme + Attack Forme + Defense Forme + Speed Forme + + Alola Form + + + + + 345 + 414 + 144 + 230 + + 230 + + + + + 115 + 46 + 330 + 218 + + 158 + + + + + 100 + 100 + 100 + 100 + + 190 + + \ No newline at end of file diff --git a/app/src/main/res/values/integers.xml b/app/src/main/res/values/integers.xml index 45980fa16..2afb5bfea 100644 --- a/app/src/main/res/values/integers.xml +++ b/app/src/main/res/values/integers.xml @@ -389,12 +389,7 @@ 270 284 210 - 144 - 414 - 230 345 - - 230 @@ -785,12 +780,7 @@ 251 170 210 - 330 - 46 - 218 115 - - 158 @@ -1181,12 +1171,7 @@ 182 191 200 - 100 - 100 - 100 100 - - 190 @@ -1577,13 +1562,7 @@ -1 -1 -1 - -1 - -1 - -1 -1 - - 101 - @@ -1974,12 +1953,7 @@ -1 -1 -1 - -1 - -1 - -1 -1 - - 50 383 384 - 385 - 386 - 387 - 388 - - -1 + 385 + + + + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + 1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + 0 diff --git a/app/src/main/res/values/pokemons.xml b/app/src/main/res/values/pokemons.xml index e05e3dbd6..38b94d2dc 100644 --- a/app/src/main/res/values/pokemons.xml +++ b/app/src/main/res/values/pokemons.xml @@ -389,12 +389,7 @@ Groudon Rayquaza Jirachi - Deoxys_Defense - Deoxys_Attack - Deoxys_Speed Deoxys - - Exeggutor_Alola NORMAL From 3f01f29c7a638f25ba8a52941166b8778f221256 Mon Sep 17 00:00:00 2001 From: udnp Date: Fri, 1 Jun 2018 16:10:05 +0900 Subject: [PATCH 4/6] [D] removed Deoxys Normal Forme values in forms.xml because pokemons.xml includes the same values. --- app/src/main/res/values/forms.xml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/app/src/main/res/values/forms.xml b/app/src/main/res/values/forms.xml index 0fefef612..a882445b9 100644 --- a/app/src/main/res/values/forms.xml +++ b/app/src/main/res/values/forms.xml @@ -1,13 +1,12 @@ - 4 + 3 1 - Normal Forme Attack Forme Defense Forme Speed Forme @@ -17,7 +16,6 @@ - 345 414 144 230 @@ -27,7 +25,6 @@ - 115 46 330 218 @@ -37,7 +34,6 @@ - 100 100 100 100 From b3cda57c5d05e6f9b2c72baaa0d527c0a3c9fd4a Mon Sep 17 00:00:00 2001 From: udnp Date: Fri, 1 Jun 2018 16:27:03 +0900 Subject: [PATCH 5/6] [C] improved view text format for pokemon name with form. --- .../kamron/pogoiv/pokeflycomponents/IVPopupButton.java | 8 ++++++-- .../com/kamron/pogoiv/scanlogic/PokeInfoCalculator.java | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/kamron/pogoiv/pokeflycomponents/IVPopupButton.java b/app/src/main/java/com/kamron/pogoiv/pokeflycomponents/IVPopupButton.java index ce528453c..79e0c381b 100644 --- a/app/src/main/java/com/kamron/pogoiv/pokeflycomponents/IVPopupButton.java +++ b/app/src/main/java/com/kamron/pogoiv/pokeflycomponents/IVPopupButton.java @@ -117,12 +117,16 @@ public void showQuickIVPreviewLook(@NonNull ScanResult scanResult) { int high = highest.percentPerfect; final StringBuilder text = new StringBuilder(); + String pokemonName = scanResult.pokemon.name; + if (pokemonName.contains(" - ")) { // check including form name + pokemonName = pokemonName.replace(" - ", "\n"); + } if (scanResult.getIVCombinationsCount() == 1 || high == low) { // Display something like "IV: 98%" text.append(getContext().getString( - R.string.iv_button_exact_result_preview_format, scanResult.pokemon.name, low)); + R.string.iv_button_exact_result_preview_format, pokemonName, low)); } else { // Display something like "IV: 55 - 87%" text.append(getContext().getString( - R.string.iv_button_range_result_preview_format, scanResult.pokemon.name, low, high)); + R.string.iv_button_range_result_preview_format, pokemonName, low, high)); } if (scanResult.levelRange.min != scanResult.levelRange.max) { text.append("*"); diff --git a/app/src/main/java/com/kamron/pogoiv/scanlogic/PokeInfoCalculator.java b/app/src/main/java/com/kamron/pogoiv/scanlogic/PokeInfoCalculator.java index 5cbc5d4a5..fcd098462 100644 --- a/app/src/main/java/com/kamron/pogoiv/scanlogic/PokeInfoCalculator.java +++ b/app/src/main/java/com/kamron/pogoiv/scanlogic/PokeInfoCalculator.java @@ -177,9 +177,9 @@ private void populatePokemon(@NonNull GoIVSettings settings, @NonNull Resources for (int j = 0; j < formsCount[formsCountIndex[i]]; j++) { pokedex.get(i).forms.add(new Pokemon( - String.format("%s,%s", + String.format("%s - %s", pokedex.get(i).name, res.getStringArray(R.array.formNames)[formsStartIndex + j]), - String.format("%s,%s", + String.format("%s - %s", pokedex.get(i).toString(), res.getStringArray(R.array.formNames)[formsStartIndex + j]), i, res.getIntArray(R.array.formAttack)[formsStartIndex + j], From 7d4387c9f3b5c44b7c255d90957c357da067d7b8 Mon Sep 17 00:00:00 2001 From: udnp Date: Fri, 1 Jun 2018 16:37:12 +0900 Subject: [PATCH 6/6] [A] added description comment. --- app/src/main/java/com/kamron/pogoiv/scanlogic/Pokemon.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/java/com/kamron/pogoiv/scanlogic/Pokemon.java b/app/src/main/java/com/kamron/pogoiv/scanlogic/Pokemon.java index 25b36eda1..6f4d3aba7 100644 --- a/app/src/main/java/com/kamron/pogoiv/scanlogic/Pokemon.java +++ b/app/src/main/java/com/kamron/pogoiv/scanlogic/Pokemon.java @@ -44,6 +44,11 @@ public String getLetter() { */ public final List evolutions; + /** + * Forms of this Pokemon. + * This list dose not include the normal form. + * The normal form pokemon is this pokemon itself. + */ public final List forms; /**