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

1 line
6.8 KiB
JavaScript

import{$t as e,Dn as t,En as n,Gn as r,Gt as i,Jt as a,Ln as o,Qt as s,Vt as c,Xn as l,Xt as ee,Yt as u,Zt as d,en as f,gn as p,i as te,mn as m,qn as h,t as ne,tn as re,v as ie}from"./game-logic-Bi1l7y4K.js";import"./vendor-pinia-DqhKuBjp.js";import"./vendor-vue-router-1sDnnIWZ.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 ae}from"./CardDescription-BSLS07AU.js";import{d as oe,f as g}from"./game-config-CG6z6nnH.js";import{D as se,H as ce,K as _,L as le,N as v,W as y,_ as b,a as ue,b as de,f as x,g as S,h as C,i as w,l as T,o as E,q as D,r as O,s as k,u as A,v as j,y as M}from"./index-BT5w6et-.js";import{t as N}from"./useGameConfig-b98LOtBY.js";import{t as P}from"./CardUnlockOverlay-DYfgGY6J.js";import{t as F}from"./UnlockRequirement-CoWPiUl8.js";var I={key:0,class:`container mx-auto p-4 sm:p-6`},L={class:`text-2xl sm:text-3xl font-bold mb-4 sm:mb-6`},R={class:`grid grid-cols-2 sm:grid-cols-3 gap-3 sm:gap-4`},z={class:`mb-2`},B={class:`flex flex-col sm:flex-row sm:justify-between sm:items-start gap-2`},V={class:`space-y-3 sm:space-y-4`},H={class:`grid grid-cols-2 gap-2 text-xs sm:text-sm`},fe={class:`text-muted-foreground`},pe={class:`font-medium`},me={class:`text-muted-foreground`},he={class:`font-medium`},ge={class:`text-muted-foreground`},_e={class:`font-medium`},ve={class:`text-muted-foreground`},ye={class:`font-medium`},be={class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2`},xe={class:`text-muted-foreground mb-1 sm:mb-2`},Se={class:`space-y-1 sm:space-y-1.5`},Ce={class:`text-xs`},we={class:`space-y-2`},Te={key:0,class:`text-xs text-muted-foreground`},Ee={key:0,class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2 p-2.5 sm:p-3 bg-muted rounded-lg`},De={class:`font-medium text-muted-foreground`},Oe={class:`space-y-1 sm:space-y-1.5`},ke={class:`text-xs`},U=re({__name:`DefenseView`,setup(re){let U=D(),Ae=se(),{t:W}=_(),{DEFENSES:G}=N(),K=a(()=>U.currentPlanet),q=o(!1),J=o(``),Y=o(``),X=[{key:`metal`},{key:`crystal`},{key:`deuterium`},{key:`darkMatter`}],Z=o({[g.RocketLauncher]:0,[g.LightLaser]:0,[g.HeavyLaser]:0,[g.GaussCannon]:0,[g.IonCannon]:0,[g.PlasmaTurret]:0,[g.SmallShieldDome]:0,[g.LargeShieldDome]:0,[g.AntiBallisticMissile]:0,[g.InterplanetaryMissile]:0,[g.PlanetaryShield]:0}),Q=e=>e===g.SmallShieldDome||e===g.LargeShieldDome,je=(e,t)=>{if(!U.currentPlanet||!te(U.currentPlanet,e,t,U.player.technologies).valid)return!1;let n=ne(U.currentPlanet,e,t,U.player.officers);return U.currentPlanet.buildQueue.push(n),!0},Me=e=>{let t=Z.value[e];if(t<=0){J.value=W(`defenseView.inputError`),Y.value=W(`defenseView.inputErrorMessage`),q.value=!0;return}je(e,t)?Z.value[e]=0:(J.value=W(`defenseView.buildFailed`),Y.value=W(`defenseView.buildFailedMessage`),q.value=!0)},Ne=e=>{if(!K.value)return!1;let t=Z.value[e];if(t<=0||Q(e)&&(K.value.defense[e]>0||t>1))return!1;let n=G.value[e],r={metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t,darkMatter:n.cost.darkMatter*t};return ie(K.value,U.player.technologies,n.requirements)&&K.value.resources.metal>=r.metal&&K.value.resources.crystal>=r.crystal&&K.value.resources.deuterium>=r.deuterium&&K.value.resources.darkMatter>=r.darkMatter},$=e=>{let t=Z.value[e],n=G.value[e];return{metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t,darkMatter:n.cost.darkMatter*t}};return(a,o)=>K.value?(m(),s(`div`,I,[f(F,{"required-building":r(oe).Shipyard,"required-level":1},null,8,[`required-building`]),u(`h1`,L,l(r(W)(`defenseView.title`)),1),u(`div`,R,[(m(!0),s(i,null,p(Object.values(r(g)),a=>(m(),ee(r(de),{key:a,class:`relative`},{default:n(()=>[f(P,{requirements:r(G)[a].requirements},null,8,[`requirements`]),f(r(j),null,{default:n(()=>[u(`div`,z,[u(`div`,B,[f(r(b),{class:`text-sm sm:text-base lg:text-lg cursor-pointer hover:text-primary transition-colors underline decoration-dotted underline-offset-4 order-2 sm:order-1`,onClick:e=>r(Ae).openDefense(a)},{default:n(()=>[e(l(r(G)[a].name),1)]),_:2},1032,[`onClick`]),f(r(ce),{variant:`secondary`,class:`text-xs whitespace-nowrap self-start order-1 sm:order-2`},{default:n(()=>[e(l(K.value.defense[a]),1)]),_:2},1024)])]),f(r(ae),{class:`text-xs sm:text-sm`},{default:n(()=>[e(l(r(G)[a].description),1)]),_:2},1024)]),_:2},1024),f(r(M),null,{default:n(()=>[u(`div`,V,[u(`div`,H,[u(`div`,null,[u(`p`,fe,l(r(W)(`defenseView.attack`)),1),u(`p`,pe,l(r(G)[a].attack),1)]),u(`div`,null,[u(`p`,me,l(r(W)(`defenseView.shield`)),1),u(`p`,he,l(r(G)[a].shield),1)]),u(`div`,null,[u(`p`,ge,l(r(W)(`defenseView.armor`)),1),u(`p`,_e,l(r(G)[a].armor),1)]),u(`div`,null,[u(`p`,ve,l(r(W)(`defenseView.buildTime`)),1),u(`p`,ye,l(r(G)[a].buildTime)+l(r(W)(`defenseView.seconds`)),1)])]),u(`div`,be,[u(`p`,xe,l(r(W)(`defenseView.unitCost`))+`:`,1),u(`div`,Se,[(m(),s(i,null,p(X,e=>t(u(`div`,{key:e.key,class:`flex items-center gap-1.5 sm:gap-2`},[f(v,{type:e.key,size:`sm`},null,8,[`type`]),u(`span`,Ce,l(r(W)(`resources.${e.key}`))+`:`,1),u(`span`,{class:h([`font-medium text-xs sm:text-sm`,r(C)(K.value.resources[e.key],r(G)[a].cost[e.key])])},l(r(x)(r(G)[a].cost[e.key])),3)]),[[c,e.key!==`darkMatter`||r(G)[a].cost.darkMatter>0]])),64))])]),u(`div`,we,[f(r(S),{for:`quantity-${a}`,class:`text-xs sm:text-sm`},{default:n(()=>[e(l(r(W)(`defenseView.buildQuantity`)),1)]),_:1},8,[`for`]),f(r(le),{id:`quantity-${a}`,modelValue:Z.value[a],"onUpdate:modelValue":e=>Z.value[a]=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:Q(a)&&K.value.defense[a]>0?0:void 0,disabled:Q(a)&&K.value.defense[a]>0,placeholder:`0`,class:`text-sm`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`max`,`disabled`]),Q(a)&&K.value.defense[a]>0?(m(),s(`p`,Te,l(r(W)(`defenseView.shieldDomeBuilt`)),1)):d(``,!0)]),Z.value[a]>0?(m(),s(`div`,Ee,[u(`p`,De,l(r(W)(`defenseView.totalCost`))+`:`,1),u(`div`,Oe,[(m(),s(i,null,p(X,e=>t(u(`div`,{key:e.key,class:`flex items-center gap-1.5 sm:gap-2`},[f(v,{type:e.key,size:`sm`},null,8,[`type`]),u(`span`,ke,l(r(W)(`resources.${e.key}`))+`:`,1),u(`span`,{class:h([`font-medium text-xs sm:text-sm`,r(C)(K.value.resources[e.key],$(a)[e.key])])},l(r(x)($(a)[e.key])),3)]),[[c,e.key!==`darkMatter`||$(a).darkMatter>0]])),64))])])):d(``,!0),f(r(y),{onClick:e=>Me(a),disabled:!Ne(a),class:`w-full`},{default:n(()=>[e(l(r(W)(`defenseView.build`)),1)]),_:1},8,[`onClick`,`disabled`])])]),_:2},1024)]),_:2},1024))),128))]),f(r(A),{open:q.value,"onUpdate:open":o[0]||=e=>q.value=e},{default:n(()=>[f(r(k),null,{default:n(()=>[f(r(w),null,{default:n(()=>[f(r(O),null,{default:n(()=>[e(l(J.value),1)]),_:1}),f(r(E),{class:`whitespace-pre-line`},{default:n(()=>[e(l(Y.value),1)]),_:1})]),_:1}),f(r(ue),null,{default:n(()=>[f(r(T),null,{default:n(()=>[e(l(r(W)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])])):d(``,!0)}});export{U as default};