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/mapCoordsPicker.js

1 line
5.3 KiB
JavaScript

!function(){function e(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function t(t){for(var r=1;r<arguments.length;r++){var o=null!=arguments[r]?arguments[r]:{},n=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(o).filter((function(e){return Object.getOwnPropertyDescriptor(o,e).enumerable})))),n.forEach((function(r){e(t,r,o[r])}))}return t}const r={pl_PL:{startCoordsPicker:"Uruchom zbieracza koordynat",stopCoordsPicker:"Zatrzymaj zbieracza koordynat",exportedVillages:"Wyeksportowane wioski",cannotDeleteSelectedGroup:"Nie można usunąć wybranej grupy!",select:"Wybierz",delete:"Usuń",add:"Dodaj",save:"Zapisz",groupName:"Nazwa grupy",export:"Eksport"},en_DK:{startCoordsPicker:"Start coords picker",stopCoordsPicker:"Stop coords picker",exportedVillages:"Exported villages",cannotDeleteSelectedGroup:"Cannot delete selected group!",select:"Select",delete:"Delete",add:"Add",save:"Save",groupName:"Group name",export:"Export"},de_DE:{startCoordsPicker:"Starte Koordinaten-Selektor",stopCoordsPicker:"Stoppe Koordinaten-Selektor",exportedVillages:"Exportierte Dörfer",cannotDeleteSelectedGroup:"Gruppe kann nicht gelöscht werden!",select:"Selektieren",delete:"Löschen",add:"Hinzufügen",save:"Speichern",groupName:"Gruppen-Name",export:"Exportieren"}};const o="kichiyaki_map_coords_picker",n=document.querySelector("#content_value > h2");let a,l,s,p,c=((e,t={})=>{const r=localStorage.getItem(e);let o=t;return r&&(o=JSON.parse(r)),o})(o,{started:!1,groups:{All:{villages:[],color:"#ffffff"}},selectedGroup:"All"});const i=r[window.game_data.locale]||r.en_DK,u=()=>{var e,t;e=o,t=c,localStorage.setItem(e,JSON.stringify(t))},d=(e,t)=>{const r=parseInt(`${e}${t}`,10),o=TWMap.villages[r];return o?o.id:NaN},g=(e,t,r="transparent")=>{const o=document.querySelector("#map_village_"+d(e,t));o&&(o.style.boxSizing="border-box",o.style.border="transparent"!==r?`5px solid ${r}`:"none")},m=(e,t="")=>{c.groups[e].villages.forEach((r=>{g(r.x,r.y,t||c.groups[e].color)}))},v=(e="")=>{for(let t in c.groups)m(t,e)},f=(e,t,r)=>{if(r.preventDefault(),isNaN(d(e,t)))return;const o=`${e}|${t}`;if(c.groups[c.selectedGroup].villages.some((e=>e.key===o)))return c.groups[c.selectedGroup].villages=c.groups[c.selectedGroup].villages.filter((e=>e.key!==o)),void g(e,t,"transparent");c.groups[c.selectedGroup].villages=[...c.groups[c.selectedGroup].villages,{x:e,y:t,key:o}],g(e,t,c.groups[c.selectedGroup].color),(e=>{for(let t in c.groups){if(t===c.selectedGroup)return;c.groups[t].villages=c.groups[t].villages.filter((t=>t.key!==e))}})(o)},y=(e,r)=>{const o=r&&r.name!==c.selectedGroup,n=`\n <input type="color" value="${r?r.color:""}" required />\n <input type="text" required placeholder="${i.groupName}" value="${r?r.name:""}" />\n <button type="submit">${r?i.save:i.add}</button>\n ${r?`<button type="button">${i.delete}</button>`:""}\n ${o?`<button class="selectButton" type="button">${i.select}</button>`:""}\n `,a=document.createElement("form");if(a.innerHTML=n,a.addEventListener("submit",(e=>{e.preventDefault(),r?(r.name===c.selectedGroup&&(c.selectedGroup=e.target[1].value),m(r.name,e.target[0].value),c.groups[e.target[1].value]=t({},c.groups[r.name],{color:e.target[0].value}),r.name!==e.target[1].value&&delete c.groups[r.name]):c.groups[e.target[1].value]={color:e.target[0].value,villages:[]},k()})),r){a.querySelector('button[type="button"]').addEventListener("click",(()=>{if(c.selectedGroup===r.name)return UI.ErrorMessage(i.cannotDeleteSelectedGroup);m(r.name,"transparent"),delete c.groups[r.name],a.remove()}));const e=a.querySelector(".selectButton");e&&e.addEventListener("click",(e=>{c.selectedGroup=r.name,k()}))}e.appendChild(a)},k=()=>{l.innerHTML="";for(let e in c.groups)y(l,t({},c.groups[e],{name:e}));y(l)},b=()=>{const e=[];for(let t in c.groups)e.push(`<div style="margin-bottom: 30px;">\n <h3>${t}</h3>\n <textarea cols=30 rows=8 readonly>${c.groups[t].villages.map((e=>e.key)).join(" ").trim()}</textarea>\n </div>`);const t=`\n ${e.join("")}\n `;Dialog.show(i.exportedVillages,t)},S=(e,t)=>{TWMap.mapHandler.__spawnSector(e,t),v()},h=()=>{TWMap.map.handler.__onClick=TWMap.map.handler.onClick,TWMap.map.handler.onClick=f,TWMap.mapHandler.__spawnSector=TWMap.map.handler.spawnSector,TWMap.mapHandler.spawnSector=S,a.innerHTML=i.stopCoordsPicker,(()=>{const e=document.createElement("button");e.innerHTML=i.export,e.addEventListener("click",b),s.appendChild(e)})(),v(),k(),p=setInterval(u,500)},_=()=>{c.started?(()=>{"function"==typeof TWMap.map.handler.__onClick&&(TWMap.map.handler.onClick=TWMap.map.handler.__onClick),"function"==typeof TWMap.map.handler.__spawnSector&&(TWMap.mapHandler.spawnSector=TWMap.map.handler.__spawnSector),a.innerHTML=i.startCoordsPicker,l.innerHTML="",s.innerHTML="",v("transparent"),p&&clearInterval(p);for(let e in c.groups)c.groups[e].villages=[]})():h(),c.started=!c.started,u()};!function(){try{a=document.createElement("button"),a.style.marginLeft="5px",a.innerHTML=c.started?i.stopCoordsPicker:i.startCoordsPicker,a.addEventListener("click",_),n.appendChild(a),l=document.createElement("div"),n.parentElement.insertBefore(l,n.nextSibling),s=document.createElement("div"),n.parentElement.insertBefore(s,n.nextSibling),c.started&&h()}catch(e){console.log("Map Coords Picker",e)}}()}();