From 2e7a1844ab9e31252319144672cec86a7324a1b9 Mon Sep 17 00:00:00 2001 From: udnp Date: Sat, 19 Aug 2017 15:24:42 +0900 Subject: [PATCH 01/10] [A] added PokeinfoCalculator singleton provides getter to return pokemon type names list for each pokemon type base20 numeral values. --- .../pogoiv/scanlogic/PokeInfoCalculator.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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 517b31f29..416fda481 100644 --- a/app/src/main/java/com/kamron/pogoiv/scanlogic/PokeInfoCalculator.java +++ b/app/src/main/java/com/kamron/pogoiv/scanlogic/PokeInfoCalculator.java @@ -442,4 +442,19 @@ public int getHPAtLevel(IVScanResult ivScanResult, double selectedLevel, Pokemon public String getTypeName(int typeNameNum) { return typeNamesArray[typeNameNum]; } + + public String[] getTypeNames(String typeBase20) { + String[] typeNames = new String[2]; + int dec = Integer.parseInt(typeBase20, 20); + + if( dec < 19) { + typeNames[0] = typeNamesArray[dec - 1]; + typeNames[1] = null; + } else { + typeNames[0] = typeNamesArray[Integer.parseInt(typeBase20.substring(0, 1), 20) - 1]; + typeNames[1] = typeNamesArray[Integer.parseInt(typeBase20.substring(1, 2), 20) - 1]; + } + + return typeNames; + } } From ed5dd92231b1aa4e3dc146a277fd2a4c7d72950c Mon Sep 17 00:00:00 2001 From: udnp Date: Fri, 18 Aug 2017 17:17:33 +0900 Subject: [PATCH 02/10] [C] changed guessing Eevee's evolution to use pokemon types base20 value with pokeInfoCalculator#getTypeNames(), intead of pokemon types array number. --- .../pogoiv/scanlogic/PokemonNameCorrector.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) 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 91cb96020..6b4b02d6d 100644 --- a/app/src/main/java/com/kamron/pogoiv/scanlogic/PokemonNameCorrector.java +++ b/app/src/main/java/com/kamron/pogoiv/scanlogic/PokemonNameCorrector.java @@ -66,22 +66,22 @@ public PokeDist getPossiblePokemon(String poketext, String candytext, Optional eeveelutionCorrection = new HashMap<>(); - eeveelutionCorrection.put(pokeInfoCalculator.getTypeName(2), //WATER + eeveelutionCorrection.put(pokeInfoCalculator.getTypeNames("03")[0], //WATER pokeInfoCalculator.get(133).name); //Vaporeon - eeveelutionCorrection.put(pokeInfoCalculator.getTypeName(3), //ELECTRIC + eeveelutionCorrection.put(pokeInfoCalculator.getTypeNames("04")[0], //ELECTRIC pokeInfoCalculator.get(134).name); //Jolteon - eeveelutionCorrection.put(pokeInfoCalculator.getTypeName(1), //FIRE + eeveelutionCorrection.put(pokeInfoCalculator.getTypeNames("02")[0], //FIRE pokeInfoCalculator.get(135).name); //Flareon - eeveelutionCorrection.put(pokeInfoCalculator.getTypeName(10), //PSYCHIC + eeveelutionCorrection.put(pokeInfoCalculator.getTypeNames("0B")[0], //PSYCHIC pokeInfoCalculator.get(195).name); //Espeon - eeveelutionCorrection.put(pokeInfoCalculator.getTypeName(15), //DARK + eeveelutionCorrection.put(pokeInfoCalculator.getTypeNames("0G")[0], //DARK pokeInfoCalculator.get(196).name); //Umbreon // Preparing for the future.... - // eeveelutionCorrection.put(pokeInfoCalculator.getTypeName(4), //GRASS + // eeveelutionCorrection.put(pokeInfoCalculator.getTypeNames("05")[0], //GRASS // pokeInfoCalculator.get(469).name); //Leafeon - // eeveelutionCorrection.put(pokeInfoCalculator.getTypeName(5), //ICE + // eeveelutionCorrection.put(pokeInfoCalculator.getTypeNames("06")[0], //ICE // pokeInfoCalculator.get(470).name); //Glaceon - // eeveelutionCorrection.put(pokeInfoCalculator.getTypeName(17), //FAIRY + // eeveelutionCorrection.put(pokeInfoCalculator.getTypeNames("0I")[0], //FAIRY // pokeInfoCalculator.get(699).name); //Sylveon if (eeveelutionCorrection.containsKey(pokemonType)) { poketext = eeveelutionCorrection.get(pokemonType); From 29fc82a2f80b0f5deb24a3ca4b45e8813150f640 Mon Sep 17 00:00:00 2001 From: udnp Date: Sat, 19 Aug 2017 13:38:07 +0900 Subject: [PATCH 03/10] [C] changed Pokemon class has a pokemon types base20 value, and PokemonNameCorrector use this instead of its hard coded value. --- .../pogoiv/scanlogic/PokeInfoCalculator.java | 34 +++++++++++++++++-- .../com/kamron/pogoiv/scanlogic/Pokemon.java | 4 ++- .../scanlogic/PokemonNameCorrector.java | 24 ++++++++----- 3 files changed, 51 insertions(+), 11 deletions(-) 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 416fda481..f59333855 100644 --- a/app/src/main/java/com/kamron/pogoiv/scanlogic/PokeInfoCalculator.java +++ b/app/src/main/java/com/kamron/pogoiv/scanlogic/PokeInfoCalculator.java @@ -149,8 +149,38 @@ private void populatePokemon(@NonNull GoIVSettings settings, @NonNull Resources int pokeListSize = names.length; for (int i = 0; i < pokeListSize; i++) { - Pokemon p = new Pokemon(names[i], displayNames[i], i, attack[i], defense[i], stamina[i], devolution[i], - evolutionCandyCost[i]); + Pokemon p; + switch (i) { + case 133: + p = new Pokemon(names[i], displayNames[i], i, attack[i], defense[i], stamina[i], + devolution[i], evolutionCandyCost[i], "03" /* pokemon type WATER */); + break; + + case 134: + p = new Pokemon(names[i], displayNames[i], i, attack[i], defense[i], stamina[i], + devolution[i], evolutionCandyCost[i], "04" /* pokemon type ELECTRIC */); + break; + + case 135: + p = new Pokemon(names[i], displayNames[i], i, attack[i], defense[i], stamina[i], + devolution[i], evolutionCandyCost[i], "02" /* pokemon type FIRE */); + break; + + case 195: + p = new Pokemon(names[i], displayNames[i], i, attack[i], defense[i], stamina[i], + devolution[i], evolutionCandyCost[i], "0B" /* pokemon type PSYCHIC */); + break; + + case 196: + p = new Pokemon(names[i], displayNames[i], i, attack[i], defense[i], stamina[i], + devolution[i], evolutionCandyCost[i], "0G" /* pokemon type DARK */); + break; + + default: + p = new Pokemon(names[i], displayNames[i], i, attack[i], defense[i], stamina[i], + devolution[i], evolutionCandyCost[i], "00" /* pokemon type NULL */); + break; + } pokedex.add(p); pokemap.put(names[i].toLowerCase(), p); if (!names[i].equals(displayNames[i])) { 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 4acd32ced..cab8a3211 100644 --- a/app/src/main/java/com/kamron/pogoiv/scanlogic/Pokemon.java +++ b/app/src/main/java/com/kamron/pogoiv/scanlogic/Pokemon.java @@ -56,9 +56,10 @@ public String getCharacter() { public final int baseStamina; public final int devoNumber; public final int candyEvolutionCost; + public final String types; public Pokemon(String name, String displayName, int number, int baseAttack, int baseDefense, int baseStamina, - int devoNumber, int candyEvolutionCost) { + int devoNumber, int candyEvolutionCost, String typesBase20) { this.name = name; this.displayName = displayName; this.number = number; @@ -68,6 +69,7 @@ public Pokemon(String name, String displayName, int number, int baseAttack, int this.devoNumber = devoNumber; this.evolutions = new ArrayList<>(); this.candyEvolutionCost = candyEvolutionCost; + this.types = typesBase20; } @Override 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 6b4b02d6d..812d4f55f 100644 --- a/app/src/main/java/com/kamron/pogoiv/scanlogic/PokemonNameCorrector.java +++ b/app/src/main/java/com/kamron/pogoiv/scanlogic/PokemonNameCorrector.java @@ -66,22 +66,30 @@ public PokeDist getPossiblePokemon(String poketext, String candytext, Optional eeveelutionCorrection = new HashMap<>(); - eeveelutionCorrection.put(pokeInfoCalculator.getTypeNames("03")[0], //WATER + Pokemon vaporeon = pokeInfoCalculator.get(133); + Pokemon jolteon = pokeInfoCalculator.get(134); + Pokemon flareon = pokeInfoCalculator.get(135); + Pokemon espeon = pokeInfoCalculator.get(195); + Pokemon umbreon = pokeInfoCalculator.get(196); + eeveelutionCorrection.put(pokeInfoCalculator.getTypeNames(vaporeon.types)[0], //WATER pokeInfoCalculator.get(133).name); //Vaporeon - eeveelutionCorrection.put(pokeInfoCalculator.getTypeNames("04")[0], //ELECTRIC + eeveelutionCorrection.put(pokeInfoCalculator.getTypeNames(jolteon.types)[0], //ELECTRIC pokeInfoCalculator.get(134).name); //Jolteon - eeveelutionCorrection.put(pokeInfoCalculator.getTypeNames("02")[0], //FIRE + eeveelutionCorrection.put(pokeInfoCalculator.getTypeNames(flareon.types)[0], //FIRE pokeInfoCalculator.get(135).name); //Flareon - eeveelutionCorrection.put(pokeInfoCalculator.getTypeNames("0B")[0], //PSYCHIC + eeveelutionCorrection.put(pokeInfoCalculator.getTypeNames(espeon.types)[0], //PSYCHIC pokeInfoCalculator.get(195).name); //Espeon - eeveelutionCorrection.put(pokeInfoCalculator.getTypeNames("0G")[0], //DARK + eeveelutionCorrection.put(pokeInfoCalculator.getTypeNames(umbreon.types)[0], //DARK pokeInfoCalculator.get(196).name); //Umbreon // Preparing for the future.... - // eeveelutionCorrection.put(pokeInfoCalculator.getTypeNames("05")[0], //GRASS + // Pokemon leafeon = pokeInfoCalculator.get(469); + // Pokemon glaceon = pokeInfoCalculator.get(470); + // Pokemon sylveon = pokeInfoCalculator.get(699); + // eeveelutionCorrection.put(pokeInfoCalculator.getTypeNames(leafeon.types)[0], //GRASS // pokeInfoCalculator.get(469).name); //Leafeon - // eeveelutionCorrection.put(pokeInfoCalculator.getTypeNames("06")[0], //ICE + // eeveelutionCorrection.put(pokeInfoCalculator.getTypeNames(glaceon.types)[0], //ICE // pokeInfoCalculator.get(470).name); //Glaceon - // eeveelutionCorrection.put(pokeInfoCalculator.getTypeNames("0I")[0], //FAIRY + // eeveelutionCorrection.put(pokeInfoCalculator.getTypeNames(sylveon.types)[0], //FAIRY // pokeInfoCalculator.get(699).name); //Sylveon if (eeveelutionCorrection.containsKey(pokemonType)) { poketext = eeveelutionCorrection.get(pokemonType); From 7344cbb145c63a557553645ccb9e661b8968f77a Mon Sep 17 00:00:00 2001 From: udnp Date: Sun, 18 Feb 2018 00:40:06 +0900 Subject: [PATCH 04/10] [A] added pokemon type base20 numeral values for all pokemons in resource file. --- app/src/main/res/values-es/pokemons.xml | 38 ++- app/src/main/res/values-it/pokemons.xml | 38 ++- app/src/main/res/values/pokemons.xml | 434 +++++++++++++++++++++++- 3 files changed, 456 insertions(+), 54 deletions(-) diff --git a/app/src/main/res/values-es/pokemons.xml b/app/src/main/res/values-es/pokemons.xml index 7e2739c59..ab24b52e2 100644 --- a/app/src/main/res/values-es/pokemons.xml +++ b/app/src/main/res/values-es/pokemons.xml @@ -1,23 +1,25 @@ - NORMAL - FUEGO - AGUA - ELÉCTRICO - PLANTA - HIELO - LUCHA - VENENO - TIERRA - VOLADOR - PSÍQUICO - BICHO - ROCA - FANTASMA - DRAGÓN - SINIESTRO - ACERO - HADA + + NORMAL + FUEGO + AGUA + ELÉCTRICO + PLANTA + HIELO + LUCHA + VENENO + TIERRA + VOLADOR + PSÍQUICO + BICHO + ROCA + FANTASMA + DRAGÓN + SINIESTRO + ACERO + HADA + \ No newline at end of file diff --git a/app/src/main/res/values-it/pokemons.xml b/app/src/main/res/values-it/pokemons.xml index c626562a4..f268cc13c 100644 --- a/app/src/main/res/values-it/pokemons.xml +++ b/app/src/main/res/values-it/pokemons.xml @@ -1,23 +1,25 @@ - NORMALE - FUOCO - ACQUA - ELETTRO - ERBA - GHIACCIO - LOTTA - VELENO - TERRA - VOLANTE - PSICO - COLEOTTERO - ROCCIA - SPETTRO - DRAGO - BUIO - ACCIAIO - FOLLETTO + + NORMALE + FUOCO + ACQUA + ELETTRO + ERBA + GHIACCIO + LOTTA + VELENO + TERRA + VOLANTE + PSICO + COLEOTTERO + ROCCIA + SPETTRO + DRAGO + BUIO + ACCIAIO + FOLLETTO + \ No newline at end of file diff --git a/app/src/main/res/values/pokemons.xml b/app/src/main/res/values/pokemons.xml index 820ef7a4b..295cc120f 100644 --- a/app/src/main/res/values/pokemons.xml +++ b/app/src/main/res/values/pokemons.xml @@ -395,23 +395,421 @@ Deoxys - NORMAL - FIRE - WATER - ELECTRIC - GRASS - ICE - FIGHTING - POISON - GROUND - FLYING - PSYCHIC - BUG - ROCK - GHOST - DRAGON - DARK - STEEL - FAIRY + + NORMAL + FIRE + WATER + ELECTRIC + GRASS + ICE + FIGHTING + POISON + GROUND + FLYING + PSYCHIC + BUG + ROCK + GHOST + DRAGON + DARK + STEEL + FAIRY + + + + + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 03 + 04 + 02 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 0B + 0G + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 From 10a04812d4d7aa5d12497a690be0b7b4cfb21381 Mon Sep 17 00:00:00 2001 From: udnp Date: Sat, 26 Aug 2017 17:41:54 +0900 Subject: [PATCH 05/10] [C] changed to use pokemon type resources, instead of hard coded values. --- .../pogoiv/scanlogic/PokeInfoCalculator.java | 35 ++----------------- .../com/kamron/pogoiv/scanlogic/Pokemon.java | 4 +-- 2 files changed, 5 insertions(+), 34 deletions(-) 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 f59333855..bd6e420ad 100644 --- a/app/src/main/java/com/kamron/pogoiv/scanlogic/PokeInfoCalculator.java +++ b/app/src/main/java/com/kamron/pogoiv/scanlogic/PokeInfoCalculator.java @@ -146,41 +146,12 @@ 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 String[] types = res.getStringArray(R.array.type); int pokeListSize = names.length; for (int i = 0; i < pokeListSize; i++) { - Pokemon p; - switch (i) { - case 133: - p = new Pokemon(names[i], displayNames[i], i, attack[i], defense[i], stamina[i], - devolution[i], evolutionCandyCost[i], "03" /* pokemon type WATER */); - break; - - case 134: - p = new Pokemon(names[i], displayNames[i], i, attack[i], defense[i], stamina[i], - devolution[i], evolutionCandyCost[i], "04" /* pokemon type ELECTRIC */); - break; - - case 135: - p = new Pokemon(names[i], displayNames[i], i, attack[i], defense[i], stamina[i], - devolution[i], evolutionCandyCost[i], "02" /* pokemon type FIRE */); - break; - - case 195: - p = new Pokemon(names[i], displayNames[i], i, attack[i], defense[i], stamina[i], - devolution[i], evolutionCandyCost[i], "0B" /* pokemon type PSYCHIC */); - break; - - case 196: - p = new Pokemon(names[i], displayNames[i], i, attack[i], defense[i], stamina[i], - devolution[i], evolutionCandyCost[i], "0G" /* pokemon type DARK */); - break; - - default: - p = new Pokemon(names[i], displayNames[i], i, attack[i], defense[i], stamina[i], - devolution[i], evolutionCandyCost[i], "00" /* pokemon type NULL */); - break; - } + Pokemon p = new Pokemon(names[i], displayNames[i], i, attack[i], defense[i], stamina[i], + devolution[i], evolutionCandyCost[i], types[i]); pokedex.add(p); pokemap.put(names[i].toLowerCase(), p); if (!names[i].equals(displayNames[i])) { 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 cab8a3211..137bf6bcd 100644 --- a/app/src/main/java/com/kamron/pogoiv/scanlogic/Pokemon.java +++ b/app/src/main/java/com/kamron/pogoiv/scanlogic/Pokemon.java @@ -59,7 +59,7 @@ public String getCharacter() { public final String types; public Pokemon(String name, String displayName, int number, int baseAttack, int baseDefense, int baseStamina, - int devoNumber, int candyEvolutionCost, String typesBase20) { + int devoNumber, int candyEvolutionCost, String types) { this.name = name; this.displayName = displayName; this.number = number; @@ -69,7 +69,7 @@ public Pokemon(String name, String displayName, int number, int baseAttack, int this.devoNumber = devoNumber; this.evolutions = new ArrayList<>(); this.candyEvolutionCost = candyEvolutionCost; - this.types = typesBase20; + this.types = types; } @Override From 3d45bfb3252a07b75d0c1f0cc158a455db9aed00 Mon Sep 17 00:00:00 2001 From: udnp Date: Sat, 19 Aug 2017 20:24:27 +0900 Subject: [PATCH 06/10] [C] pokemon type base20 numeral value swappd its 2nd digit and 1st digit. --- .../pogoiv/scanlogic/PokeInfoCalculator.java | 20 +++++++++++++------ app/src/main/res/values/pokemons.xml | 10 +++++----- 2 files changed, 19 insertions(+), 11 deletions(-) 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 bd6e420ad..e6ad421b2 100644 --- a/app/src/main/java/com/kamron/pogoiv/scanlogic/PokeInfoCalculator.java +++ b/app/src/main/java/com/kamron/pogoiv/scanlogic/PokeInfoCalculator.java @@ -446,14 +446,22 @@ public String getTypeName(int typeNameNum) { public String[] getTypeNames(String typeBase20) { String[] typeNames = new String[2]; - int dec = Integer.parseInt(typeBase20, 20); + int typeNum; - if( dec < 19) { - typeNames[0] = typeNamesArray[dec - 1]; - typeNames[1] = null; + typeNum = Integer.parseInt(typeBase20.substring(0, 1), 20); + + if (0 < typeNum && typeNum < typeNamesArray.length) { + typeNames[0] = typeNamesArray[typeNum - 1]; } else { - typeNames[0] = typeNamesArray[Integer.parseInt(typeBase20.substring(0, 1), 20) - 1]; - typeNames[1] = typeNamesArray[Integer.parseInt(typeBase20.substring(1, 2), 20) - 1]; + typeNames[0] = null; + } + + typeNum = Integer.parseInt(typeBase20.substring(1, 2), 20); + + if (0 < typeNum && typeNum < typeNamesArray.length) { + typeNames[1] = typeNamesArray[typeNum - 1]; + } else { + typeNames[1] = null; } return typeNames; diff --git a/app/src/main/res/values/pokemons.xml b/app/src/main/res/values/pokemons.xml index 295cc120f..5e886b5c7 100644 --- a/app/src/main/res/values/pokemons.xml +++ b/app/src/main/res/values/pokemons.xml @@ -553,9 +553,9 @@ 00 00 00 - 03 - 04 - 02 + 30 + 40 + 20 00 00 00 @@ -616,8 +616,8 @@ 00 00 00 - 0B - 0G + B0 + G0 00 00 00 From 26ad93d5d678810ceb8e06ca50492af048926c06 Mon Sep 17 00:00:00 2001 From: udnp Date: Fri, 16 Feb 2018 03:44:09 +0900 Subject: [PATCH 07/10] [C] exported pokemon type values from pokemons.xml to types.xml --- .../res/values-es/{pokemons.xml => types.xml} | 0 .../res/values-it/{pokemons.xml => types.xml} | 0 app/src/main/res/values/pokemons.xml | 418 ----------------- app/src/main/res/values/types.xml | 421 ++++++++++++++++++ 4 files changed, 421 insertions(+), 418 deletions(-) rename app/src/main/res/values-es/{pokemons.xml => types.xml} (100%) rename app/src/main/res/values-it/{pokemons.xml => types.xml} (100%) create mode 100644 app/src/main/res/values/types.xml diff --git a/app/src/main/res/values-es/pokemons.xml b/app/src/main/res/values-es/types.xml similarity index 100% rename from app/src/main/res/values-es/pokemons.xml rename to app/src/main/res/values-es/types.xml diff --git a/app/src/main/res/values-it/pokemons.xml b/app/src/main/res/values-it/types.xml similarity index 100% rename from app/src/main/res/values-it/pokemons.xml rename to app/src/main/res/values-it/types.xml diff --git a/app/src/main/res/values/pokemons.xml b/app/src/main/res/values/pokemons.xml index 5e886b5c7..c3860c2c7 100644 --- a/app/src/main/res/values/pokemons.xml +++ b/app/src/main/res/values/pokemons.xml @@ -394,422 +394,4 @@ Deoxys_Speed Deoxys - - - NORMAL - FIRE - WATER - ELECTRIC - GRASS - ICE - FIGHTING - POISON - GROUND - FLYING - PSYCHIC - BUG - ROCK - GHOST - DRAGON - DARK - STEEL - FAIRY - - - - - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 30 - 40 - 20 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - B0 - G0 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - diff --git a/app/src/main/res/values/types.xml b/app/src/main/res/values/types.xml new file mode 100644 index 000000000..8b72f0892 --- /dev/null +++ b/app/src/main/res/values/types.xml @@ -0,0 +1,421 @@ + + + + + NORMAL + FIRE + WATER + ELECTRIC + GRASS + ICE + FIGHTING + POISON + GROUND + FLYING + PSYCHIC + BUG + ROCK + GHOST + DRAGON + DARK + STEEL + FAIRY + + + + + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 30 + 40 + 20 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + B0 + G0 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + + \ No newline at end of file From eb61b8d604b1f947a678cc4fdb2594302fddd285 Mon Sep 17 00:00:00 2001 From: udnp Date: Fri, 16 Feb 2018 04:08:24 +0900 Subject: [PATCH 08/10] [C] changed pokemon type index according to Pokemon Official pokedex. --- app/src/main/res/values-es/types.xml | 4 ++-- app/src/main/res/values-it/types.xml | 4 ++-- app/src/main/res/values/types.xml | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/src/main/res/values-es/types.xml b/app/src/main/res/values-es/types.xml index ab24b52e2..3465a2d33 100644 --- a/app/src/main/res/values-es/types.xml +++ b/app/src/main/res/values-es/types.xml @@ -5,8 +5,8 @@ NORMAL FUEGO AGUA - ELÉCTRICO - PLANTA + PLANTA + ELÉCTRICO HIELO LUCHA VENENO diff --git a/app/src/main/res/values-it/types.xml b/app/src/main/res/values-it/types.xml index f268cc13c..88b48f3ae 100644 --- a/app/src/main/res/values-it/types.xml +++ b/app/src/main/res/values-it/types.xml @@ -5,8 +5,8 @@ NORMALE FUOCO ACQUA - ELETTRO - ERBA + ERBA + ELETTRO GHIACCIO LOTTA VELENO diff --git a/app/src/main/res/values/types.xml b/app/src/main/res/values/types.xml index 8b72f0892..7becaed99 100644 --- a/app/src/main/res/values/types.xml +++ b/app/src/main/res/values/types.xml @@ -5,8 +5,8 @@ NORMAL FIRE WATER - ELECTRIC - GRASS + GRASS + ELECTRIC ICE FIGHTING POISON @@ -160,7 +160,7 @@ 00 00 30 - 40 + 50 20 00 00 From 0d6c226ca94abad6c3efa7889ed3ee96020eff32 Mon Sep 17 00:00:00 2001 From: udnp Date: Sun, 18 Feb 2018 00:54:09 +0900 Subject: [PATCH 09/10] [C] changed Pokemon class types field indicates localized pokemon type names directly, instead of base20 value. --- .../pogoiv/scanlogic/PokeInfoCalculator.java | 13 ++++------ .../com/kamron/pogoiv/scanlogic/Pokemon.java | 4 ++-- .../scanlogic/PokemonNameCorrector.java | 24 +++++++------------ 3 files changed, 15 insertions(+), 26 deletions(-) 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 e6ad421b2..7af7533a8 100644 --- a/app/src/main/java/com/kamron/pogoiv/scanlogic/PokeInfoCalculator.java +++ b/app/src/main/java/com/kamron/pogoiv/scanlogic/PokeInfoCalculator.java @@ -67,7 +67,6 @@ public static PokeInfoCalculator getInstance() { */ private PokeInfoCalculator(@NonNull GoIVSettings settings, @NonNull Resources res) { populatePokemon(settings, res); - this.typeNamesArray = res.getStringArray(R.array.typeName); } public List getPokedex() { @@ -149,9 +148,11 @@ private void populatePokemon(@NonNull GoIVSettings settings, @NonNull Resources final String[] types = res.getStringArray(R.array.type); int pokeListSize = names.length; + typeNamesArray = res.getStringArray(R.array.typeName); + for (int i = 0; i < pokeListSize; i++) { - Pokemon p = new Pokemon(names[i], displayNames[i], i, attack[i], defense[i], stamina[i], - devolution[i], evolutionCandyCost[i], types[i]); + Pokemon p = new Pokemon(names[i], displayNames[i], i, attack[i], defense[i], stamina[i], devolution[i], + evolutionCandyCost[i], getTypeNames(types[i])); pokedex.add(p); pokemap.put(names[i].toLowerCase(), p); if (!names[i].equals(displayNames[i])) { @@ -440,11 +441,7 @@ public int getHPAtLevel(IVScanResult ivScanResult, double selectedLevel, Pokemon return averageHP; } - public String getTypeName(int typeNameNum) { - return typeNamesArray[typeNameNum]; - } - - public String[] getTypeNames(String typeBase20) { + private String[] getTypeNames(String typeBase20) { String[] typeNames = new String[2]; int typeNum; 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 137bf6bcd..cf23ad91d 100644 --- a/app/src/main/java/com/kamron/pogoiv/scanlogic/Pokemon.java +++ b/app/src/main/java/com/kamron/pogoiv/scanlogic/Pokemon.java @@ -56,10 +56,10 @@ public String getCharacter() { public final int baseStamina; public final int devoNumber; public final int candyEvolutionCost; - public final String types; + public final String[] types; public Pokemon(String name, String displayName, int number, int baseAttack, int baseDefense, int baseStamina, - int devoNumber, int candyEvolutionCost, String types) { + int devoNumber, int candyEvolutionCost, String[] types) { this.name = name; this.displayName = displayName; this.number = number; 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 812d4f55f..9d8ef1d11 100644 --- a/app/src/main/java/com/kamron/pogoiv/scanlogic/PokemonNameCorrector.java +++ b/app/src/main/java/com/kamron/pogoiv/scanlogic/PokemonNameCorrector.java @@ -71,26 +71,18 @@ public PokeDist getPossiblePokemon(String poketext, String candytext, Optional Date: Sun, 18 Feb 2018 01:03:21 +0900 Subject: [PATCH 10/10] [Rf] improved PokeInfoCalculator.getTypeNames() implementation. --- .../pogoiv/scanlogic/PokeInfoCalculator.java | 45 +++++++++++++------ 1 file changed, 31 insertions(+), 14 deletions(-) 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 7af7533a8..894d24772 100644 --- a/app/src/main/java/com/kamron/pogoiv/scanlogic/PokeInfoCalculator.java +++ b/app/src/main/java/com/kamron/pogoiv/scanlogic/PokeInfoCalculator.java @@ -441,26 +441,43 @@ public int getHPAtLevel(IVScanResult ivScanResult, double selectedLevel, Pokemon return averageHP; } + /** + * Get localized pokemon type names as a string array from a base20 value defined in types.xml. + * + * @param typeBase20 a pokemon type value indicated with 2 digits base20 value defined in types.xml + * @return A string array including localized pokemon type names. This array has 2 elements as max-length for a + * multi-type pokemon, or 1 element as min-length for a single type pokemon. + * If invalid value input, currently "N/A" returned as 1 element string array. + */ private String[] getTypeNames(String typeBase20) { - String[] typeNames = new String[2]; - int typeNum; + // check invalid value + if (typeBase20.length() != 2) { + //TODO error handling + String[] typeNames = {"N/A"}; + return typeNames; + } - typeNum = Integer.parseInt(typeBase20.substring(0, 1), 20); + Integer[] typeNum = new Integer[2]; - if (0 < typeNum && typeNum < typeNamesArray.length) { - typeNames[0] = typeNamesArray[typeNum - 1]; - } else { - typeNames[0] = null; - } + typeNum[0] = Integer.parseInt(typeBase20.substring(0, 1), 20); // 1st type + typeNum[1] = Integer.parseInt(typeBase20.substring(1, 2), 20); // 2nd type - typeNum = Integer.parseInt(typeBase20.substring(1, 2), 20); + // check invalid value + if (!(0 < typeNum[0] && typeNum[0] < typeNamesArray.length) + || !(0 <= typeNum[1] && typeNum[1] < typeNamesArray.length)) { + //TODO error handling + String[] typeNames = {"N/A"}; + return typeNames; + } - if (0 < typeNum && typeNum < typeNamesArray.length) { - typeNames[1] = typeNamesArray[typeNum - 1]; + if (typeNum[1] == 0) { + // Single-type Pokemon + String[] typeNames = {typeNamesArray[typeNum[0] - 1]}; + return typeNames; } else { - typeNames[1] = null; + // Multi-type Pokemon + String[] typeNames = {typeNamesArray[typeNum[0] - 1], typeNamesArray[typeNum[1] - 1]}; + return typeNames; } - - return typeNames; } }