This repository has been archived on 2023-01-26. You can view files and clone it, but cannot push or open issues or pull requests.
scripts-old/dist/quickbar/bonusBarbarianVillageFinder.js

1 line
4.0 KiB
JavaScript

!function(){function e(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}var n=({query:e,variables:n={}}={})=>fetch("https://api.tribalwarshelp.com/graphql",{method:"POST",body:JSON.stringify({query:e,variables:n}),headers:{"Content-Type":"application/json"}}).then((e=>e.json())).then((({data:e,errors:n})=>{if(n&&Array.isArray(n)&&n.length>0)throw new Error(n[0].message);return new Promise((n=>n(e)))}));const t={pl_PL:{actualCoords:"Aktualne koordynaty",searchBonusBarbarianVillages:"Wyszukaj koczownicze",village:"Wioska",distance:"Dystans",action:"Akcja",center:"Wycentruj"},en_DK:{actualCoords:"Actual coords",searchBonusBarbarianVillages:"Search bonus barbarian villages",village:"Village",distance:"Distance",action:"Action",center:"Center"},de_DE:{actualCoords:"Aktuelle Koordinaten",searchBonusBarbarianVillages:"Suche Bonus-Barbarendörfer",village:"Dorf",distance:"Distanz",action:"Aktion",center:"Center"}};const r=(e,n,t,r)=>{const a=e-t,o=n-r;return Math.sqrt(a*a+o*o)},a=window.location.host.split(".")[0],o="bonusBarbarianVillageFinderTable",i=t[window.game_data.locale]||t.en_DK;let s;const l=(e,n)=>({query:"\n query villages($server: String!, $filter: VillageFilter, $sort: [String!], $offset: Int) {\n villages(server: $server, filter: $filter, offset: $offset, sort: $sort) {\n total\n items {\n id\n name\n bonus\n x\n y\n }\n }\n }\n",variables:{server:a,sort:["id DESC"],filter:{bonus:e,playerID:[0]},offset:n}}),c=async t=>{t.preventDefault();const a=await(async e=>{const{villages:t}=await n(l(e,0));for(let r=t.length;r<t.total;r+=1e3){const r=await n(l(e,0));t.items=[...t.items,...r.villages.items]}return t})(parseInt(t.target[0].value)),i=TWMap.pos;a.items=a.items.map((n=>function(n){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},a=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(a=a.concat(Object.getOwnPropertySymbols(r).filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable})))),a.forEach((function(t){e(n,t,r[t])}))}return n}({},n,{distance:r(i[0],i[1],n.x,n.y)}))).sort(((e,n)=>e.distance-n.distance)),document.querySelector("#"+o).innerHTML=u(a.items)},u=e=>`\n <tbody>\n <tr>\n <th>\n ${i.village}\n </th>\n <th>\n ${i.distance}\n </th>\n <th>\n ${i.action}\n </th>\n </tr>\n ${Array.isArray(e)?e.map((e=>{return`<tr>\n <td>\n <a href="${n=e.id,window.location.origin+TribalWars.buildURL("",{screen:"info_village",id:n})}">\n ${((e="",n=500,t=500)=>`${e} (${n}|${t}) ${"K"+String(t)[0]+String(n)[0]}`)(e.name,e.x,e.y)}\n </a>\n </td>\n <td>\n ${e.distance.toFixed(1)}\n </td>\n <td>\n <a href="#" onclick="return TWMap.focusUserSpecified(${e.x}, ${e.y})">${i.center}</a>\n </td>\n </tr>`;var n})).join(""):""}\n </tbody>\n `,d=()=>{document.querySelector("#actualCoords").innerHTML=`${i.actualCoords}: <strong>${TWMap.pos.join("|")}</strong>`};(()=>{const e=`\n <p id="actualCoords"></p>\n <form>\n <select>\n ${(()=>{let e=[];for(let n in TWMap.bonus_data)e.push({value:n,text:TWMap.bonus_data[n].text});return e})().map((e=>`<option value="${e.value}">${e.text}</option>`)).join("")}\n </select>\n <button type="submit">${i.searchBonusBarbarianVillages}</button>\n </form>\n <table class="vis" style="width: 100%;" id="bonusBarbarianVillageFinderTable">\n ${u()}\n </table>\n `;s||(s=document.createElement("div"),s.classList.add("containerBorder"),s.style.clear="both",document.querySelector("#map_big").appendChild(s)),s.innerHTML=e,s.querySelector("form").addEventListener("submit",c),d(),setInterval(d,1e3)})()}();