Files
ogame-vue-ts/docs/assets/GMView-DWcaM1NY.js
谦君 9b9fda0400 feat: 新增NPC与外交逻辑,优化UI组件结构
重构并精简了部分UI组件,移除冗余弹窗与详情组件,新增NPC相关逻辑(npcBehaviorLogic、npcGrowthLogic、npcStore等)及外交逻辑(diplomaticLogic、DiplomacyView)。完善分页、标签、复选框等通用UI组件。优化战报弹窗,调整README下载链接为相对路径,修复部分国际化内容。
2025-12-15 08:23:45 +08:00

1 line
14 KiB
JavaScript

import{$t as e,D as t,E as n,En as r,Gn as i,Gt as a,Jt as o,Ln as s,O as ee,Qt as c,T as te,Xn as l,Xt as u,Yt as d,Zt as f,en as p,gn as m,k as ne,mn as h,tn as re}from"./game-logic-Bi1l7y4K.js";import"./vendor-pinia-DqhKuBjp.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-Dr0JspcV.js";import"./vendor-others-DTUzJ7S-.js";import"./vendor-reka-ui-BEHIKScj.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CJcfYqoW.js";import"./vendor-icons-z9V6Jdbh.js";import{t as g}from"./CardDescription-BSLS07AU.js";import{_,d as ie,f as ae,h as v,v as oe}from"./game-config-CG6z6nnH.js";import{H as se,K as ce,L as y,W as b,_ as x,b as S,g as C,n as le,q as ue,t as de,v as w,y as T}from"./index-BT5w6et-.js";import{t as fe}from"./useGameConfig-b98LOtBY.js";import{a as E,i as D,n as O,r as k,t as A}from"./SelectValue-DmEWUfvu.js";var pe={class:`container mx-auto p-4 sm:p-6 space-y-4 sm:space-y-6`},me={class:`flex items-center justify-between`},he={class:`text-2xl sm:text-3xl font-bold`},ge={key:0,class:`flex flex-wrap gap-2 border-b`},_e={key:1,class:`space-y-4`},ve={class:`flex gap-2`},j={key:2,class:`space-y-4`},M={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},N={class:`flex gap-2`},P={key:3,class:`space-y-4`},F={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},ye={class:`flex gap-2`},be={key:4,class:`space-y-4`},xe={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},Se={class:`flex gap-2`},Ce={key:5,class:`space-y-4`},we={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},Te={class:`flex gap-2`},Ee={key:6,class:`space-y-4`},De={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},Oe={class:`flex gap-2`},ke={class:`space-y-2`},Ae={class:`space-y-2`},je={class:`grid grid-cols-2 gap-2`},I=re({__name:`GMView`,setup(re){let I=ue(),L=de(),Me=le(),{t:R}=ce(),{BUILDINGS:Ne,TECHNOLOGIES:Pe,SHIPS:Fe,DEFENSES:Ie,OFFICERS:Le}=fe(),z=s(I.player.planets[0]?.id||``),B=s(`resources`),V=s({}),H=s(L.npcs[0]?.id||``),U=s(`0`);Object.values(v).forEach(e=>{let t=I.player.officers[e];if(t&&t.expiresAt){let n=Math.ceil((t.expiresAt-Date.now())/(1e3*60*60*24));V.value[e]=Math.max(0,n)}else V.value[e]=0});let W=o(()=>I.player.planets.find(e=>e.id===z.value)),G=o(()=>L.npcs.find(e=>e.id===H.value)),K=o(()=>[...I.player.planets,...Object.values(Me.planets)]),Re=[`metal`,`crystal`,`deuterium`,`darkMatter`],ze=Object.values(ie),Be=Object.values(oe),Ve=Object.values(_),He=Object.values(ae),Ue=Object.values(v),We=[{value:`resources`,label:`gmView.resources`},{value:`buildings`,label:`gmView.buildings`},{value:`research`,label:`gmView.research`},{value:`ships`,label:`gmView.ships`},{value:`defense`,label:`gmView.defense`},{value:`officers`,label:`gmView.officers`}],q=(e,t)=>{W.value&&(W.value.resources[e]+=t)},J=(e,t)=>{W.value&&(W.value.buildings[e]=t)},Y=(e,t)=>{I.player.technologies[e]=t},X=(e,t)=>{W.value&&(W.value.fleet[e]=(W.value.fleet[e]||0)+t)},Z=(e,t)=>{W.value&&(W.value.defense[e]=(W.value.defense[e]||0)+t)},Q=(e,t)=>{V.value[e]=t;let n=Date.now(),r=n+t*24*60*60*1e3;I.player.officers[e]?(I.player.officers[e].expiresAt=r,I.player.officers[e].active=!0,I.player.officers[e].hiredAt||(I.player.officers[e].hiredAt=n)):I.player.officers[e]={type:e,active:!0,hiredAt:n,expiresAt:r}},$=()=>{confirm(R(`gmView.resetGameConfirm`))&&(localStorage.clear(),location.reload())},Ge=()=>{if(!G.value){alert(R(`gmView.selectNPCFirst`)||`Please select an NPC first`);return}let e=ne(G.value,I.player,K.value,parseInt(U.value));e?(n(G.value,e.id,5),alert(`${G.value.name} will spy in 5 seconds`)):alert(R(`gmView.npcNoProbes`)||`NPC does not have spy probes`)},Ke=()=>{if(!G.value){alert(R(`gmView.selectNPCFirst`)||`Please select an NPC first`);return}let e=t(G.value,I.player,K.value,parseInt(U.value));e?(n(G.value,e.id,5),alert(`${G.value.name} will attack in 5 seconds`)):alert(R(`gmView.npcNoSpyReport`)||`NPC needs to spy first`)},qe=()=>{if(!G.value){alert(R(`gmView.selectNPCFirst`)||`Please select an NPC first`);return}let{spyMission:e,attackMission:t}=ee(G.value,I.player,K.value,parseInt(U.value));e&&t?(n(G.value,e.id,5),n(G.value,t.id,10),alert(`${G.value.name} will spy in 5s and attack in 10s`)):alert(R(`gmView.npcMissionFailed`)||`Failed to create missions`)},Je=()=>{if(!G.value){alert(R(`gmView.selectNPCFirst`)||`Please select an NPC first`);return}let e=te(G.value,5);alert(`Accelerated ${e} missions to 5 seconds`)},Ye=()=>{if(!G.value){alert(R(`gmView.selectNPCFirst`)||`Please select an NPC first`);return}let e=G.value.planets[0];if(!e){alert(`NPC has no planets`);return}e.fleet[_.EspionageProbe]=(e.fleet[_.EspionageProbe]||0)+100,e.fleet[_.LightFighter]=(e.fleet[_.LightFighter]||0)+500,e.fleet[_.HeavyFighter]=(e.fleet[_.HeavyFighter]||0)+300,e.fleet[_.Cruiser]=(e.fleet[_.Cruiser]||0)+200,e.fleet[_.Battleship]=(e.fleet[_.Battleship]||0)+100,e.fleet[_.Bomber]=(e.fleet[_.Bomber]||0)+50,e.fleet[_.Destroyer]=(e.fleet[_.Destroyer]||0)+30,e.fleet[_.Battlecruiser]=(e.fleet[_.Battlecruiser]||0)+20,alert(`${G.value.name} fleet initialized:\n- 100 Spy Probes\n- 500 Light Fighters\n- 300 Heavy Fighters\n- 200 Cruisers\n- 100 Battleships\n- 50 Bombers\n- 30 Destroyers\n- 20 Battlecruisers`)};return(t,n)=>(h(),c(`div`,pe,[d(`div`,me,[d(`h1`,he,l(i(R)(`gmView.title`)),1),p(i(se),{variant:`destructive`},{default:r(()=>[e(l(i(R)(`gmView.adminOnly`)),1)]),_:1})]),p(i(S),null,{default:r(()=>[p(i(w),null,{default:r(()=>[p(i(x),null,{default:r(()=>[e(l(i(R)(`gmView.selectPlanet`)),1)]),_:1})]),_:1}),p(i(T),null,{default:r(()=>[p(i(E),{modelValue:z.value,"onUpdate:modelValue":n[0]||=e=>z.value=e},{default:r(()=>[p(i(O),null,{default:r(()=>[p(i(A),{placeholder:i(R)(`gmView.choosePlanet`)},null,8,[`placeholder`])]),_:1}),p(i(D),null,{default:r(()=>[(h(!0),c(a,null,m(i(I).player.planets,t=>(h(),u(i(k),{key:t.id,value:t.id},{default:r(()=>[e(l(t.name)+` (`+l(t.position.galaxy)+`:`+l(t.position.system)+`:`+l(t.position.position)+`) `,1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`])]),_:1})]),_:1}),W.value?(h(),c(`div`,ge,[(h(),c(a,null,m(We,t=>p(i(b),{key:t.value,onClick:e=>B.value=t.value,variant:B.value===t.value?`default`:`ghost`,class:`rounded-b-none`},{default:r(()=>[e(l(i(R)(t.label)),1)]),_:2},1032,[`onClick`,`variant`])),64))])):f(``,!0),W.value&&B.value===`resources`?(h(),c(`div`,_e,[p(i(S),null,{default:r(()=>[p(i(w),null,{default:r(()=>[p(i(x),null,{default:r(()=>[e(l(i(R)(`gmView.modifyResources`)),1)]),_:1}),p(i(g),null,{default:r(()=>[e(l(i(R)(`gmView.resourcesDesc`)),1)]),_:1})]),_:1}),p(i(T),{class:`space-y-4`},{default:r(()=>[(h(),c(a,null,m(Re,t=>d(`div`,{key:t,class:`space-y-2`},[p(i(C),null,{default:r(()=>[e(l(i(R)(`resources.${t}`)),1)]),_:2},1024),d(`div`,ve,[p(i(y),{modelValue:W.value.resources[t],"onUpdate:modelValue":e=>W.value.resources[t]=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`]),p(i(b),{onClick:e=>q(t,1e6),variant:`outline`,size:`sm`},{default:r(()=>[...n[3]||=[e(`+1M`,-1)]]),_:1},8,[`onClick`]),p(i(b),{onClick:e=>q(t,1e7),variant:`outline`,size:`sm`},{default:r(()=>[...n[4]||=[e(`+10M`,-1)]]),_:1},8,[`onClick`])])])),64))]),_:1})]),_:1})])):f(``,!0),W.value&&B.value===`buildings`?(h(),c(`div`,j,[p(i(S),null,{default:r(()=>[p(i(w),null,{default:r(()=>[p(i(x),null,{default:r(()=>[e(l(i(R)(`gmView.modifyBuildings`)),1)]),_:1}),p(i(g),null,{default:r(()=>[e(l(i(R)(`gmView.buildingsDesc`)),1)]),_:1})]),_:1}),p(i(T),null,{default:r(()=>[d(`div`,M,[(h(!0),c(a,null,m(i(ze),t=>(h(),c(`div`,{key:t,class:`space-y-2`},[p(i(C),null,{default:r(()=>[e(l(i(Ne)[t].name),1)]),_:2},1024),d(`div`,N,[p(i(y),{modelValue:W.value.buildings[t],"onUpdate:modelValue":e=>W.value.buildings[t]=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:`100`,class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`]),p(i(b),{onClick:e=>J(t,10),variant:`outline`,size:`sm`},{default:r(()=>[...n[5]||=[e(`Lv 10`,-1)]]),_:1},8,[`onClick`]),p(i(b),{onClick:e=>J(t,30),variant:`outline`,size:`sm`},{default:r(()=>[...n[6]||=[e(`Lv 30`,-1)]]),_:1},8,[`onClick`])])]))),128))])]),_:1})]),_:1})])):f(``,!0),B.value===`research`?(h(),c(`div`,P,[p(i(S),null,{default:r(()=>[p(i(w),null,{default:r(()=>[p(i(x),null,{default:r(()=>[e(l(i(R)(`gmView.modifyResearch`)),1)]),_:1}),p(i(g),null,{default:r(()=>[e(l(i(R)(`gmView.researchDesc`)),1)]),_:1})]),_:1}),p(i(T),null,{default:r(()=>[d(`div`,F,[(h(!0),c(a,null,m(i(Be),t=>(h(),c(`div`,{key:t,class:`space-y-2`},[p(i(C),null,{default:r(()=>[e(l(i(Pe)[t].name),1)]),_:2},1024),d(`div`,ye,[p(i(y),{modelValue:i(I).player.technologies[t],"onUpdate:modelValue":e=>i(I).player.technologies[t]=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:`50`,class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`]),p(i(b),{onClick:e=>Y(t,10),variant:`outline`,size:`sm`},{default:r(()=>[...n[7]||=[e(`Lv 10`,-1)]]),_:1},8,[`onClick`]),p(i(b),{onClick:e=>Y(t,20),variant:`outline`,size:`sm`},{default:r(()=>[...n[8]||=[e(`Lv 20`,-1)]]),_:1},8,[`onClick`])])]))),128))])]),_:1})]),_:1})])):f(``,!0),W.value&&B.value===`ships`?(h(),c(`div`,be,[p(i(S),null,{default:r(()=>[p(i(w),null,{default:r(()=>[p(i(x),null,{default:r(()=>[e(l(i(R)(`gmView.modifyShips`)),1)]),_:1}),p(i(g),null,{default:r(()=>[e(l(i(R)(`gmView.shipsDesc`)),1)]),_:1})]),_:1}),p(i(T),null,{default:r(()=>[d(`div`,xe,[(h(!0),c(a,null,m(i(Ve),t=>(h(),c(`div`,{key:t,class:`space-y-2`},[p(i(C),null,{default:r(()=>[e(l(i(Fe)[t].name),1)]),_:2},1024),d(`div`,Se,[p(i(y),{modelValue:W.value.fleet[t],"onUpdate:modelValue":e=>W.value.fleet[t]=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`]),p(i(b),{onClick:e=>X(t,100),variant:`outline`,size:`sm`},{default:r(()=>[...n[9]||=[e(`+100`,-1)]]),_:1},8,[`onClick`]),p(i(b),{onClick:e=>X(t,1e3),variant:`outline`,size:`sm`},{default:r(()=>[...n[10]||=[e(`+1K`,-1)]]),_:1},8,[`onClick`])])]))),128))])]),_:1})]),_:1})])):f(``,!0),W.value&&B.value===`defense`?(h(),c(`div`,Ce,[p(i(S),null,{default:r(()=>[p(i(w),null,{default:r(()=>[p(i(x),null,{default:r(()=>[e(l(i(R)(`gmView.modifyDefense`)),1)]),_:1}),p(i(g),null,{default:r(()=>[e(l(i(R)(`gmView.defenseDesc`)),1)]),_:1})]),_:1}),p(i(T),null,{default:r(()=>[d(`div`,we,[(h(!0),c(a,null,m(i(He),t=>(h(),c(`div`,{key:t,class:`space-y-2`},[p(i(C),null,{default:r(()=>[e(l(i(Ie)[t].name),1)]),_:2},1024),d(`div`,Te,[p(i(y),{modelValue:W.value.defense[t],"onUpdate:modelValue":e=>W.value.defense[t]=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`]),p(i(b),{onClick:e=>Z(t,100),variant:`outline`,size:`sm`},{default:r(()=>[...n[11]||=[e(`+100`,-1)]]),_:1},8,[`onClick`]),p(i(b),{onClick:e=>Z(t,1e3),variant:`outline`,size:`sm`},{default:r(()=>[...n[12]||=[e(`+1K`,-1)]]),_:1},8,[`onClick`])])]))),128))])]),_:1})]),_:1})])):f(``,!0),B.value===`officers`?(h(),c(`div`,Ee,[p(i(S),null,{default:r(()=>[p(i(w),null,{default:r(()=>[p(i(x),null,{default:r(()=>[e(l(i(R)(`gmView.modifyOfficers`)),1)]),_:1}),p(i(g),null,{default:r(()=>[e(l(i(R)(`gmView.officersDesc`)),1)]),_:1})]),_:1}),p(i(T),null,{default:r(()=>[d(`div`,De,[(h(!0),c(a,null,m(i(Ue),t=>(h(),c(`div`,{key:t,class:`space-y-2`},[p(i(C),null,{default:r(()=>[e(l(i(Le)[t].name),1)]),_:2},1024),d(`div`,Oe,[p(i(y),{modelValue:V.value[t],"onUpdate:modelValue":e=>V.value[t]=e,modelModifiers:{number:!0},type:`number`,min:`0`,placeholder:i(R)(`gmView.days`),class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`]),p(i(b),{onClick:e=>Q(t,7),variant:`outline`,size:`sm`},{default:r(()=>[e(`7`+l(i(R)(`gmView.days`)),1)]),_:1},8,[`onClick`]),p(i(b),{onClick:e=>Q(t,30),variant:`outline`,size:`sm`},{default:r(()=>[e(`30`+l(i(R)(`gmView.days`)),1)]),_:1},8,[`onClick`]),p(i(b),{onClick:e=>Q(t,365),variant:`outline`,size:`sm`},{default:r(()=>[e(`365`+l(i(R)(`gmView.days`)),1)]),_:1},8,[`onClick`])])]))),128))])]),_:1})]),_:1})])):f(``,!0),p(i(S),{class:`border-primary`},{default:r(()=>[p(i(w),null,{default:r(()=>[p(i(x),null,{default:r(()=>[e(l(i(R)(`gmView.npcTesting`)||`NPC Testing`),1)]),_:1}),p(i(g),null,{default:r(()=>[e(l(i(R)(`gmView.npcTestingDesc`)||`Test NPC spy and attack behavior`),1)]),_:1})]),_:1}),p(i(T),{class:`space-y-3`},{default:r(()=>[d(`div`,ke,[p(i(C),null,{default:r(()=>[e(l(i(R)(`gmView.selectNPC`)||`Select NPC`),1)]),_:1}),p(i(E),{modelValue:H.value,"onUpdate:modelValue":n[1]||=e=>H.value=e},{default:r(()=>[p(i(O),null,{default:r(()=>[p(i(A),{placeholder:i(R)(`gmView.chooseNPC`)||`Choose NPC`},null,8,[`placeholder`])]),_:1}),p(i(D),null,{default:r(()=>[(h(!0),c(a,null,m(i(L).npcs,t=>(h(),u(i(k),{key:t.id,value:t.id},{default:r(()=>[e(l(t.name)+` (`+l(t.difficulty)+`)`,1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`])]),d(`div`,Ae,[p(i(C),null,{default:r(()=>[e(l(i(R)(`gmView.targetPlanet`)||`Target Planet`),1)]),_:1}),p(i(E),{modelValue:U.value,"onUpdate:modelValue":n[2]||=e=>U.value=e},{default:r(()=>[p(i(O),null,{default:r(()=>[p(i(A),{placeholder:i(R)(`gmView.chooseTarget`)||`Choose Target Planet`},null,8,[`placeholder`])]),_:1}),p(i(D),null,{default:r(()=>[(h(!0),c(a,null,m(i(I).player.planets,(t,n)=>(h(),u(i(k),{key:t.id,value:n.toString()},{default:r(()=>[e(l(t.name)+` (`+l(t.position.galaxy)+`:`+l(t.position.system)+`:`+l(t.position.position)+`) `,1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`])]),d(`div`,je,[p(i(b),{onClick:Ge,variant:`outline`,class:`w-full`,disabled:!G.value},{default:r(()=>[e(l(i(R)(`gmView.testSpy`)||`Test Spy`),1)]),_:1},8,[`disabled`]),p(i(b),{onClick:Ke,variant:`outline`,class:`w-full`,disabled:!G.value},{default:r(()=>[e(l(i(R)(`gmView.testAttack`)||`Test Attack`),1)]),_:1},8,[`disabled`])]),p(i(b),{onClick:qe,variant:`default`,class:`w-full`,disabled:!G.value},{default:r(()=>[e(l(i(R)(`gmView.testSpyAndAttack`)||`Test Spy & Attack`),1)]),_:1},8,[`disabled`]),p(i(b),{onClick:Ye,variant:`secondary`,class:`w-full`,disabled:!G.value},{default:r(()=>[e(l(i(R)(`gmView.initializeFleet`)||`Initialize NPC Fleet`),1)]),_:1},8,[`disabled`]),p(i(b),{onClick:Je,variant:`secondary`,class:`w-full`,disabled:!G.value},{default:r(()=>[e(l(i(R)(`gmView.accelerateMissions`)||`Accelerate All Missions (5s)`),1)]),_:1},8,[`disabled`])]),_:1})]),_:1}),p(i(S),{class:`border-destructive`},{default:r(()=>[p(i(w),null,{default:r(()=>[p(i(x),{class:`text-destructive`},{default:r(()=>[e(l(i(R)(`gmView.dangerZone`)),1)]),_:1}),p(i(g),null,{default:r(()=>[e(l(i(R)(`gmView.dangerZoneDesc`)),1)]),_:1})]),_:1}),p(i(T),{class:`space-y-2`},{default:r(()=>[p(i(b),{onClick:$,variant:`destructive`,class:`w-full`},{default:r(()=>[e(l(i(R)(`gmView.resetGame`)),1)]),_:1})]),_:1})]),_:1})]))}});export{I as default};