$(document).ready(function() { /****** Generations ******/ var G1 = [1, 151]; var G2 = [152, 251]; var G3 = [252, 386]; var G4 = [387, 493]; var G5 = [494, 649]; var G6 = [650, 721]; var G7 = [722, 809]; var G8 = [810, 905]; var G9 = [906, 1025]; var MEGA = [1026, 1075]; var GIGA = [1076, 1107]; var REG = [1108, 1162]; var gen_number = 9; var extra_number = 3; // mega, giga, reg /************ GAME *************/ /*******************************/ // loading json file $.getJSON('pokemon.json', function(pk) { $('article #container #game #loading').hide(); var pklist = pk; $('article #container #flashdex_config .all').click(function() { if ($(this).hasClass("unselected")) { for (i = 1; i < 10; ++i) $('input[name="'+i+'g"]').prop('checked', true); $('input[name="mega"]').prop('checked', true); $('input[name="regional"]').prop('checked', true); $('input[name="gigantamax"]').prop('checked', true); $(this).removeClass("unselected").addClass("selected"); $(this).text("Unselect all"); } else { for (i = 1; i < 10; ++i) $('input[name="'+i+'g"]').prop('checked', false); $('input[name="mega"]').prop('checked', false); $('input[name="regional"]').prop('checked', false); $('input[name="gigantamax"]').prop('checked', false); $(this).removeClass("selected").addClass("unselected"); $(this).text("Select all"); } }) $('article #container .button input.start').click(function() { var lang = $('article select.lang option:selected').attr('id'); var gen_list = new Array(); var pokemon_generation_list = new Array(); generations(); if (gen_list.length == 0) return; setUrlSearch(); $('article #container #game #loading').show(); $('article #container #game #flashdex').empty().hide(); function setUrlSearch() { gen = ''; if (gen_list.length < (gen_number + extra_number)) { for (i in gen_list) gen += gen_list[i].substring(0,1); } else gen += "all"; window.history.replaceState(null, null, "?gen=" + gen + "&lang=" + lang); localStorage.setItem('lang', lang); } function getFormText(pkmn) { if (pkmn["origin"] == "Kanto") return '' else if (pkmn["origin"] == "Johto") return '' else if (pkmn["origin"] == "Hoenn") return '' else if (pkmn["origin"] == "Sinnoh") return '' else if (pkmn["origin"] == "Unova") return '' else if (pkmn["origin"] == "Kalos") return '' else if (pkmn["origin"] == "Alola") return '' else if (pkmn["origin"] == "Galar") return '' else if (pkmn["origin"] == "Hisui") return '' else if (pkmn["origin"] == "Paldea") return '' else if (pkmn["form"] == "mega") return ''; else if (pkmn["form"] == "giga") return ''; return ''; } function getFormattedNumber(num) { if (num[0] == 'M' || num[0] == 'R' || num[0] == 'G') return num.substring(1, num.length); return num; } function getFormattedTypes(num) { str = ''+num["type"][0]+''; if (num["type"][1]) str += ''+num["type"][1]+''; str += ''; return str; } function getFormattedTypes(num, index) { str = ''+num["type"+index][0]+''; if (num["type"+index][1]) str += ''+num["type"+index][1]+''; return str; } function getFormattedSpriteButton(num) { if (num["sprite"] || num["origin"] == "Kanto") return '◀︎▶︎'; return ''; } for (i in pokemon_generation_list) { $('article #container #game #flashdex').append( '
' + '' + getFormattedTypes(pklist.mn[pokemon_generation_list[i]], '') + '' + getFormattedSpriteButton(pklist.mn[pokemon_generation_list[i]], '') + getFormText(pklist.mn[pokemon_generation_list[i]]) // either gigantamax or mega-evolution + '' + '' + '' + '#' + getFormattedNumber(pklist.mn[[pokemon_generation_list[i]]]["num"]) + ' ' + pklist.mn[[pokemon_generation_list[i]]][lang] + '' + '
' ); } $('article #container #game #flashdex').waitForImages(function() { $(this).show(); $('article #container #game #loading').hide(); }); function handleArtworks(origin, left) { function handleDefault() { var form = url.split('-')[1]; if (left) { if (form > 0) form--; else form = pklist.mn[pokemon]["sprite"] - 1; } else { if (form < pklist.mn[pokemon]["sprite"] - 1) form++; else form = 0; } var newUrl = 'pokemon/' + pokemonUrl + '-' + form + '.png'; origin.parent().parent().find("img").attr('src', newUrl); handleChangeType(form, pokemon); } function handleKanto() { var KantoForm = ''; for (var i = 0; i < originalUrl.length; i++) { if (originalUrl[i].match(/[A-Z]/)) KantoForm += originalUrl[i]; } if (left) { if (KantoForm == "RG") KantoForm = "RB"; else if (KantoForm == "RB") KantoForm = ""; else KantoForm = "RG"; } else { if (KantoForm == "RB") KantoForm = "RG"; else if (KantoForm == "RG") KantoForm = ""; else KantoForm = "RB"; } if (KantoForm) KantoForm = "-" + KantoForm; var newUrl = 'pokemon/' + pokemonUrl + KantoForm + '.png'; origin.parent().parent().find("img").attr('src', newUrl); } function handleChangeType(form, num) { if (form != 0) { if (pklist.mn[num]["type"+form]) origin.parent().parent().find(".types").empty().append(getFormattedTypes(pklist.mn[num], form)); } else origin.parent().parent().find(".types").empty().append(getFormattedTypes(pklist.mn[num], '')); } var url = origin.parent().parent().find("img").attr('src'); var originalUrl = url; url = url.split('/')[1]; url = url.split('.')[0]; var pokemonUrl = url.split('-')[0]; var pokemon = pklist.mn.findIndex(function(item, i) { return item.num == pokemonUrl; }); if (pklist.mn[pokemon]["origin"] == "Kanto" && !pklist.mn[pokemon]["sprite"]) handleKanto(); else if (pklist.mn[pokemon]["sprite"]) handleDefault(); } $('.left-arrow').click(function(e) { handleArtworks($(this), true); }); $('.right-arrow').click(function(e) { handleArtworks($(this), false); }); function generations() { // create the list of the different generations function createGenerationList(name) { if ( $('article input[name="'+name+'"]').is(':checked') ) gen_list[gen_list.length] = name; } // create the list of all possible pokemons for selected options function generatePokemonList() { function evaluateByGeneration(index, name, variable) { if (gen_list[index] == name) { for (j = (variable[0] - 1); j <= (variable[1] - 1); j++) pokemon_generation_list[pokemon_generation_list.length] = j; } } if (gen_list.length > 0) { for (i in gen_list) { evaluateByGeneration(i, "1g", G1); evaluateByGeneration(i, "2g", G2); evaluateByGeneration(i, "3g", G3); evaluateByGeneration(i, "4g", G4); evaluateByGeneration(i, "5g", G5); evaluateByGeneration(i, "6g", G6); evaluateByGeneration(i, "7g", G7); evaluateByGeneration(i, "8g", G8); evaluateByGeneration(i, "9g", G9); evaluateByGeneration(i, "mega", MEGA); evaluateByGeneration(i, "regional", REG); evaluateByGeneration(i, "gigantamax", GIGA); } } } for (i = 0; i < 10; i++) createGenerationList((i + "g")); createGenerationList("regional"); createGenerationList("mega"); createGenerationList("gigantamax"); generatePokemonList(); } // multiple artworks function imageType(num) { if (num["sprite"]) return num["num"] + "-0"; return num["num"]; } }); }); });