Files
ogame-vue-ts/docs/assets/DefenseView-qV0qTXQw.js
谦君 731d79673b feat: 新增战报弹窗与舰队模拟器,重构UI组件
新增 BattleReportDialog、SpyReportDialog、NumberWithTooltip 等组件,完善舰队模拟器功能。重构并引入 Sheet、Sidebar、Tooltip、Skeleton 等 UI 组件,优化界面结构。实现 battle.worker 支持战斗计算,增加 universeStore、fleetStorageLogic 等核心逻辑,完善多语言与类型定义。
2025-12-13 11:14:23 +08:00

1 line
7.0 KiB
JavaScript

import{At as e,Cn as t,Ct as n,Dt as r,Et as ee,Jt as te,Kt as i,Mt as a,N as o,Nt as s,On as c,Ot as ne,Tn as l,hn as u,i as d,in as f,jt as p,kt as m,t as re}from"./game-logic-B_TBzmsj.js";import"./vendor-pinia-C_5mk-F1.js";import"./vendor-vue-router-_-a8jZbv.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-DEf7ySVe.js";import"./vendor-others-DiSZfaku.js";import"./vendor-reka-ui-ICOW9z5F.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CXzdKKhY.js";import"./vendor-icons-B6ER66fi.js";import{t as ie}from"./CardDescription-CtUtXM5o.js";import{d as h,u as ae}from"./game-config-D-D7cMgJ.js";import{A as oe,I as se,M as ce,O as g,P as _,_ as v,c as y,l as b,o as x,r as S,s as C,t as w,u as T,w as E}from"./index-BLxCTx9W.js";import{t as D}from"./useGameConfig-chMIsHFg.js";import{t as O}from"./AlertDialog-vN9u2C5f.js";import{t as k}from"./CardUnlockOverlay-BVmeYgHN.js";import{t as A}from"./UnlockRequirement-CoN2_Hgq.js";var j={key:0,class:`container mx-auto p-4 sm:p-6`},M={class:`text-2xl sm:text-3xl font-bold mb-4 sm:mb-6`},N={class:`grid grid-cols-2 sm:grid-cols-3 gap-3 sm:gap-4`},P={class:`flex justify-between items-start gap-2`},F={class:`min-w-0 flex-1`},I={class:`space-y-3 sm:space-y-4`},L={class:`grid grid-cols-2 gap-2 text-xs sm:text-sm`},R={class:`text-muted-foreground`},z={class:`font-medium`},B={class:`text-muted-foreground`},V={class:`font-medium`},H={class:`text-muted-foreground`},U={class:`font-medium`},le={class:`text-muted-foreground`},W={class:`font-medium`},ue={class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2`},de={class:`text-muted-foreground mb-1 sm:mb-2`},fe={class:`space-y-1 sm:space-y-1.5`},pe={class:`flex items-center gap-1.5 sm:gap-2`},me={class:`text-xs`},he={class:`flex items-center gap-1.5 sm:gap-2`},ge={class:`text-xs`},_e={class:`flex items-center gap-1.5 sm:gap-2`},ve={class:`text-xs`},ye={class:`space-y-2`},be={key:0,class:`text-xs text-muted-foreground`},xe={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`},Se={class:`font-medium text-muted-foreground`},Ce={class:`space-y-1 sm:space-y-1.5`},we={class:`flex items-center gap-1.5 sm:gap-2`},Te={class:`text-xs`},Ee={class:`flex items-center gap-1.5 sm:gap-2`},De={class:`text-xs`},Oe={class:`flex items-center gap-1.5 sm:gap-2`},G={class:`text-xs`},K=s({__name:`DefenseView`,setup(s){let K=se(),ke=v(),{t:q}=_(),{DEFENSES:J}=D(),Y=ee(()=>K.currentPlanet),X=u(null),Z=u({[h.RocketLauncher]:0,[h.LightLaser]:0,[h.HeavyLaser]:0,[h.GaussCannon]:0,[h.IonCannon]:0,[h.PlasmaTurret]:0,[h.SmallShieldDome]:0,[h.LargeShieldDome]:0,[h.PlanetaryShield]:0}),Q=e=>e===h.SmallShieldDome||e===h.LargeShieldDome,Ae=(e,t)=>{if(!K.currentPlanet||!d(K.currentPlanet,e,t,K.player.technologies).valid)return!1;let n=re(K.currentPlanet,e,t,K.player.officers);return K.currentPlanet.buildQueue.push(n),!0},je=e=>{let t=Z.value[e];if(t<=0){X.value?.show({title:q(`defenseView.inputError`),message:q(`defenseView.inputErrorMessage`)});return}Ae(e,t)?Z.value[e]=0:X.value?.show({title:q(`defenseView.buildFailed`),message:q(`defenseView.buildFailedMessage`)})},Me=e=>{if(!Y.value)return!1;let t=Z.value[e];if(t<=0||Q(e)&&(Y.value.defense[e]>0||t>1))return!1;let n=J.value[e],r={metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t};return o(Y.value,K.player.technologies,n.requirements)&&Y.value.resources.metal>=r.metal&&Y.value.resources.crystal>=r.crystal&&Y.value.resources.deuterium>=r.deuterium},$=e=>{let t=Z.value[e],n=J.value[e];return{metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t}};return(ee,o)=>Y.value?(i(),e(`div`,j,[a(A,{"required-building":t(ae).Shipyard,"required-level":1},null,8,[`required-building`]),r(`h1`,M,c(t(q)(`defenseView.title`)),1),r(`div`,N,[(i(!0),e(n,null,te(Object.values(t(h)),n=>(i(),ne(t(T),{key:n,class:`relative`},{default:f(()=>[a(k,{requirements:t(J)[n].requirements},null,8,[`requirements`]),a(t(y),null,{default:f(()=>[r(`div`,P,[r(`div`,F,[a(t(C),{class:`text-base sm:text-lg cursor-pointer hover:text-primary transition-colors`,onClick:e=>t(ke).openDefense(n)},{default:f(()=>[p(c(t(J)[n].name),1)]),_:2},1032,[`onClick`]),a(t(ie),{class:`text-xs sm:text-sm`},{default:f(()=>[p(c(t(J)[n].description),1)]),_:2},1024)]),a(t(oe),{variant:`secondary`,class:`text-xs whitespace-nowrap flex-shrink-0`},{default:f(()=>[p(c(Y.value.defense[n]),1)]),_:2},1024)])]),_:2},1024),a(t(b),null,{default:f(()=>[r(`div`,I,[r(`div`,L,[r(`div`,null,[r(`p`,R,c(t(q)(`defenseView.attack`)),1),r(`p`,z,c(t(J)[n].attack),1)]),r(`div`,null,[r(`p`,B,c(t(q)(`defenseView.shield`)),1),r(`p`,V,c(t(J)[n].shield),1)]),r(`div`,null,[r(`p`,H,c(t(q)(`defenseView.armor`)),1),r(`p`,U,c(t(J)[n].armor),1)]),r(`div`,null,[r(`p`,le,c(t(q)(`defenseView.buildTime`)),1),r(`p`,W,c(t(J)[n].buildTime)+c(t(q)(`defenseView.seconds`)),1)])]),r(`div`,ue,[r(`p`,de,c(t(q)(`defenseView.unitCost`))+`:`,1),r(`div`,fe,[r(`div`,pe,[a(E,{type:`metal`,size:`sm`}),r(`span`,me,c(t(q)(`resources.metal`))+`:`,1),r(`span`,{class:l([`font-medium text-xs sm:text-sm`,t(x)(Y.value.resources.metal,t(J)[n].cost.metal)])},c(t(S)(t(J)[n].cost.metal)),3)]),r(`div`,he,[a(E,{type:`crystal`,size:`sm`}),r(`span`,ge,c(t(q)(`resources.crystal`))+`:`,1),r(`span`,{class:l([`font-medium text-xs sm:text-sm`,t(x)(Y.value.resources.crystal,t(J)[n].cost.crystal)])},c(t(S)(t(J)[n].cost.crystal)),3)]),r(`div`,_e,[a(E,{type:`deuterium`,size:`sm`}),r(`span`,ve,c(t(q)(`resources.deuterium`))+`:`,1),r(`span`,{class:l([`font-medium text-xs sm:text-sm`,t(x)(Y.value.resources.deuterium,t(J)[n].cost.deuterium)])},c(t(S)(t(J)[n].cost.deuterium)),3)])])]),r(`div`,ye,[a(t(w),{for:`quantity-${n}`,class:`text-xs sm:text-sm`},{default:f(()=>[p(c(t(q)(`defenseView.buildQuantity`)),1)]),_:1},8,[`for`]),a(t(g),{id:`quantity-${n}`,modelValue:Z.value[n],"onUpdate:modelValue":e=>Z.value[n]=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:Q(n)&&Y.value.defense[n]>0?0:void 0,disabled:Q(n)&&Y.value.defense[n]>0,placeholder:`0`,class:`text-sm`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`max`,`disabled`]),Q(n)&&Y.value.defense[n]>0?(i(),e(`p`,be,c(t(q)(`defenseView.shieldDomeBuilt`)),1)):m(``,!0)]),Z.value[n]>0?(i(),e(`div`,xe,[r(`p`,Se,c(t(q)(`defenseView.totalCost`))+`:`,1),r(`div`,Ce,[r(`div`,we,[a(E,{type:`metal`,size:`sm`}),r(`span`,Te,c(t(q)(`resources.metal`))+`:`,1),r(`span`,{class:l([`font-medium text-xs sm:text-sm`,t(x)(Y.value.resources.metal,$(n).metal)])},c(t(S)($(n).metal)),3)]),r(`div`,Ee,[a(E,{type:`crystal`,size:`sm`}),r(`span`,De,c(t(q)(`resources.crystal`))+`:`,1),r(`span`,{class:l([`font-medium text-xs sm:text-sm`,t(x)(Y.value.resources.crystal,$(n).crystal)])},c(t(S)($(n).crystal)),3)]),r(`div`,Oe,[a(E,{type:`deuterium`,size:`sm`}),r(`span`,G,c(t(q)(`resources.deuterium`))+`:`,1),r(`span`,{class:l([`font-medium text-xs sm:text-sm`,t(x)(Y.value.resources.deuterium,$(n).deuterium)])},c(t(S)($(n).deuterium)),3)])])])):m(``,!0),a(t(ce),{onClick:e=>je(n),disabled:!Me(n),class:`w-full`},{default:f(()=>[p(c(t(q)(`defenseView.build`)),1)]),_:1},8,[`onClick`,`disabled`])])]),_:2},1024)]),_:2},1024))),128))]),a(O,{ref_key:`alertDialog`,ref:X},null,512)])):m(``,!0)}});export{K as default};