From 6f3893099b1c12726f3415311e03eb7ebbcba91c Mon Sep 17 00:00:00 2001 From: Nestor Vera Date: Fri, 14 Apr 2017 19:20:25 +0200 Subject: [PATCH 1/5] Initial support for family candy icon --- app/app.global.css | 8 ++ app/imgs/candy/candy_base_color.png | Bin 0 -> 25221 bytes app/imgs/candy/candy_highlight.png | Bin 0 -> 9265 bytes app/imgs/candy/candy_secondary_color.png | Bin 0 -> 6819 bytes app/imgs/candy/colors.csv | 132 +++++++++++++++++++++ app/screens/Detail/components/ModalBody.js | 10 +- 6 files changed, 149 insertions(+), 1 deletion(-) create mode 100644 app/imgs/candy/candy_base_color.png create mode 100644 app/imgs/candy/candy_highlight.png create mode 100644 app/imgs/candy/candy_secondary_color.png create mode 100644 app/imgs/candy/colors.csv diff --git a/app/app.global.css b/app/app.global.css index cde658a..0a690c9 100644 --- a/app/app.global.css +++ b/app/app.global.css @@ -549,6 +549,14 @@ color: #32b741; color: #3c605c; } +#pokemon_candy_icon { + height: 24px; + width: auto; + position: relative; + top: -2px; + margin-right: 4px; +} + #pokemon_evolve_info { display: block; width: 100%; diff --git a/app/imgs/candy/candy_base_color.png b/app/imgs/candy/candy_base_color.png new file mode 100644 index 0000000000000000000000000000000000000000..b24f828ea3bbefdd00ce84e04599e905b0da874e GIT binary patch literal 25221 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 literal 0 HcmV?d00001 diff --git a/app/imgs/candy/candy_secondary_color.png b/app/imgs/candy/candy_secondary_color.png new file mode 100644 index 0000000000000000000000000000000000000000..7c4d1af0fbdefe4ba110a2d71713945d9a111792 GIT binary patch literal 6819 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 literal 0 HcmV?d00001 diff --git a/app/imgs/candy/colors.csv b/app/imgs/candy/colors.csv new file mode 100644 index 0000000..39eecb2 --- /dev/null +++ b/app/imgs/candy/colors.csv @@ -0,0 +1,132 @@ +id pokemon primaryColor secondaryColor verified +1 Bulbasaur #36C8A4 #A3FB83 TRUE +2 Charmander #F09230 #FFE699 TRUE +3 Squirtle #85C4D6 #F2E8BE TRUE +4 Caterpie #A5CD87 #FAE3B1 TRUE +5 Weedle #E7BC83 #DB76AD TRUE +6 Pidgey #E9E0B7 #D29E65 TRUE +7 Rattata #A989BA #D9D7BE TRUE +8 Spearow #EBB9A0 #FE5D6C TRUE +9 Ekans #CBA8C9 #F1E090 TRUE +10 Pikachu #F5D368 #E2A65D TRUE +11 Sandshrew #E0D2A4 #C9B180 TRUE +12 Nidoran F #C5D3E4 #9697C5 TRUE +13 Nidoran M #D59FC1 #C37096 TRUE +14 Clefairy #F1D3D1 #F1BFC0 TRUE +15 Vulpix #F5865E #F6D29C TRUE +16 Jigglypuff #F1D2E1 #EAB9CE TRUE +17 Zubat #478ABF #DC8DD7 TRUE +18 Oddish #7095BF #75C06B TRUE +19 Paras #F1873D #FFD159 TRUE +20 Venonat #998FD6 #E24379 TRUE +21 Diglett #B08570 #EEC5DC TRUE +22 Meowth #ECE0C4 #FFE28A TRUE +23 Psyduck #F4C487 #EEEED8 TRUE +24 Mankey #E5D6CB #C3927F TRUE +25 Growlithe #F3A056 #3F3D2A TRUE +26 Poliwag #849FCA #ECECF6 TRUE +27 Abra #E5CE5C #8E7994 TRUE +28 Machop #A1BBDE #DCCEB1 TRUE +29 Bellsprout #EBE16E #AFD57E TRUE +30 Tentacool #71ACD8 #C24589 TRUE +31 Geodude #ACA078 #756108 TRUE +32 Ponyta #EDE7C7 #F59062 TRUE +33 Slowpoke #DFA1B9 #EEE1C7 TRUE +34 Magnemite #D0DAE0 #92B6C6 TRUE +35 Farfetch'd #AC9E95 #95FB97 TRUE +36 Doduo #C89462 #AF755F TRUE +37 Seel #C7DFE8 #B6CAED TRUE +38 Grimer #BFA4C7 #5F5370 TRUE +39 Shellder #AB9CC5 #E0B5B3 TRUE +40 Gastly #242223 #9B7FB7 TRUE +41 Onix #B5B6B8 #626264 TRUE +42 Drowzee #F8CB58 #AF7961 TRUE +43 Krabby #EB9063 #EDD9CE TRUE +44 Voltorb #B64656 #F0E5EA TRUE +45 Exeggcute #F4DDE7 #EFC3C1 TRUE +46 Cubone #D4D5D6 #CBB57A TRUE +47 Hitmonlee #BD9F88 #EEE1C7 TRUE +48 Hitmonchan #C8ABBB #E4643B TRUE +49 Lickitung #E3AEB9 #F0E4CA TRUE +50 Koffing #8B8FAE #DEE0BF TRUE +51 Rhyhorn #BCBDBF #959CA2 TRUE +52 Chansey #E0AEB2 #C68D87 TRUE +53 Tangela #666C9D #E46E8C TRUE +54 Kangaskhan #978781 #E3DDB8 TRUE +55 Horsea #9FCFE9 #FCF7D7 TRUE +56 Goldeen #E6E6E7 #F38469 TRUE +57 Staryu #B49569 #F5E688 TRUE +58 Mr_Mime #E56387 #FFCED5 TRUE +59 Scyther #92C587 #F6F0CF TRUE +60 Jynx #C44552 #643187 TRUE +61 Electabuzz #F5DB77 #14175E TRUE +62 Magmar #F5D477 #F0664E TRUE +63 Pinsir #BCB1AB #CFD4D8 TRUE +64 Tauros #D8A058 #887E6F TRUE +65 Magikarp #E87839 #F6F0CF TRUE +66 Lapras #6BA7D4 #FFF0DA TRUE +67 Ditto #F2ABC0 #DA74AC TRUE +68 Eevee #CA9761 #7E5621 TRUE +69 Porygon #E7757C #6BC7C5 TRUE +70 Omanyte #DDDCCC #73CEE2 TRUE +71 Kabuto #C18335 #4E4E48 TRUE +72 Aerodactyl #D4BAD3 #B196C5 TRUE +73 Snorlax #326583 #E3DACE TRUE +74 Articuno #8dc0e6 #5b99bb TRUE +75 Zapdos #f8de8a #af9354 TRUE +76 Moltres #fccf81 #e6845f TRUE +77 Dratini #90AED4 #EFEAE6 TRUE +78 Mewtwo #c8d3ea #8d96b5 TRUE +79 Mew #eedfe9 #e7bbce TRUE +80 Chikorita #CBDAAE #86C07C TRUE +81 Cyndaquil #185E62 #EED9AC TRUE +82 Totodile #96B8C1 #BF8390 TRUE +83 Sentret #AA8374 #FDFAEE TRUE +84 Hoothoot #A88F77 #3A3836 TRUE +85 Ledyba #E4845F #291F1D TRUE +86 Spinarak #A4D08C #F6DA8C TRUE +87 Chinchou #728ABD #EEDC9D TRUE +88 Togepi #EADEB2 #BDC4CE TRUE +89 Natu #85BD57 #E9CA67 TRUE +90 Mareep #F2E5C2 #5A84B1 TRUE +91 Marill #52B3E4 #E1F4F6 TRUE +92 Sudowoodo #AE9F85 #88AB72 TRUE +93 Hoppip #EB92A8 #A8CF86 TRUE +94 Aipom #BA9DB7 #DBC4B1 TRUE +95 Sunkern #EAD887 #83B177 TRUE +96 Yanma #BC836F #A6AD72 TRUE +97 Wooper #97C3DA #B593A0 TRUE +98 Murkrow #3B5670 #F0D3A4 TRUE +99 Misdreavus #8994A0 #B97F85 TRUE +100 Unown #51626E #CED6E0 TRUE +101 Wobbuffet #54ADC9 #2E2F33 TRUE +102 Girafarig #E7AB3D #39281F TRUE +103 Pineco #1A4146 #8FABA0 TRUE +104 Dunsparce #F2DF93 #4B908C TRUE +105 Gligar #D18EB2 #598ABC TRUE +106 Snubbull #E78C96 #3B2F2D TRUE +107 Qwilfish #4A7471 #E5EAB4 TRUE +108 Shuckle #942D2B #F5CF6C TRUE +109 Heracross #2B5978 #93AFC1 TRUE +110 Sneasel #5F8795 #D76B68 TRUE +111 Teddiursa #E09659 #FBE699 TRUE +112 Slugma #E69881 #F4CC94 TRUE +113 Swinub #B28B73 #D88C89 TRUE +114 Corsola #e697a2 #ccd5db TRUE +115 Remoraid #AEC8B7 #709687 TRUE +116 Delibird #FFFFFF #000000 FALSE +117 Mantine #425161 #EDDEE8 TRUE +118 Skarmory #D2D9E9 #923A3B TRUE +119 Houndour #867770 #B5816C TRUE +120 Phanpy #9CCFCF #D06D52 TRUE +121 Stantler #BB9780 #EDDE9A TRUE +122 Smeargle #FFFFFF #000000 TRUE +123 Tyrogue #D7C1D0 #926E4A TRUE +124 Miltank #F1BABE #EEE0B7 TRUE +125 Raikou #FFFFFF #000000 FALSE +126 Entei #FFFFFF #000000 FALSE +127 Suicune #FFFFFF #000000 FALSE +128 Larvitar #B5BF96 #595755 TRUE +129 Lugia #FFFFFF #000000 FALSE +130 Ho-oh #FFFFFF #000000 FALSE +131 Celebi #FFFFFF #000000 FALSE diff --git a/app/screens/Detail/components/ModalBody.js b/app/screens/Detail/components/ModalBody.js index e741bf3..a350eda 100644 --- a/app/screens/Detail/components/ModalBody.js +++ b/app/screens/Detail/components/ModalBody.js @@ -120,7 +120,15 @@ class ModalBody extends React.Component {
CP Per Upgrade
-
{candies}
+
+ Candy Icon + {candies} +
{`${utils.getName(pokemon.family_id)} Candy`}
From 092149de6687c5a6d2fff4bb824bd7c2af5040a1 Mon Sep 17 00:00:00 2001 From: Nestor Vera Date: Wed, 26 Apr 2017 17:17:05 +0200 Subject: [PATCH 2/5] Add JSON version of the colors file --- app/imgs/candy/colors.json | 788 +++++++++++++++++++++++++++++++++++++ 1 file changed, 788 insertions(+) create mode 100644 app/imgs/candy/colors.json diff --git a/app/imgs/candy/colors.json b/app/imgs/candy/colors.json new file mode 100644 index 0000000..cada019 --- /dev/null +++ b/app/imgs/candy/colors.json @@ -0,0 +1,788 @@ +{ + "1": { + "pokemon": "Bulbasaur", + "primaryColor": "#36C8A4", + "secondaryColor": "#A3FB83", + "verified": "TRUE" + }, + "4": { + "pokemon": "Charmander", + "primaryColor": "#F09230", + "secondaryColor": "#FFE699", + "verified": "TRUE" + }, + "7": { + "pokemon": "Squirtle", + "primaryColor": "#85C4D6", + "secondaryColor": "#F2E8BE", + "verified": "TRUE" + }, + "10": { + "pokemon": "Caterpie", + "primaryColor": "#A5CD87", + "secondaryColor": "#FAE3B1", + "verified": "TRUE" + }, + "13": { + "pokemon": "Weedle", + "primaryColor": "#E7BC83", + "secondaryColor": "#DB76AD", + "verified": "TRUE" + }, + "16": { + "pokemon": "Pidgey", + "primaryColor": "#E9E0B7", + "secondaryColor": "#D29E65", + "verified": "TRUE" + }, + "19": { + "pokemon": "Rattata", + "primaryColor": "#A989BA", + "secondaryColor": "#D9D7BE", + "verified": "TRUE" + }, + "21": { + "pokemon": "Spearow", + "primaryColor": "#EBB9A0", + "secondaryColor": "#FE5D6C", + "verified": "TRUE" + }, + "23": { + "pokemon": "Ekans", + "primaryColor": "#CBA8C9", + "secondaryColor": "#F1E090", + "verified": "TRUE" + }, + "25": { + "pokemon": "Pikachu", + "primaryColor": "#F5D368", + "secondaryColor": "#E2A65D", + "verified": "TRUE" + }, + "27": { + "pokemon": "Sandshrew", + "primaryColor": "#E0D2A4", + "secondaryColor": "#C9B180", + "verified": "TRUE" + }, + "29": { + "pokemon": "Nidoran F", + "primaryColor": "#C5D3E4", + "secondaryColor": "#9697C5", + "verified": "TRUE" + }, + "32": { + "pokemon": "Nidoran M", + "primaryColor": "#D59FC1", + "secondaryColor": "#C37096", + "verified": "TRUE" + }, + "35": { + "pokemon": "Clefairy", + "primaryColor": "#F1D3D1", + "secondaryColor": "#F1BFC0", + "verified": "TRUE" + }, + "37": { + "pokemon": "Vulpix", + "primaryColor": "#F5865E", + "secondaryColor": "#F6D29C", + "verified": "TRUE" + }, + "39": { + "pokemon": "Jigglypuff", + "primaryColor": "#F1D2E1", + "secondaryColor": "#EAB9CE", + "verified": "TRUE" + }, + "41": { + "pokemon": "Zubat", + "primaryColor": "#478ABF", + "secondaryColor": "#DC8DD7", + "verified": "TRUE" + }, + "43": { + "pokemon": "Oddish", + "primaryColor": "#7095BF", + "secondaryColor": "#75C06B", + "verified": "TRUE" + }, + "46": { + "pokemon": "Paras", + "primaryColor": "#F1873D", + "secondaryColor": "#FFD159", + "verified": "TRUE" + }, + "48": { + "pokemon": "Venonat", + "primaryColor": "#998FD6", + "secondaryColor": "#E24379", + "verified": "TRUE" + }, + "50": { + "pokemon": "Diglett", + "primaryColor": "#B08570", + "secondaryColor": "#EEC5DC", + "verified": "TRUE" + }, + "52": { + "pokemon": "Meowth", + "primaryColor": "#ECE0C4", + "secondaryColor": "#FFE28A", + "verified": "TRUE" + }, + "54": { + "pokemon": "Psyduck", + "primaryColor": "#F4C487", + "secondaryColor": "#EEEED8", + "verified": "TRUE" + }, + "56": { + "pokemon": "Mankey", + "primaryColor": "#E5D6CB", + "secondaryColor": "#C3927F", + "verified": "TRUE" + }, + "58": { + "pokemon": "Growlithe", + "primaryColor": "#F3A056", + "secondaryColor": "#3F3D2A", + "verified": "TRUE" + }, + "60": { + "pokemon": "Poliwag", + "primaryColor": "#849FCA", + "secondaryColor": "#ECECF6", + "verified": "TRUE" + }, + "63": { + "pokemon": "Abra", + "primaryColor": "#E5CE5C", + "secondaryColor": "#8E7994", + "verified": "TRUE" + }, + "66": { + "pokemon": "Machop", + "primaryColor": "#A1BBDE", + "secondaryColor": "#DCCEB1", + "verified": "TRUE" + }, + "69": { + "pokemon": "Bellsprout", + "primaryColor": "#EBE16E", + "secondaryColor": "#AFD57E", + "verified": "TRUE" + }, + "72": { + "pokemon": "Tentacool", + "primaryColor": "#71ACD8", + "secondaryColor": "#C24589", + "verified": "TRUE" + }, + "74": { + "pokemon": "Geodude", + "primaryColor": "#ACA078", + "secondaryColor": "#756108", + "verified": "TRUE" + }, + "77": { + "pokemon": "Ponyta", + "primaryColor": "#EDE7C7", + "secondaryColor": "#F59062", + "verified": "TRUE" + }, + "79": { + "pokemon": "Slowpoke", + "primaryColor": "#DFA1B9", + "secondaryColor": "#EEE1C7", + "verified": "TRUE" + }, + "81": { + "pokemon": "Magnemite", + "primaryColor": "#D0DAE0", + "secondaryColor": "#92B6C6", + "verified": "TRUE" + }, + "83": { + "pokemon": "Farfetch'd", + "primaryColor": "#AC9E95", + "secondaryColor": "#95FB97", + "verified": "TRUE" + }, + "84": { + "pokemon": "Doduo", + "primaryColor": "#C89462", + "secondaryColor": "#AF755F", + "verified": "TRUE" + }, + "86": { + "pokemon": "Seel", + "primaryColor": "#C7DFE8", + "secondaryColor": "#B6CAED", + "verified": "TRUE" + }, + "88": { + "pokemon": "Grimer", + "primaryColor": "#BFA4C7", + "secondaryColor": "#5F5370", + "verified": "TRUE" + }, + "90": { + "pokemon": "Shellder", + "primaryColor": "#AB9CC5", + "secondaryColor": "#E0B5B3", + "verified": "TRUE" + }, + "92": { + "pokemon": "Gastly", + "primaryColor": "#242223", + "secondaryColor": "#9B7FB7", + "verified": "TRUE" + }, + "95": { + "pokemon": "Onix", + "primaryColor": "#B5B6B8", + "secondaryColor": "#626264", + "verified": "TRUE" + }, + "96": { + "pokemon": "Drowzee", + "primaryColor": "#F8CB58", + "secondaryColor": "#AF7961", + "verified": "TRUE" + }, + "98": { + "pokemon": "Krabby", + "primaryColor": "#EB9063", + "secondaryColor": "#EDD9CE", + "verified": "TRUE" + }, + "100": { + "pokemon": "Voltorb", + "primaryColor": "#B64656", + "secondaryColor": "#F0E5EA", + "verified": "TRUE" + }, + "102": { + "pokemon": "Exeggcute", + "primaryColor": "#F4DDE7", + "secondaryColor": "#EFC3C1", + "verified": "TRUE" + }, + "104": { + "pokemon": "Cubone", + "primaryColor": "#D4D5D6", + "secondaryColor": "#CBB57A", + "verified": "TRUE" + }, + "106": { + "pokemon": "Hitmonlee", + "primaryColor": "#BD9F88", + "secondaryColor": "#EEE1C7", + "verified": "TRUE" + }, + "107": { + "pokemon": "Hitmonchan", + "primaryColor": "#C8ABBB", + "secondaryColor": "#E4643B", + "verified": "TRUE" + }, + "108": { + "pokemon": "Lickitung", + "primaryColor": "#E3AEB9", + "secondaryColor": "#F0E4CA", + "verified": "TRUE" + }, + "109": { + "pokemon": "Koffing", + "primaryColor": "#8B8FAE", + "secondaryColor": "#DEE0BF", + "verified": "TRUE" + }, + "111": { + "pokemon": "Rhyhorn", + "primaryColor": "#BCBDBF", + "secondaryColor": "#959CA2", + "verified": "TRUE" + }, + "113": { + "pokemon": "Chansey", + "primaryColor": "#E0AEB2", + "secondaryColor": "#C68D87", + "verified": "TRUE" + }, + "114": { + "pokemon": "Tangela", + "primaryColor": "#666C9D", + "secondaryColor": "#E46E8C", + "verified": "TRUE" + }, + "115": { + "pokemon": "Kangaskhan", + "primaryColor": "#978781", + "secondaryColor": "#E3DDB8", + "verified": "TRUE" + }, + "116": { + "pokemon": "Horsea", + "primaryColor": "#9FCFE9", + "secondaryColor": "#FCF7D7", + "verified": "TRUE" + }, + "118": { + "pokemon": "Goldeen", + "primaryColor": "#E6E6E7", + "secondaryColor": "#F38469", + "verified": "TRUE" + }, + "120": { + "pokemon": "Staryu", + "primaryColor": "#B49569", + "secondaryColor": "#F5E688", + "verified": "TRUE" + }, + "122": { + "pokemon": "Mr_Mime", + "primaryColor": "#E56387", + "secondaryColor": "#FFCED5", + "verified": "TRUE" + }, + "123": { + "pokemon": "Scyther", + "primaryColor": "#92C587", + "secondaryColor": "#F6F0CF", + "verified": "TRUE" + }, + "124": { + "pokemon": "Jynx", + "primaryColor": "#C44552", + "secondaryColor": "#643187", + "verified": "TRUE" + }, + "125": { + "pokemon": "Electabuzz", + "primaryColor": "#F5DB77", + "secondaryColor": "#14175E", + "verified": "TRUE" + }, + "126": { + "pokemon": "Magmar", + "primaryColor": "#F5D477", + "secondaryColor": "#F0664E", + "verified": "TRUE" + }, + "127": { + "pokemon": "Pinsir", + "primaryColor": "#BCB1AB", + "secondaryColor": "#CFD4D8", + "verified": "TRUE" + }, + "128": { + "pokemon": "Tauros", + "primaryColor": "#D8A058", + "secondaryColor": "#887E6F", + "verified": "TRUE" + }, + "129": { + "pokemon": "Magikarp", + "primaryColor": "#E87839", + "secondaryColor": "#F6F0CF", + "verified": "TRUE" + }, + "131": { + "pokemon": "Lapras", + "primaryColor": "#6BA7D4", + "secondaryColor": "#FFF0DA", + "verified": "TRUE" + }, + "132": { + "pokemon": "Ditto", + "primaryColor": "#F2ABC0", + "secondaryColor": "#DA74AC", + "verified": "TRUE" + }, + "133": { + "pokemon": "Eevee", + "primaryColor": "#CA9761", + "secondaryColor": "#7E5621", + "verified": "TRUE" + }, + "137": { + "pokemon": "Porygon", + "primaryColor": "#E7757C", + "secondaryColor": "#6BC7C5", + "verified": "TRUE" + }, + "138": { + "pokemon": "Omanyte", + "primaryColor": "#DDDCCC", + "secondaryColor": "#73CEE2", + "verified": "TRUE" + }, + "140": { + "pokemon": "Kabuto", + "primaryColor": "#C18335", + "secondaryColor": "#4E4E48", + "verified": "TRUE" + }, + "142": { + "pokemon": "Aerodactyl", + "primaryColor": "#D4BAD3", + "secondaryColor": "#B196C5", + "verified": "TRUE" + }, + "143": { + "pokemon": "Snorlax", + "primaryColor": "#326583", + "secondaryColor": "#E3DACE", + "verified": "TRUE" + }, + "144": { + "pokemon": "Articuno", + "primaryColor": "#8dc0e6", + "secondaryColor": "#5b99bb", + "verified": "TRUE" + }, + "145": { + "pokemon": "Zapdos", + "primaryColor": "#f8de8a", + "secondaryColor": "#af9354", + "verified": "TRUE" + }, + "146": { + "pokemon": "Moltres", + "primaryColor": "#fccf81", + "secondaryColor": "#e6845f", + "verified": "TRUE" + }, + "147": { + "pokemon": "Dratini", + "primaryColor": "#90AED4", + "secondaryColor": "#EFEAE6", + "verified": "TRUE" + }, + "150": { + "pokemon": "Mewtwo", + "primaryColor": "#c8d3ea", + "secondaryColor": "#8d96b5", + "verified": "TRUE" + }, + "151": { + "pokemon": "Mew", + "primaryColor": "#eedfe9", + "secondaryColor": "#e7bbce", + "verified": "TRUE" + }, + "152": { + "pokemon": "Chikorita", + "primaryColor": "#CBDAAE", + "secondaryColor": "#86C07C", + "verified": "TRUE" + }, + "155": { + "pokemon": "Cyndaquil", + "primaryColor": "#185E62", + "secondaryColor": "#EED9AC", + "verified": "TRUE" + }, + "158": { + "pokemon": "Totodile", + "primaryColor": "#96B8C1", + "secondaryColor": "#BF8390", + "verified": "TRUE" + }, + "161": { + "pokemon": "Sentret", + "primaryColor": "#AA8374", + "secondaryColor": "#FDFAEE", + "verified": "TRUE" + }, + "163": { + "pokemon": "Hoothoot", + "primaryColor": "#A88F77", + "secondaryColor": "#3A3836", + "verified": "TRUE" + }, + "165": { + "pokemon": "Ledyba", + "primaryColor": "#E4845F", + "secondaryColor": "#291F1D", + "verified": "TRUE" + }, + "167": { + "pokemon": "Spinarak", + "primaryColor": "#A4D08C", + "secondaryColor": "#F6DA8C", + "verified": "TRUE" + }, + "170": { + "pokemon": "Chinchou", + "primaryColor": "#728ABD", + "secondaryColor": "#EEDC9D", + "verified": "TRUE" + }, + "175": { + "pokemon": "Togepi", + "primaryColor": "#EADEB2", + "secondaryColor": "#BDC4CE", + "verified": "TRUE" + }, + "177": { + "pokemon": "Natu", + "primaryColor": "#85BD57", + "secondaryColor": "#E9CA67", + "verified": "TRUE" + }, + "179": { + "pokemon": "Mareep", + "primaryColor": "#F2E5C2", + "secondaryColor": "#5A84B1", + "verified": "TRUE" + }, + "183": { + "pokemon": "Marill", + "primaryColor": "#52B3E4", + "secondaryColor": "#E1F4F6", + "verified": "TRUE" + }, + "185": { + "pokemon": "Sudowoodo", + "primaryColor": "#AE9F85", + "secondaryColor": "#88AB72", + "verified": "TRUE" + }, + "187": { + "pokemon": "Hoppip", + "primaryColor": "#EB92A8", + "secondaryColor": "#A8CF86", + "verified": "TRUE" + }, + "190": { + "pokemon": "Aipom", + "primaryColor": "#BA9DB7", + "secondaryColor": "#DBC4B1", + "verified": "TRUE" + }, + "191": { + "pokemon": "Sunkern", + "primaryColor": "#EAD887", + "secondaryColor": "#83B177", + "verified": "TRUE" + }, + "193": { + "pokemon": "Yanma", + "primaryColor": "#BC836F", + "secondaryColor": "#A6AD72", + "verified": "TRUE" + }, + "194": { + "pokemon": "Wooper", + "primaryColor": "#97C3DA", + "secondaryColor": "#B593A0", + "verified": "TRUE" + }, + "198": { + "pokemon": "Murkrow", + "primaryColor": "#3B5670", + "secondaryColor": "#F0D3A4", + "verified": "TRUE" + }, + "200": { + "pokemon": "Misdreavus", + "primaryColor": "#8994A0", + "secondaryColor": "#B97F85", + "verified": "TRUE" + }, + "201": { + "pokemon": "Unown", + "primaryColor": "#51626E", + "secondaryColor": "#CED6E0", + "verified": "TRUE" + }, + "202": { + "pokemon": "Wobbuffet", + "primaryColor": "#54ADC9", + "secondaryColor": "#2E2F33", + "verified": "TRUE" + }, + "203": { + "pokemon": "Girafarig", + "primaryColor": "#E7AB3D", + "secondaryColor": "#39281F", + "verified": "TRUE" + }, + "204": { + "pokemon": "Pineco", + "primaryColor": "#1A4146", + "secondaryColor": "#8FABA0", + "verified": "TRUE" + }, + "206": { + "pokemon": "Dunsparce", + "primaryColor": "#F2DF93", + "secondaryColor": "#4B908C", + "verified": "TRUE" + }, + "207": { + "pokemon": "Gligar", + "primaryColor": "#D18EB2", + "secondaryColor": "#598ABC", + "verified": "TRUE" + }, + "209": { + "pokemon": "Snubbull", + "primaryColor": "#E78C96", + "secondaryColor": "#3B2F2D", + "verified": "TRUE" + }, + "211": { + "pokemon": "Qwilfish", + "primaryColor": "#4A7471", + "secondaryColor": "#E5EAB4", + "verified": "TRUE" + }, + "213": { + "pokemon": "Shuckle", + "primaryColor": "#942D2B", + "secondaryColor": "#F5CF6C", + "verified": "TRUE" + }, + "214": { + "pokemon": "Heracross", + "primaryColor": "#2B5978", + "secondaryColor": "#93AFC1", + "verified": "TRUE" + }, + "215": { + "pokemon": "Sneasel", + "primaryColor": "#5F8795", + "secondaryColor": "#D76B68", + "verified": "TRUE" + }, + "216": { + "pokemon": "Teddiursa", + "primaryColor": "#E09659", + "secondaryColor": "#FBE699", + "verified": "TRUE" + }, + "218": { + "pokemon": "Slugma", + "primaryColor": "#E69881", + "secondaryColor": "#F4CC94", + "verified": "TRUE" + }, + "220": { + "pokemon": "Swinub", + "primaryColor": "#B28B73", + "secondaryColor": "#D88C89", + "verified": "TRUE" + }, + "222": { + "pokemon": "Corsola", + "primaryColor": "#e697a2", + "secondaryColor": "#ccd5db", + "verified": "TRUE" + }, + "223": { + "pokemon": "Remoraid", + "primaryColor": "#AEC8B7", + "secondaryColor": "#709687", + "verified": "TRUE" + }, + "225": { + "pokemon": "Delibird", + "primaryColor": "#FFFFFF", + "secondaryColor": "#000000", + "verified": "FALSE" + }, + "226": { + "pokemon": "Mantine", + "primaryColor": "#425161", + "secondaryColor": "#EDDEE8", + "verified": "TRUE" + }, + "227": { + "pokemon": "Skarmory", + "primaryColor": "#D2D9E9", + "secondaryColor": "#923A3B", + "verified": "TRUE" + }, + "228": { + "pokemon": "Houndour", + "primaryColor": "#867770", + "secondaryColor": "#B5816C", + "verified": "TRUE" + }, + "231": { + "pokemon": "Phanpy", + "primaryColor": "#9CCFCF", + "secondaryColor": "#D06D52", + "verified": "TRUE" + }, + "234": { + "pokemon": "Stantler", + "primaryColor": "#BB9780", + "secondaryColor": "#EDDE9A", + "verified": "TRUE" + }, + "235": { + "pokemon": "Smeargle", + "primaryColor": "#FFFFFF", + "secondaryColor": "#000000", + "verified": "TRUE" + }, + "236": { + "pokemon": "Tyrogue", + "primaryColor": "#D7C1D0", + "secondaryColor": "#926E4A", + "verified": "TRUE" + }, + "241": { + "pokemon": "Miltank", + "primaryColor": "#F1BABE", + "secondaryColor": "#EEE0B7", + "verified": "TRUE" + }, + "243": { + "pokemon": "Raikou", + "primaryColor": "#FFFFFF", + "secondaryColor": "#000000", + "verified": "FALSE" + }, + "244": { + "pokemon": "Entei", + "primaryColor": "#FFFFFF", + "secondaryColor": "#000000", + "verified": "FALSE" + }, + "245": { + "pokemon": "Suicune", + "primaryColor": "#FFFFFF", + "secondaryColor": "#000000", + "verified": "FALSE" + }, + "246": { + "pokemon": "Larvitar", + "primaryColor": "#B5BF96", + "secondaryColor": "#595755", + "verified": "TRUE" + }, + "249": { + "pokemon": "Lugia", + "primaryColor": "#FFFFFF", + "secondaryColor": "#000000", + "verified": "FALSE" + }, + "250": { + "pokemon": "Ho-oh", + "primaryColor": "#FFFFFF", + "secondaryColor": "#000000", + "verified": "FALSE" + }, + "251": { + "pokemon": "Celebi", + "primaryColor": "#FFFFFF", + "secondaryColor": "#000000", + "verified": "FALSE" + } +} From 73ba3616f457c63bfcbe502223425bc189c2287f Mon Sep 17 00:00:00 2001 From: Nestor Vera Date: Wed, 26 Apr 2017 17:17:30 +0200 Subject: [PATCH 3/5] Add candyColors and getCandyColor to utils --- app/utils.js | 793 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 793 insertions(+) diff --git a/app/utils.js b/app/utils.js index 1cdc0af..2d2b526 100644 --- a/app/utils.js +++ b/app/utils.js @@ -127,6 +127,795 @@ const levelCpMultiplier = { 40.5: 0.7931164 } +const candyColors = { + 1: { + pokemon: 'Bulbasaur', + primaryColor: '#36C8A4', + secondaryColor: '#A3FB83', + verified: true + }, + 4: { + pokemon: 'Charmander', + primaryColor: '#F09230', + secondaryColor: '#FFE699', + verified: true + }, + 7: { + pokemon: 'Squirtle', + primaryColor: '#85C4D6', + secondaryColor: '#F2E8BE', + verified: true + }, + 10: { + pokemon: 'Caterpie', + primaryColor: '#A5CD87', + secondaryColor: '#FAE3B1', + verified: true + }, + 13: { + pokemon: 'Weedle', + primaryColor: '#E7BC83', + secondaryColor: '#DB76AD', + verified: true + }, + 16: { + pokemon: 'Pidgey', + primaryColor: '#E9E0B7', + secondaryColor: '#D29E65', + verified: true + }, + 19: { + pokemon: 'Rattata', + primaryColor: '#A989BA', + secondaryColor: '#D9D7BE', + verified: true + }, + 21: { + pokemon: 'Spearow', + primaryColor: '#EBB9A0', + secondaryColor: '#FE5D6C', + verified: true + }, + 23: { + pokemon: 'Ekans', + primaryColor: '#CBA8C9', + secondaryColor: '#F1E090', + verified: true + }, + 25: { + pokemon: 'Pikachu', + primaryColor: '#F5D368', + secondaryColor: '#E2A65D', + verified: true + }, + 27: { + pokemon: 'Sandshrew', + primaryColor: '#E0D2A4', + secondaryColor: '#C9B180', + verified: true + }, + 29: { + pokemon: 'Nidoran F', + primaryColor: '#C5D3E4', + secondaryColor: '#9697C5', + verified: true + }, + 32: { + pokemon: 'Nidoran M', + primaryColor: '#D59FC1', + secondaryColor: '#C37096', + verified: true + }, + 35: { + pokemon: 'Clefairy', + primaryColor: '#F1D3D1', + secondaryColor: '#F1BFC0', + verified: true + }, + 37: { + pokemon: 'Vulpix', + primaryColor: '#F5865E', + secondaryColor: '#F6D29C', + verified: true + }, + 39: { + pokemon: 'Jigglypuff', + primaryColor: '#F1D2E1', + secondaryColor: '#EAB9CE', + verified: true + }, + 41: { + pokemon: 'Zubat', + primaryColor: '#478ABF', + secondaryColor: '#DC8DD7', + verified: true + }, + 43: { + pokemon: 'Oddish', + primaryColor: '#7095BF', + secondaryColor: '#75C06B', + verified: true + }, + 46: { + pokemon: 'Paras', + primaryColor: '#F1873D', + secondaryColor: '#FFD159', + verified: true + }, + 48: { + pokemon: 'Venonat', + primaryColor: '#998FD6', + secondaryColor: '#E24379', + verified: true + }, + 50: { + pokemon: 'Diglett', + primaryColor: '#B08570', + secondaryColor: '#EEC5DC', + verified: true + }, + 52: { + pokemon: 'Meowth', + primaryColor: '#ECE0C4', + secondaryColor: '#FFE28A', + verified: true + }, + 54: { + pokemon: 'Psyduck', + primaryColor: '#F4C487', + secondaryColor: '#EEEED8', + verified: true + }, + 56: { + pokemon: 'Mankey', + primaryColor: '#E5D6CB', + secondaryColor: '#C3927F', + verified: true + }, + 58: { + pokemon: 'Growlithe', + primaryColor: '#F3A056', + secondaryColor: '#3F3D2A', + verified: true + }, + 60: { + pokemon: 'Poliwag', + primaryColor: '#849FCA', + secondaryColor: '#ECECF6', + verified: true + }, + 63: { + pokemon: 'Abra', + primaryColor: '#E5CE5C', + secondaryColor: '#8E7994', + verified: true + }, + 66: { + pokemon: 'Machop', + primaryColor: '#A1BBDE', + secondaryColor: '#DCCEB1', + verified: true + }, + 69: { + pokemon: 'Bellsprout', + primaryColor: '#EBE16E', + secondaryColor: '#AFD57E', + verified: true + }, + 72: { + pokemon: 'Tentacool', + primaryColor: '#71ACD8', + secondaryColor: '#C24589', + verified: true + }, + 74: { + pokemon: 'Geodude', + primaryColor: '#ACA078', + secondaryColor: '#756108', + verified: true + }, + 77: { + pokemon: 'Ponyta', + primaryColor: '#EDE7C7', + secondaryColor: '#F59062', + verified: true + }, + 79: { + pokemon: 'Slowpoke', + primaryColor: '#DFA1B9', + secondaryColor: '#EEE1C7', + verified: true + }, + 81: { + pokemon: 'Magnemite', + primaryColor: '#D0DAE0', + secondaryColor: '#92B6C6', + verified: true + }, + 83: { + pokemon: 'Farfetch\'d', + primaryColor: '#AC9E95', + secondaryColor: '#95FB97', + verified: true + }, + 84: { + pokemon: 'Doduo', + primaryColor: '#C89462', + secondaryColor: '#AF755F', + verified: true + }, + 86: { + pokemon: 'Seel', + primaryColor: '#C7DFE8', + secondaryColor: '#B6CAED', + verified: true + }, + 88: { + pokemon: 'Grimer', + primaryColor: '#BFA4C7', + secondaryColor: '#5F5370', + verified: true + }, + 90: { + pokemon: 'Shellder', + primaryColor: '#AB9CC5', + secondaryColor: '#E0B5B3', + verified: true + }, + 92: { + pokemon: 'Gastly', + primaryColor: '#242223', + secondaryColor: '#9B7FB7', + verified: true + }, + 95: { + pokemon: 'Onix', + primaryColor: '#B5B6B8', + secondaryColor: '#626264', + verified: true + }, + 96: { + pokemon: 'Drowzee', + primaryColor: '#F8CB58', + secondaryColor: '#AF7961', + verified: true + }, + 98: { + pokemon: 'Krabby', + primaryColor: '#EB9063', + secondaryColor: '#EDD9CE', + verified: true + }, + 100: { + pokemon: 'Voltorb', + primaryColor: '#B64656', + secondaryColor: '#F0E5EA', + verified: true + }, + 102: { + pokemon: 'Exeggcute', + primaryColor: '#F4DDE7', + secondaryColor: '#EFC3C1', + verified: true + }, + 104: { + pokemon: 'Cubone', + primaryColor: '#D4D5D6', + secondaryColor: '#CBB57A', + verified: true + }, + 106: { + pokemon: 'Hitmonlee', + primaryColor: '#BD9F88', + secondaryColor: '#EEE1C7', + verified: true + }, + 107: { + pokemon: 'Hitmonchan', + primaryColor: '#C8ABBB', + secondaryColor: '#E4643B', + verified: true + }, + 108: { + pokemon: 'Lickitung', + primaryColor: '#E3AEB9', + secondaryColor: '#F0E4CA', + verified: true + }, + 109: { + pokemon: 'Koffing', + primaryColor: '#8B8FAE', + secondaryColor: '#DEE0BF', + verified: true + }, + 111: { + pokemon: 'Rhyhorn', + primaryColor: '#BCBDBF', + secondaryColor: '#959CA2', + verified: true + }, + 113: { + pokemon: 'Chansey', + primaryColor: '#E0AEB2', + secondaryColor: '#C68D87', + verified: true + }, + 114: { + pokemon: 'Tangela', + primaryColor: '#666C9D', + secondaryColor: '#E46E8C', + verified: true + }, + 115: { + pokemon: 'Kangaskhan', + primaryColor: '#978781', + secondaryColor: '#E3DDB8', + verified: true + }, + 116: { + pokemon: 'Horsea', + primaryColor: '#9FCFE9', + secondaryColor: '#FCF7D7', + verified: true + }, + 118: { + pokemon: 'Goldeen', + primaryColor: '#E6E6E7', + secondaryColor: '#F38469', + verified: true + }, + 120: { + pokemon: 'Staryu', + primaryColor: '#B49569', + secondaryColor: '#F5E688', + verified: true + }, + 122: { + pokemon: 'Mr_Mime', + primaryColor: '#E56387', + secondaryColor: '#FFCED5', + verified: true + }, + 123: { + pokemon: 'Scyther', + primaryColor: '#92C587', + secondaryColor: '#F6F0CF', + verified: true + }, + 124: { + pokemon: 'Jynx', + primaryColor: '#C44552', + secondaryColor: '#643187', + verified: true + }, + 125: { + pokemon: 'Electabuzz', + primaryColor: '#F5DB77', + secondaryColor: '#14175E', + verified: true + }, + 126: { + pokemon: 'Magmar', + primaryColor: '#F5D477', + secondaryColor: '#F0664E', + verified: true + }, + 127: { + pokemon: 'Pinsir', + primaryColor: '#BCB1AB', + secondaryColor: '#CFD4D8', + verified: true + }, + 128: { + pokemon: 'Tauros', + primaryColor: '#D8A058', + secondaryColor: '#887E6F', + verified: true + }, + 129: { + pokemon: 'Magikarp', + primaryColor: '#E87839', + secondaryColor: '#F6F0CF', + verified: true + }, + 131: { + pokemon: 'Lapras', + primaryColor: '#6BA7D4', + secondaryColor: '#FFF0DA', + verified: true + }, + 132: { + pokemon: 'Ditto', + primaryColor: '#F2ABC0', + secondaryColor: '#DA74AC', + verified: true + }, + 133: { + pokemon: 'Eevee', + primaryColor: '#CA9761', + secondaryColor: '#7E5621', + verified: true + }, + 137: { + pokemon: 'Porygon', + primaryColor: '#E7757C', + secondaryColor: '#6BC7C5', + verified: true + }, + 138: { + pokemon: 'Omanyte', + primaryColor: '#DDDCCC', + secondaryColor: '#73CEE2', + verified: true + }, + 140: { + pokemon: 'Kabuto', + primaryColor: '#C18335', + secondaryColor: '#4E4E48', + verified: true + }, + 142: { + pokemon: 'Aerodactyl', + primaryColor: '#D4BAD3', + secondaryColor: '#B196C5', + verified: true + }, + 143: { + pokemon: 'Snorlax', + primaryColor: '#326583', + secondaryColor: '#E3DACE', + verified: true + }, + 144: { + pokemon: 'Articuno', + primaryColor: '#8dc0e6', + secondaryColor: '#5b99bb', + verified: true + }, + 145: { + pokemon: 'Zapdos', + primaryColor: '#f8de8a', + secondaryColor: '#af9354', + verified: true + }, + 146: { + pokemon: 'Moltres', + primaryColor: '#fccf81', + secondaryColor: '#e6845f', + verified: true + }, + 147: { + pokemon: 'Dratini', + primaryColor: '#90AED4', + secondaryColor: '#EFEAE6', + verified: true + }, + 150: { + pokemon: 'Mewtwo', + primaryColor: '#c8d3ea', + secondaryColor: '#8d96b5', + verified: true + }, + 151: { + pokemon: 'Mew', + primaryColor: '#eedfe9', + secondaryColor: '#e7bbce', + verified: true + }, + 152: { + pokemon: 'Chikorita', + primaryColor: '#CBDAAE', + secondaryColor: '#86C07C', + verified: true + }, + 155: { + pokemon: 'Cyndaquil', + primaryColor: '#185E62', + secondaryColor: '#EED9AC', + verified: true + }, + 158: { + pokemon: 'Totodile', + primaryColor: '#96B8C1', + secondaryColor: '#BF8390', + verified: true + }, + 161: { + pokemon: 'Sentret', + primaryColor: '#AA8374', + secondaryColor: '#FDFAEE', + verified: true + }, + 163: { + pokemon: 'Hoothoot', + primaryColor: '#A88F77', + secondaryColor: '#3A3836', + verified: true + }, + 165: { + pokemon: 'Ledyba', + primaryColor: '#E4845F', + secondaryColor: '#291F1D', + verified: true + }, + 167: { + pokemon: 'Spinarak', + primaryColor: '#A4D08C', + secondaryColor: '#F6DA8C', + verified: true + }, + 170: { + pokemon: 'Chinchou', + primaryColor: '#728ABD', + secondaryColor: '#EEDC9D', + verified: true + }, + 175: { + pokemon: 'Togepi', + primaryColor: '#EADEB2', + secondaryColor: '#BDC4CE', + verified: true + }, + 177: { + pokemon: 'Natu', + primaryColor: '#85BD57', + secondaryColor: '#E9CA67', + verified: true + }, + 179: { + pokemon: 'Mareep', + primaryColor: '#F2E5C2', + secondaryColor: '#5A84B1', + verified: true + }, + 183: { + pokemon: 'Marill', + primaryColor: '#52B3E4', + secondaryColor: '#E1F4F6', + verified: true + }, + 185: { + pokemon: 'Sudowoodo', + primaryColor: '#AE9F85', + secondaryColor: '#88AB72', + verified: true + }, + 187: { + pokemon: 'Hoppip', + primaryColor: '#EB92A8', + secondaryColor: '#A8CF86', + verified: true + }, + 190: { + pokemon: 'Aipom', + primaryColor: '#BA9DB7', + secondaryColor: '#DBC4B1', + verified: true + }, + 191: { + pokemon: 'Sunkern', + primaryColor: '#EAD887', + secondaryColor: '#83B177', + verified: true + }, + 193: { + pokemon: 'Yanma', + primaryColor: '#BC836F', + secondaryColor: '#A6AD72', + verified: true + }, + 194: { + pokemon: 'Wooper', + primaryColor: '#97C3DA', + secondaryColor: '#B593A0', + verified: true + }, + 198: { + pokemon: 'Murkrow', + primaryColor: '#3B5670', + secondaryColor: '#F0D3A4', + verified: true + }, + 200: { + pokemon: 'Misdreavus', + primaryColor: '#8994A0', + secondaryColor: '#B97F85', + verified: true + }, + 201: { + pokemon: 'Unown', + primaryColor: '#51626E', + secondaryColor: '#CED6E0', + verified: true + }, + 202: { + pokemon: 'Wobbuffet', + primaryColor: '#54ADC9', + secondaryColor: '#2E2F33', + verified: true + }, + 203: { + pokemon: 'Girafarig', + primaryColor: '#E7AB3D', + secondaryColor: '#39281F', + verified: true + }, + 204: { + pokemon: 'Pineco', + primaryColor: '#1A4146', + secondaryColor: '#8FABA0', + verified: true + }, + 206: { + pokemon: 'Dunsparce', + primaryColor: '#F2DF93', + secondaryColor: '#4B908C', + verified: true + }, + 207: { + pokemon: 'Gligar', + primaryColor: '#D18EB2', + secondaryColor: '#598ABC', + verified: true + }, + 209: { + pokemon: 'Snubbull', + primaryColor: '#E78C96', + secondaryColor: '#3B2F2D', + verified: true + }, + 211: { + pokemon: 'Qwilfish', + primaryColor: '#4A7471', + secondaryColor: '#E5EAB4', + verified: true + }, + 213: { + pokemon: 'Shuckle', + primaryColor: '#942D2B', + secondaryColor: '#F5CF6C', + verified: true + }, + 214: { + pokemon: 'Heracross', + primaryColor: '#2B5978', + secondaryColor: '#93AFC1', + verified: true + }, + 215: { + pokemon: 'Sneasel', + primaryColor: '#5F8795', + secondaryColor: '#D76B68', + verified: true + }, + 216: { + pokemon: 'Teddiursa', + primaryColor: '#E09659', + secondaryColor: '#FBE699', + verified: true + }, + 218: { + pokemon: 'Slugma', + primaryColor: '#E69881', + secondaryColor: '#F4CC94', + verified: true + }, + 220: { + pokemon: 'Swinub', + primaryColor: '#B28B73', + secondaryColor: '#D88C89', + verified: true + }, + 222: { + pokemon: 'Corsola', + primaryColor: '#e697a2', + secondaryColor: '#ccd5db', + verified: true + }, + 223: { + pokemon: 'Remoraid', + primaryColor: '#AEC8B7', + secondaryColor: '#709687', + verified: true + }, + 225: { + pokemon: 'Delibird', + primaryColor: '#FFFFFF', + secondaryColor: '#000000', + verified: false + }, + 226: { + pokemon: 'Mantine', + primaryColor: '#425161', + secondaryColor: '#EDDEE8', + verified: true + }, + 227: { + pokemon: 'Skarmory', + primaryColor: '#D2D9E9', + secondaryColor: '#923A3B', + verified: true + }, + 228: { + pokemon: 'Houndour', + primaryColor: '#867770', + secondaryColor: '#B5816C', + verified: true + }, + 231: { + pokemon: 'Phanpy', + primaryColor: '#9CCFCF', + secondaryColor: '#D06D52', + verified: true + }, + 234: { + pokemon: 'Stantler', + primaryColor: '#BB9780', + secondaryColor: '#EDDE9A', + verified: true + }, + 235: { + pokemon: 'Smeargle', + primaryColor: '#FFFFFF', + secondaryColor: '#000000', + verified: true + }, + 236: { + pokemon: 'Tyrogue', + primaryColor: '#D7C1D0', + secondaryColor: '#926E4A', + verified: true + }, + 241: { + pokemon: 'Miltank', + primaryColor: '#F1BABE', + secondaryColor: '#EEE0B7', + verified: true + }, + 243: { + pokemon: 'Raikou', + primaryColor: '#FFFFFF', + secondaryColor: '#000000', + verified: false + }, + 244: { + pokemon: 'Entei', + primaryColor: '#FFFFFF', + secondaryColor: '#000000', + verified: false + }, + 245: { + pokemon: 'Suicune', + primaryColor: '#FFFFFF', + secondaryColor: '#000000', + verified: false + }, + 246: { + pokemon: 'Larvitar', + primaryColor: '#B5BF96', + secondaryColor: '#595755', + verified: true + }, + 249: { + pokemon: 'Lugia', + primaryColor: '#FFFFFF', + secondaryColor: '#000000', + verified: false + }, + 250: { + pokemon: 'Ho-oh', + primaryColor: '#FFFFFF', + secondaryColor: '#000000', + verified: false + }, + 251: { + pokemon: 'Celebi', + primaryColor: '#FFFFFF', + secondaryColor: '#000000', + verified: false + } +} + function getLevel(cpMultiplier) { let level @@ -385,6 +1174,10 @@ const utils = { return FORMS[form] }, + getCandyColor(id) { + return candyColors[id] + }, + capitalize, } From 842ea4aacbf25540ed0bdb567730805ddce9e7d8 Mon Sep 17 00:00:00 2001 From: Nestor Vera Date: Wed, 26 Apr 2017 17:17:51 +0200 Subject: [PATCH 4/5] Add support for family candy in modal view --- app/app.global.css | 9 +- app/screens/Detail/components/ModalBody.js | 108 ++++++++++++++++++++- 2 files changed, 112 insertions(+), 5 deletions(-) diff --git a/app/app.global.css b/app/app.global.css index 0a690c9..5e0ebee 100644 --- a/app/app.global.css +++ b/app/app.global.css @@ -551,10 +551,15 @@ color: #3c605c; #pokemon_candy_icon { height: 24px; - width: auto; + width: 24px; position: relative; - top: -2px; + bottom: -6px; margin-right: 4px; + display: inline-block; +} + +#pokemon_candy_icon canvas { + max-width: 24px; } #pokemon_evolve_info { diff --git a/app/screens/Detail/components/ModalBody.js b/app/screens/Detail/components/ModalBody.js index a350eda..d62f8ca 100644 --- a/app/screens/Detail/components/ModalBody.js +++ b/app/screens/Detail/components/ModalBody.js @@ -121,12 +121,13 @@ class ModalBody extends React.Component {
- Candy Icon + > + {this.handleCandyIcon(pokemon)} +
{candies}
{`${utils.getName(pokemon.family_id)} Candy`}
@@ -180,6 +181,107 @@ class ModalBody extends React.Component { } return imgPath } + + handleCandyIcon = (pokemon) => { + // http://rmkane.com/experiment/pokemon/candy/index.html + let imagesLoaded = 0 + + const WIDTH = 256 + const HEIGHT = 256 + const IMAGES = { + primaryColor: { + src: './imgs/candy/candy_base_color.png', + obj: null + }, + secondaryColor: { + src: './imgs/candy/candy_secondary_color.png', + obj: null + }, + highlight: { + src: './imgs/candy/candy_highlight.png', + obj: null + } + } + const COLORS = [utils.getCandyColor(pokemon.family_id)] + + function render(record, targetSelector) { + const layer = [ + createLayer(WIDTH, HEIGHT), + createLayer(WIDTH, HEIGHT), + createLayer(WIDTH, HEIGHT), + ] + + layer[0].drawImage(IMAGES.primaryColor.obj, 0, 0) + applyColorMask(layer[0], COLORS[0].primaryColor) + + layer[1].drawImage(IMAGES.secondaryColor.obj, 0, 0) + applyColorMask(layer[1], COLORS[0].secondaryColor) + + layer[0].drawImage(layer[1].canvas, 0, 0) + layer[0].drawImage(IMAGES.highlight.obj, 0, 0) + + const canvas = layer[0].canvas + document.getElementById(targetSelector).appendChild(canvas) + } + + function loadImages(images, callback) { + const keys = Object.keys(images) + for (let index = 0; index < keys.length; index++) { + loadImage(images[keys[index]], callback) + } + } + + function loadImage(image, callback) { + image.obj = new Image() + image.obj.onload = () => { + if (imagesLoaded++ >= Object.keys(IMAGES).length - 1) { + callback() + } + } + image.obj.src = image.src + } + + function createLayer(width, height) { + const layer = document.createElement('canvas') + layer.className = 'layer' + layer.width = width + layer.height = height || width + return layer.getContext('2d') + } + + function applyColorMask(ctx, color) { + if (color.indexOf('#') !== 0) color = `# ${color}` + const rgba = hexToRgbA(color) + const imgData = ctx.getImageData(0, 0, WIDTH, HEIGHT) + for (let byte = 0; byte < imgData.data.length; byte += 4) { + for (let p = 0; p < 4; p++) { + imgData.data[byte + p] = rgba[p] * (imgData.data[byte + p] / 255) + } + } + ctx.putImageData(imgData, 0, 0) + } + + function hexToRgbA(hex) { + if (/^#([A-F0-9]{3}){1,2}$/i.test(hex)) { + let c = hex.substring(1).split('') + if (c.length === 3) { + c = [c[0], c[0], c[1], c[1], c[2], c[2]] + } + c = parseInt(c.join(''), 16) + return [(c >> 16) & 0xFF, (c >> 8) & 0xFF, c & 0xFF, 0xFF] + } + } + + function onLoad(records) { + records.forEach(record => { + render(record, 'pokemon_candy_icon') + }) + } + + loadImages(IMAGES, () => { + onLoad(COLORS) + }) + } } export default ModalBody From 1f298dfdea3a1439f81a174a47aef94aad9f2599 Mon Sep 17 00:00:00 2001 From: Nestor Vera Date: Wed, 26 Apr 2017 17:33:52 +0200 Subject: [PATCH 5/5] Add credits to README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 0445228..cc88dfe 100644 --- a/README.md +++ b/README.md @@ -82,6 +82,7 @@ The API Hashing service is a paid service that allows third party Pokémon GO de * [cyraxx](https://github.com/cyraxx) for [pogobuf](https://github.com/cyraxx/pogobuf) and [node-pogo-protos](https://github.com/cyraxx/node-pogo-protos) * [AeonLucid](https://github.com/AeonLucid) for [POGOProtos](https://github.com/AeonLucid/POGOProtos) * [PkParaíso](https://www.pkparaiso.com) for the [animated sprites](https://www.pkparaiso.com/xy/sprites_pokemon.php), licensed under [CC BY-NC-ND 3.0](https://creativecommons.org/licenses/by-nc-nd/3.0/) +* [Ryan Kane](https://github.com/ryankane) for the [candy images and colors](http://rmkane.com/experiment/pokemon/candy/) ## Legal This Project is in no way affiliated with, authorized, maintained, sponsored or endorsed by Niantic, The Pokémon Company, Nintendo or any of its affiliates or subsidiaries. This is an independent and unofficial API for educational use ONLY. Using the Project might be against the TOS