Files
ogame-vue-ts/docs/assets/DefenseView-aCDrCjw8.js
谦君 59dd7bfd05 feat: 重构战报弹窗与模拟器视图,优化UI与逻辑
重构BattleReportDialog和BattleSimulatorView相关静态资源,替换旧版JS/CSS文件,提升界面一致性和交互体验。新增和优化空状态、滚动区域等通用UI组件,移除部分冗余composable,完善多语言内容。引入导弹逻辑,补充版本检测工具,提升整体代码结构和可维护性。
2025-12-15 20:04:40 +08:00

1 line
7.7 KiB
JavaScript

import{$t as e,En as t,Mt as n,On as r,Ot as i,Rn as a,Yn as o,ar as s,cn as ee,cr as c,dn as l,fn as u,i as te,ln as d,on as f,pn as ne,rn as p,rr as m,sn as h,sr as re,t as ie,tt as g,un as _,zn as v}from"./game-logic-BBFCPVtv.js";import"./vendor-pinia-L_8CmDWM.js";import"./vendor-vue-router-0mfLVB6Y.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-BC9uiVvf.js";import"./vendor-others-Bce0hM6h.js";import"./vendor-reka-ui-DR3m_AkV.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-Djj-oRw9.js";import"./vendor-icons-Ccm2_GPI.js";import{t as y}from"./CardDescription-DduF5EVY.js";import{d as ae,f as b}from"./game-config-DRP-gbpS.js";import{$ as oe,A as se,F as ce,I as le,J as ue,K as de,L as x,M as fe,N as pe,V as me,X as S,d as C,f as w,j as T,k as E,l as D,m as O,o as k,p as A,u as j,x as M}from"./index-B4KMqZ_y.js";import{t as N}from"./useGameConfig-DLqfPHtW.js";import{t as P}from"./CardUnlockOverlay-CspXlcWR.js";import{t as F}from"./UnlockRequirement-DJ9dN5JL.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={key:0,class:`mb-4 sm:mb-6 p-3 sm:p-4 bg-muted/50 rounded-lg border`},z={class:`flex items-center justify-between`},he={class:`text-sm sm:text-base font-medium`},ge={class:`text-sm sm:text-base font-bold`},_e={class:`mt-2`},ve={class:`w-full bg-background rounded-full h-2.5 sm:h-3 overflow-hidden`},ye={class:`grid grid-cols-2 sm:grid-cols-3 gap-3 sm:gap-4`},be={class:`mb-2`},xe={class:`flex flex-col sm:flex-row sm:justify-between sm:items-start gap-2`},Se={class:`space-y-3 sm:space-y-4`},B={class:`grid grid-cols-2 gap-2 text-xs sm:text-sm`},Ce={class:`text-muted-foreground`},we={class:`font-medium`},Te={class:`text-muted-foreground`},Ee={class:`font-medium`},De={class:`text-muted-foreground`},Oe={class:`font-medium`},ke={class:`text-muted-foreground`},Ae={class:`font-medium`},je={class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2`},Me={class:`text-muted-foreground mb-1 sm:mb-2`},Ne={class:`space-y-1 sm:space-y-1.5`},Pe={class:`text-xs`},Fe={class:`space-y-2`},Ie={key:0,class:`text-xs text-muted-foreground`},Le={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`},Re={class:`font-medium text-muted-foreground`},ze={class:`space-y-1 sm:space-y-1.5`},Be={class:`text-xs`},V=ne({__name:`DefenseView`,setup(ne){let V=oe(),Ve=M(),{t:H}=S(),{DEFENSES:U}=N(),W=f(()=>V.currentPlanet),G=f(()=>W.value?n(W.value.buildings):0),K=f(()=>W.value?i(W.value.defense):0),q=o(!1),J=o(``),Y=o(``),X=[{key:`metal`},{key:`crystal`},{key:`deuterium`},{key:`darkMatter`}],Z=o({[b.RocketLauncher]:0,[b.LightLaser]:0,[b.HeavyLaser]:0,[b.GaussCannon]:0,[b.IonCannon]:0,[b.PlasmaTurret]:0,[b.SmallShieldDome]:0,[b.LargeShieldDome]:0,[b.AntiBallisticMissile]:0,[b.InterplanetaryMissile]:0,[b.PlanetaryShield]:0}),Q=e=>e===b.SmallShieldDome||e===b.LargeShieldDome,He=(e,t)=>{let n=V.currentPlanet;if(!n||!te(n,e,t,V.player.technologies).valid)return!1;let r=ie(n,e,t,V.player.officers);return n.buildQueue.push(r),!0},Ue=e=>{let t=Z.value[e];if(t<=0){J.value=H(`defenseView.inputError`),Y.value=H(`defenseView.inputErrorMessage`),q.value=!0;return}He(e,t)?Z.value[e]=0:(J.value=H(`defenseView.buildFailed`),Y.value=H(`defenseView.buildFailedMessage`),q.value=!0)},We=e=>{if(!W.value)return!1;let t=Z.value[e];if(t<=0||Q(e)&&(W.value.defense[e]>0||t>1))return!1;let n=U.value[e],r={metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t,darkMatter:n.cost.darkMatter*t};return g(W.value,V.player.technologies,n.requirements)&&W.value.resources.metal>=r.metal&&W.value.resources.crystal>=r.crystal&&W.value.resources.deuterium>=r.deuterium&&W.value.resources.darkMatter>=r.darkMatter},$=e=>{let t=Z.value[e],n=U.value[e];return{metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t,darkMatter:n.cost.darkMatter*t}};return(n,i)=>W.value?(t(),_(`div`,I,[u(F,{"required-building":m(ae).Shipyard,"required-level":1},null,8,[`required-building`]),h(`h1`,L,c(m(H)(`defenseView.title`)),1),G.value>0?(t(),_(`div`,R,[h(`div`,z,[h(`div`,he,c(m(H)(`defenseView.missileCapacity`))+`:`,1),h(`div`,ge,[h(`span`,{class:s(K.value>G.value?`text-destructive`:`text-primary`)},c(m(k)(K.value)),3),i[1]||=h(`span`,{class:`text-muted-foreground mx-1`},`/`,-1),h(`span`,null,c(m(k)(G.value)),1)])]),h(`div`,_e,[h(`div`,ve,[h(`div`,{class:s([`h-full transition-all duration-300`,K.value>G.value?`bg-destructive`:`bg-primary`]),style:re({width:`${Math.min(K.value/G.value*100,100)}%`})},null,6)])])])):d(``,!0),h(`div`,ye,[(t(!0),_(p,null,r(Object.values(m(b)),n=>(t(),ee(m(O),{key:n,class:`relative`},{default:a(()=>[u(P,{requirements:m(U)[n].requirements},null,8,[`requirements`]),u(m(w),null,{default:a(()=>[h(`div`,be,[h(`div`,xe,[u(m(C),{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=>m(Ve).openDefense(n)},{default:a(()=>[l(c(m(U)[n].name),1)]),_:2},1032,[`onClick`]),u(m(de),{variant:`secondary`,class:`text-xs whitespace-nowrap self-start order-1 sm:order-2`},{default:a(()=>[l(c(W.value.defense[n]),1)]),_:2},1024)])]),u(m(y),{class:`text-xs sm:text-sm`},{default:a(()=>[l(c(m(U)[n].description),1)]),_:2},1024)]),_:2},1024),u(m(A),null,{default:a(()=>[h(`div`,Se,[h(`div`,B,[h(`div`,null,[h(`p`,Ce,c(m(H)(`defenseView.attack`)),1),h(`p`,we,c(m(U)[n].attack),1)]),h(`div`,null,[h(`p`,Te,c(m(H)(`defenseView.shield`)),1),h(`p`,Ee,c(m(U)[n].shield),1)]),h(`div`,null,[h(`p`,De,c(m(H)(`defenseView.armor`)),1),h(`p`,Oe,c(m(U)[n].armor),1)]),h(`div`,null,[h(`p`,ke,c(m(H)(`defenseView.buildTime`)),1),h(`p`,Ae,c(m(U)[n].buildTime)+c(m(H)(`defenseView.seconds`)),1)])]),h(`div`,je,[h(`p`,Me,c(m(H)(`defenseView.unitCost`))+`:`,1),h(`div`,Ne,[(t(),_(p,null,r(X,t=>v(h(`div`,{key:t.key,class:`flex items-center gap-1.5 sm:gap-2`},[u(x,{type:t.key,size:`sm`},null,8,[`type`]),h(`span`,Pe,c(m(H)(`resources.${t.key}`))+`:`,1),h(`span`,{class:s([`font-medium text-xs sm:text-sm`,m(D)(W.value.resources[t.key],m(U)[n].cost[t.key])])},c(m(k)(m(U)[n].cost[t.key])),3)]),[[e,t.key!==`darkMatter`||m(U)[n].cost.darkMatter>0]])),64))])]),h(`div`,Fe,[u(m(j),{for:`quantity-${n}`,class:`text-xs sm:text-sm`},{default:a(()=>[l(c(m(H)(`defenseView.buildQuantity`)),1)]),_:1},8,[`for`]),u(m(me),{id:`quantity-${n}`,modelValue:Z.value[n],"onUpdate:modelValue":e=>Z.value[n]=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:Q(n)&&W.value.defense[n]>0?0:void 0,disabled:Q(n)&&W.value.defense[n]>0,placeholder:`0`,class:`text-sm`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`max`,`disabled`]),Q(n)&&W.value.defense[n]>0?(t(),_(`p`,Ie,c(m(H)(`defenseView.shieldDomeBuilt`)),1)):d(``,!0)]),Z.value[n]>0?(t(),_(`div`,Le,[h(`p`,Re,c(m(H)(`defenseView.totalCost`))+`:`,1),h(`div`,ze,[(t(),_(p,null,r(X,t=>v(h(`div`,{key:t.key,class:`flex items-center gap-1.5 sm:gap-2`},[u(x,{type:t.key,size:`sm`},null,8,[`type`]),h(`span`,Be,c(m(H)(`resources.${t.key}`))+`:`,1),h(`span`,{class:s([`font-medium text-xs sm:text-sm`,m(D)(W.value.resources[t.key],$(n)[t.key])])},c(m(k)($(n)[t.key])),3)]),[[e,t.key!==`darkMatter`||$(n).darkMatter>0]])),64))])])):d(``,!0),u(m(ue),{onClick:e=>Ue(n),disabled:!We(n),class:`w-full`},{default:a(()=>[l(c(m(H)(`defenseView.build`)),1)]),_:1},8,[`onClick`,`disabled`])])]),_:2},1024)]),_:2},1024))),128))]),u(m(le),{open:q.value,"onUpdate:open":i[0]||=e=>q.value=e},{default:a(()=>[u(m(pe),null,{default:a(()=>[u(m(se),null,{default:a(()=>[u(m(E),null,{default:a(()=>[l(c(J.value),1)]),_:1}),u(m(fe),{class:`whitespace-pre-line`},{default:a(()=>[l(c(Y.value),1)]),_:1})]),_:1}),u(m(T),null,{default:a(()=>[u(m(ce),null,{default:a(()=>[l(c(m(H)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])])):d(``,!0)}});export{V as default};