Files
ogame-vue-ts/docs/assets/DefenseView-4OcM0vVE.js
谦君 705ee8c3db feat: 初始化项目结构与核心功能
引入项目基础目录结构,包含多语言支持、主要页面与组件、核心游戏逻辑、UI 组件库、加密与本地持久化、自动化 Docker 构建流程、GitHub issue 模板(中英文)、README(中英文)、LICENSE 及开发配置文件。实现 OGame 单机版主要功能模块,为后续开发和扩展奠定基础。
2025-12-11 14:49:25 +08:00

1 line
6.7 KiB
JavaScript

import{t as e}from"./UnlockRequirement-DeOUxO_t.js";import{t}from"./CardDescription-Cb9v68Xa.js";import{An as n,En as r,Fn as ee,G as te,Gn as i,It as a,K as ne,Mn as o,Nn as s,On as re,Pn as c,Pt as l,Qn as u,V as d,W as f,bn as ie,dt as p,er as m,ft as ae,ir as h,it as g,jn as _,kn as v,lt as oe,qn as se,rr as y,rt as ce,sr as b,ut as x,w as S,xn as C,yt as w,zt as T}from"./index-BpOElaf9.js";import{t as E}from"./useGameConfig-DqswvIth.js";import{t as D}from"./AlertDialog-BbpHh-RO.js";import{t as O}from"./CardUnlockOverlay-tiSNfyF3.js";import{i as k,t as A}from"./shipValidation-BZIVAW1v.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`},W={class:`text-muted-foreground`},G={class:`font-medium`},le={class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2`},ue={class:`text-muted-foreground mb-1 sm:mb-2`},de={class:`space-y-1 sm:space-y-1.5`},fe={class:`flex items-center gap-1.5 sm:gap-2`},pe={class:`text-xs`},me={class:`flex items-center gap-1.5 sm:gap-2`},he={class:`text-xs`},ge={class:`flex items-center gap-1.5 sm:gap-2`},_e={class:`text-xs`},ve={class:`space-y-2`},ye={key:0,class:`text-xs text-muted-foreground`},be={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`},xe={class:`font-medium text-muted-foreground`},Se={class:`space-y-1 sm:space-y-1.5`},Ce={class:`flex items-center gap-1.5 sm:gap-2`},we={class:`text-xs`},Te={class:`flex items-center gap-1.5 sm:gap-2`},Ee={class:`text-xs`},De={class:`flex items-center gap-1.5 sm:gap-2`},Oe={class:`text-xs`},K=ee({__name:`DefenseView`,setup(ee){let K=C(),ke=w(),{t:q}=ie(),{DEFENSES:J}=E(),Y=re(()=>K.currentPlanet),X=m(null),Z=m({[g.RocketLauncher]:0,[g.LightLaser]:0,[g.HeavyLaser]:0,[g.GaussCannon]:0,[g.IonCannon]:0,[g.PlasmaTurret]:0,[g.SmallShieldDome]:0,[g.LargeShieldDome]:0}),Q=e=>e===g.SmallShieldDome||e===g.LargeShieldDome,Ae=(e,t)=>{if(!K.currentPlanet||!k(K.currentPlanet,e,t,K.player.technologies).valid)return!1;let n=A(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 S(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,re)=>Y.value?(i(),o(`div`,j,[c(e,{"required-building":y(ce).Shipyard,"required-level":1},null,8,[`required-building`]),v(`h1`,M,b(y(q)(`defenseView.title`)),1),v(`div`,N,[(i(!0),o(r,null,se(Object.values(y(g)),e=>(i(),n(y(ae),{key:e,class:`relative`},{default:u(()=>[c(O,{requirements:y(J)[e].requirements},null,8,[`requirements`]),c(y(x),null,{default:u(()=>[v(`div`,P,[v(`div`,F,[c(y(oe),{class:`text-base sm:text-lg cursor-pointer hover:text-primary transition-colors`,onClick:t=>y(ke).openDefense(e)},{default:u(()=>[s(b(y(J)[e].name),1)]),_:2},1032,[`onClick`]),c(y(t),{class:`text-xs sm:text-sm`},{default:u(()=>[s(b(y(J)[e].description),1)]),_:2},1024)]),c(y(a),{variant:`secondary`,class:`text-xs whitespace-nowrap flex-shrink-0`},{default:u(()=>[s(b(Y.value.defense[e]),1)]),_:2},1024)])]),_:2},1024),c(y(p),null,{default:u(()=>[v(`div`,I,[v(`div`,L,[v(`div`,null,[v(`p`,R,b(y(q)(`defenseView.attack`)),1),v(`p`,z,b(y(J)[e].attack),1)]),v(`div`,null,[v(`p`,B,b(y(q)(`defenseView.shield`)),1),v(`p`,V,b(y(J)[e].shield),1)]),v(`div`,null,[v(`p`,H,b(y(q)(`defenseView.armor`)),1),v(`p`,U,b(y(J)[e].armor),1)]),v(`div`,null,[v(`p`,W,b(y(q)(`defenseView.buildTime`)),1),v(`p`,G,b(y(J)[e].buildTime)+b(y(q)(`defenseView.seconds`)),1)])]),v(`div`,le,[v(`p`,ue,b(y(q)(`defenseView.unitCost`))+`:`,1),v(`div`,de,[v(`div`,fe,[c(l,{type:`metal`,size:`sm`}),v(`span`,pe,b(y(q)(`resources.metal`))+`:`,1),v(`span`,{class:h([`font-medium text-xs sm:text-sm`,y(f)(Y.value.resources.metal,y(J)[e].cost.metal)])},b(y(d)(y(J)[e].cost.metal)),3)]),v(`div`,me,[c(l,{type:`crystal`,size:`sm`}),v(`span`,he,b(y(q)(`resources.crystal`))+`:`,1),v(`span`,{class:h([`font-medium text-xs sm:text-sm`,y(f)(Y.value.resources.crystal,y(J)[e].cost.crystal)])},b(y(d)(y(J)[e].cost.crystal)),3)]),v(`div`,ge,[c(l,{type:`deuterium`,size:`sm`}),v(`span`,_e,b(y(q)(`resources.deuterium`))+`:`,1),v(`span`,{class:h([`font-medium text-xs sm:text-sm`,y(f)(Y.value.resources.deuterium,y(J)[e].cost.deuterium)])},b(y(d)(y(J)[e].cost.deuterium)),3)])])]),v(`div`,ve,[c(y(te),{for:`quantity-${e}`,class:`text-xs sm:text-sm`},{default:u(()=>[s(b(y(q)(`defenseView.buildQuantity`)),1)]),_:1},8,[`for`]),c(y(ne),{id:`quantity-${e}`,modelValue:Z.value[e],"onUpdate:modelValue":t=>Z.value[e]=t,modelModifiers:{number:!0},type:`number`,min:`0`,max:Q(e)&&Y.value.defense[e]>0?0:void 0,disabled:Q(e)&&Y.value.defense[e]>0,placeholder:`0`,class:`text-sm`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`max`,`disabled`]),Q(e)&&Y.value.defense[e]>0?(i(),o(`p`,ye,b(y(q)(`defenseView.shieldDomeBuilt`)),1)):_(``,!0)]),Z.value[e]>0?(i(),o(`div`,be,[v(`p`,xe,b(y(q)(`defenseView.totalCost`))+`:`,1),v(`div`,Se,[v(`div`,Ce,[c(l,{type:`metal`,size:`sm`}),v(`span`,we,b(y(q)(`resources.metal`))+`:`,1),v(`span`,{class:h([`font-medium text-xs sm:text-sm`,y(f)(Y.value.resources.metal,$(e).metal)])},b(y(d)($(e).metal)),3)]),v(`div`,Te,[c(l,{type:`crystal`,size:`sm`}),v(`span`,Ee,b(y(q)(`resources.crystal`))+`:`,1),v(`span`,{class:h([`font-medium text-xs sm:text-sm`,y(f)(Y.value.resources.crystal,$(e).crystal)])},b(y(d)($(e).crystal)),3)]),v(`div`,De,[c(l,{type:`deuterium`,size:`sm`}),v(`span`,Oe,b(y(q)(`resources.deuterium`))+`:`,1),v(`span`,{class:h([`font-medium text-xs sm:text-sm`,y(f)(Y.value.resources.deuterium,$(e).deuterium)])},b(y(d)($(e).deuterium)),3)])])])):_(``,!0),c(y(T),{onClick:t=>je(e),disabled:!Me(e),class:`w-full`},{default:u(()=>[s(b(y(q)(`defenseView.build`)),1)]),_:1},8,[`onClick`,`disabled`])])]),_:2},1024)]),_:2},1024))),128))]),c(D,{ref_key:`alertDialog`,ref:X},null,512)])):_(``,!0)}});export{K as default};