mirror of
https://github.com/setube/ogame-vue-ts.git
synced 2026-05-11 23:45:11 +08:00
重构并精简了部分UI组件,移除冗余弹窗与详情组件,新增NPC相关逻辑(npcBehaviorLogic、npcGrowthLogic、npcStore等)及外交逻辑(diplomaticLogic、DiplomacyView)。完善分页、标签、复选框等通用UI组件。优化战报弹窗,调整README下载链接为相对路径,修复部分国际化内容。
1 line
7.1 KiB
JavaScript
1 line
7.1 KiB
JavaScript
import{$t as e,En as t,Gn as n,Ln as r,Qt as i,Xn as a,Xt as o,Yt as s,Zt as ee,en as c,mn as l,tn as u,vn as te}from"./game-logic-Bi1l7y4K.js";import"./vendor-pinia-DqhKuBjp.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-Dr0JspcV.js";import{n as d}from"./vendor-others-DTUzJ7S-.js";import"./vendor-reka-ui-BEHIKScj.js";import{t as f}from"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CJcfYqoW.js";import{R as ne,T as re,b as ie,i as p,s as m,y as ae,z as oe}from"./vendor-icons-z9V6Jdbh.js";import{t as h}from"./CardDescription-BSLS07AU.js";import{J as g,K as se,W as _,_ as v,a as ce,b as y,c as b,i as x,l as S,o as C,q as w,r as T,s as E,u as D,v as O,y as k}from"./index-BT5w6et-.js";var A=f(),j={class:`container mx-auto p-4 sm:p-6 space-y-6`},M={class:`flex items-center justify-between`},N={class:`text-2xl font-bold`},P={class:`flex items-center justify-between p-4 border rounded-lg`},F={class:`space-y-1`},I={class:`font-medium`},L={class:`text-sm text-muted-foreground`},R={class:`flex items-center justify-between p-4 border rounded-lg`},z={class:`space-y-1`},B={class:`font-medium`},V={class:`text-sm text-muted-foreground`},H={class:`flex gap-2`},U={class:`flex items-center justify-between p-4 border rounded-lg border-destructive/50`},W={class:`space-y-1`},G={class:`font-medium text-destructive`},le={class:`text-sm text-muted-foreground`},ue={class:`flex items-center justify-between p-4 border rounded-lg`},de={class:`space-y-1`},fe={class:`font-medium`},pe={class:`text-sm text-muted-foreground`},me={class:`space-y-2`},he={class:`flex items-center justify-between text-sm`},ge={class:`text-muted-foreground`},_e={class:`font-medium`},ve={class:`flex items-center justify-between text-sm`},ye={class:`text-muted-foreground`},be={class:`font-medium`},xe={class:`pt-2 border-t space-y-2`},Se={class:`text-sm font-medium`},Ce={class:`flex flex-col gap-2`},we={class:`ml-auto text-xs text-muted-foreground`},K=u({__name:`SettingsView`,setup(u){let{t:f}=se(),K=w(),q=r(),J=r(!1),Y=r(!1),X=r(``),Z=r(``),Q=null,Te=()=>{window.open(`https://github.com/${g.author.name}/${g.name}`,`_blank`)},Ee=()=>{window.open(`https://qm.qq.com/q/${g.id}`,`_blank`)},De=async()=>{try{J.value=!0;let e=localStorage.getItem(g.name),t=localStorage.getItem(`${g.name}-universe`),n=localStorage.getItem(`${g.name}-npcs`);if(!e){d.error(f(`settings.exportFailed`));return}let r={game:e,npcs:n,universe:t||null},i=`${g.name}-${new Date().toISOString().slice(0,10)}-${Date.now()}.json`,a=JSON.stringify(r,null,2);(0,A.saveAs)(new Blob([a],{type:`application/json`}),i),d.success(f(`settings.exportSuccess`))}catch(e){console.error(`Export failed:`,e),d.error(f(`settings.exportFailed`))}finally{J.value=!1}},Oe=()=>{q.value?.click()},ke=e=>{let t=e.target.files?.[0];t&&(X.value=f(`settings.importConfirmTitle`),Z.value=f(`settings.importConfirmMessage`),Y.value=!0,K.isPaused=!0,Q=()=>Ae(t))},Ae=async e=>{try{let t=new FileReader;t.onload=e=>{try{let t=e.target?.result;if(typeof t==`string`){let e=JSON.parse(t);if(typeof e==`string`||!e.game){localStorage.setItem(g.name,t),d.success(f(`settings.importSuccess`)),setTimeout(()=>window.location.reload(),1e3);return}e.game&&localStorage.setItem(g.name,e.game),e.universe&&localStorage.setItem(`${g.name}-universe`,e.universe),e.npcs&&localStorage.setItem(`${g.name}-npcs`,e.npcs),d.success(f(`settings.importSuccess`)),setTimeout(()=>window.location.reload(),1e3)}else d.error(f(`settings.importFailed`))}catch(e){let t=e instanceof Error?e.message:String(e);d.error(f(`settings.importFailed`)+`: `+t)}},t.readAsText(e)}catch(e){console.error(`Import failed:`,e),d.error(f(`settings.importFailed`))}},$=()=>{X.value=f(`settings.clearConfirmTitle`),Z.value=f(`settings.clearConfirmMessage`),Y.value=!0,Q=je},je=()=>{localStorage.clear(),window.location.reload()},Me=()=>{K.isPaused=!K.isPaused,K.isPaused?d.info(f(`settings.gamePaused`)):d.success(f(`settings.gameResumed`))},Ne=()=>{Q&&=(Q(),null),Y.value=!1},Pe=()=>{K.isPaused=!1,Q=null,Y.value=!1,q.value&&(q.value.value=``)};return(r,u)=>(l(),i(`div`,j,[s(`div`,M,[s(`h1`,N,a(n(f)(`nav.settings`)),1)]),c(n(y),null,{default:t(()=>[c(n(O),null,{default:t(()=>[c(n(v),null,{default:t(()=>[e(a(n(f)(`settings.dataManagement`)),1)]),_:1}),c(n(h),null,{default:t(()=>[e(a(n(f)(`settings.dataManagementDesc`)),1)]),_:1})]),_:1}),c(n(k),{class:`space-y-4`},{default:t(()=>[s(`div`,P,[s(`div`,F,[s(`h3`,I,a(n(f)(`settings.exportData`)),1),s(`p`,L,a(n(f)(`settings.exportDataDesc`)),1)]),c(n(_),{onClick:De,disabled:J.value},{default:t(()=>[c(n(oe),{class:`mr-2 h-4 w-4`}),e(` `+a(J.value?n(f)(`settings.exporting`):n(f)(`settings.export`)),1)]),_:1},8,[`disabled`])]),s(`div`,R,[s(`div`,z,[s(`h3`,B,a(n(f)(`settings.importData`)),1),s(`p`,V,a(n(f)(`settings.importDataDesc`)),1)]),s(`div`,H,[s(`input`,{ref_key:`fileInputRef`,ref:q,type:`file`,accept:`.json`,class:`hidden`,onChange:ke},null,544),c(n(_),{onClick:Oe,variant:`outline`},{default:t(()=>[c(n(p),{class:`mr-2 h-4 w-4`}),e(` `+a(n(f)(`settings.selectFile`)),1)]),_:1})])]),s(`div`,U,[s(`div`,W,[s(`h3`,G,a(n(f)(`settings.clearData`)),1),s(`p`,le,a(n(f)(`settings.clearDataDesc`)),1)]),c(n(_),{onClick:$,variant:`destructive`},{default:t(()=>[c(n(m),{class:`mr-2 h-4 w-4`}),e(` `+a(n(f)(`settings.clear`)),1)]),_:1})])]),_:1})]),_:1}),c(n(y),null,{default:t(()=>[c(n(O),null,{default:t(()=>[c(n(v),null,{default:t(()=>[e(a(n(f)(`settings.gameSettings`)),1)]),_:1}),c(n(h),null,{default:t(()=>[e(a(n(f)(`settings.gameSettingsDesc`)),1)]),_:1})]),_:1}),c(n(k),{class:`space-y-4`},{default:t(()=>[s(`div`,ue,[s(`div`,de,[s(`h3`,fe,a(n(f)(`settings.gamePause`)),1),s(`p`,pe,a(n(f)(`settings.gamePauseDesc`)),1)]),c(n(_),{onClick:Me,variant:n(K).isPaused?`default`:`outline`},{default:t(()=>[(l(),o(te(n(K).isPaused?n(ae):n(ie)),{class:`mr-2 h-4 w-4`})),e(` `+a(n(K).isPaused?n(f)(`settings.resume`):n(f)(`settings.pause`)),1)]),_:1},8,[`variant`])])]),_:1})]),_:1}),c(n(y),null,{default:t(()=>[c(n(O),null,{default:t(()=>[c(n(v),null,{default:t(()=>[e(a(n(f)(`settings.about`)),1)]),_:1})]),_:1}),c(n(k),{class:`space-y-4`},{default:t(()=>[s(`div`,me,[s(`div`,he,[s(`span`,ge,a(n(f)(`settings.version`))+`:`,1),s(`span`,_e,a(n(g).version),1)]),s(`div`,ve,[s(`span`,ye,a(n(f)(`settings.buildDate`))+`:`,1),s(`span`,be,a(n(g).buildDate),1)])]),s(`div`,xe,[s(`h3`,Se,a(n(f)(`settings.community`)),1),s(`div`,Ce,[c(n(_),{variant:`outline`,class:`w-full justify-start`,onClick:Te},{default:t(()=>[c(n(ne),{class:`mr-2 h-4 w-4`}),e(` `+a(n(f)(`settings.github`)),1)]),_:1}),n(K).locale===`zh-CN`||n(K).locale===`zh-TW`?(l(),o(n(_),{key:0,variant:`outline`,class:`w-full justify-start`,onClick:Ee},{default:t(()=>[c(n(re),{class:`mr-2 h-4 w-4`}),e(` `+a(n(f)(`settings.qqGroup`))+` `,1),s(`span`,we,a(n(g).qq),1)]),_:1})):ee(``,!0)])])]),_:1})]),_:1}),c(n(D),{open:Y.value,"onUpdate:open":u[0]||=e=>Y.value=e},{default:t(()=>[c(n(E),null,{default:t(()=>[c(n(x),null,{default:t(()=>[c(n(T),null,{default:t(()=>[e(a(X.value),1)]),_:1}),c(n(C),null,{default:t(()=>[e(a(Z.value),1)]),_:1})]),_:1}),c(n(ce),null,{default:t(()=>[c(n(b),{onClick:Pe},{default:t(()=>[e(a(n(f)(`common.cancel`)),1)]),_:1}),c(n(S),{onClick:Ne},{default:t(()=>[e(a(n(f)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{K as default}; |