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

1 line
8.6 KiB
JavaScript

import{t as e}from"./CardDescription-Cb9v68Xa.js";import{An as t,B as n,En as r,Fn as ee,Gn as i,H as te,I as a,It as o,L as ne,Mn as s,N as c,Nn as l,Nt as re,On as ie,P as u,Pn as d,Pt as f,Qn as p,R as m,V as h,W as g,bn as ae,dt as oe,er as _,ft as v,ir as y,jn as b,kn as x,lt as se,ot as ce,qn as le,rr as S,sr as C,ut as w,xn as T,z as E,zt as D}from"./index-BpOElaf9.js";import{t as O}from"./useGameConfig-DqswvIth.js";import{t as k}from"./AlertDialog-BbpHh-RO.js";var A={class:`container mx-auto p-4 sm:p-6 space-y-4 sm:space-y-6`},j={class:`text-2xl sm:text-3xl font-bold`},M={class:`grid grid-cols-2 sm:grid-cols-3 gap-4 sm:gap-6`},N={class:`flex justify-between items-start gap-2`},P={class:`min-w-0 flex-1`},F={key:0,class:`p-3 bg-blue-50 dark:bg-blue-950 rounded-lg`},I={class:`space-y-1 text-xs sm:text-sm`},L={class:`font-medium text-blue-700 dark:text-blue-300`},R={class:`text-muted-foreground`},z={class:`text-muted-foreground`},B={class:`space-y-2`},V={class:`text-sm font-medium text-muted-foreground`},H={class:`space-y-1.5`},U={class:`flex items-center gap-2`},W={class:`text-xs`},ue={class:`flex items-center gap-2`},de={class:`text-xs`},fe={class:`flex items-center gap-2`},pe={class:`text-xs`},me={key:0,class:`flex items-center gap-2`},he={class:`text-xs`},ge={class:`space-y-2`},_e={class:`text-sm font-medium text-muted-foreground`},ve={class:`space-y-1 text-xs sm:text-sm`},ye={key:0,class:`flex items-center gap-2`},be={key:1,class:`flex items-center gap-2`},xe={key:2,class:`flex items-center gap-2`},Se={key:3,class:`flex items-center gap-2`},Ce={key:4,class:`flex items-center gap-2`},we={key:5,class:`flex items-center gap-2`},Te={key:6,class:`flex items-center gap-2`},Ee={key:7,class:`flex items-center gap-2`},De={key:8,class:`flex items-center gap-2`},Oe={key:9,class:`flex items-center gap-2`},ke={class:`flex gap-2`},G=ee({__name:`OfficersView`,setup(ee){let{t:G}=ae(),{OFFICERS:K}=O(),q=T(),J=ie(()=>q.currentPlanet),Y=_(null),X=_(null),Z=e=>{let t=q.player.officers[e],n=Date.now();return t.active&&(!t.expiresAt||t.expiresAt>n)},Q=e=>q.player.officers[e].expiresAt||0,Ae=e=>{let t=q.player.officers[e];if(!t.expiresAt)return 0;let n=Date.now();return Math.max(0,Math.floor((t.expiresAt-n)/1e3))},$=e=>{if(!J.value)return!1;let t=K.value[e];return J.value.resources.metal>=t.cost.metal&&J.value.resources.crystal>=t.cost.crystal&&J.value.resources.deuterium>=t.cost.deuterium&&J.value.resources.darkMatter>=t.cost.darkMatter},je=(e,t=7)=>{if(!q.currentPlanet)return!1;let n=m(e);return c(q.currentPlanet.resources,n)?(u(q.currentPlanet.resources,n),q.player.officers[e]=a(e,t),!0):!1},Me=e=>{X.value?.show({title:G(`officersView.hireTitle`),message:G(`officersView.hireMessage`).replace(`{name}`,K.value[e].name),onConfirm:()=>{je(e,7)||Y.value?.show({title:G(`officersView.hireFailed`),message:G(`officersView.insufficientResources`)})}})},Ne=(e,t=7)=>{if(!q.currentPlanet)return!1;let n=m(e);if(!c(q.currentPlanet.resources,n))return!1;u(q.currentPlanet.resources,n);let r=Date.now();return q.player.officers[e]=E(q.player.officers[e],t,r),!0},Pe=e=>{X.value?.show({title:G(`officersView.renewTitle`),message:G(`officersView.renewMessage`).replace(`{name}`,K.value[e].name),onConfirm:()=>{Ne(e,7)||Y.value?.show({title:G(`officersView.renewFailed`),message:G(`officersView.insufficientResources`)})}})},Fe=e=>{X.value?.show({title:G(`officersView.dismissTitle`),message:G(`officersView.dismissMessage`).replace(`{name}`,K.value[e].name),onConfirm:()=>{q.player.officers[e]=ne(e)}})};return(ee,a)=>(i(),s(`div`,A,[x(`h1`,j,C(S(G)(`officersView.title`)),1),x(`div`,M,[(i(!0),s(r,null,le(Object.values(S(ce)),r=>(i(),t(S(v),{key:r},{default:p(()=>[d(S(w),null,{default:p(()=>[x(`div`,N,[x(`div`,P,[d(S(se),{class:`text-lg sm:text-xl`},{default:p(()=>[l(C(S(K)[r].name),1)]),_:2},1024),d(S(e),{class:`text-xs sm:text-sm`},{default:p(()=>[l(C(S(K)[r].description),1)]),_:2},1024)]),Z(r)?(i(),t(S(o),{key:0,variant:`default`,class:`text-xs`},{default:p(()=>[l(C(S(G)(`officersView.activated`)),1)]),_:1})):(i(),t(S(o),{key:1,variant:`outline`,class:`text-xs`},{default:p(()=>[l(C(S(G)(`officersView.inactive`)),1)]),_:1}))])]),_:2},1024),d(S(oe),{class:`space-y-4`},{default:p(()=>[Z(r)?(i(),s(`div`,F,[x(`div`,I,[x(`p`,L,C(S(G)(`officersView.activeStatus`)),1),x(`p`,R,C(S(G)(`officersView.expirationTime`))+`: `+C(S(n)(Q(r))),1),x(`p`,z,C(S(G)(`officersView.remainingTime`))+`: `+C(S(te)(Ae(r))),1)])])):b(``,!0),x(`div`,B,[x(`p`,V,C(S(G)(`officersView.recruitCost`))+` (7`+C(S(G)(`officersView.days`))+`):`,1),x(`div`,H,[x(`div`,U,[d(f,{type:`metal`,size:`sm`}),x(`span`,W,C(S(G)(`resources.metal`))+`:`,1),x(`span`,{class:y([`font-medium text-sm`,J.value?S(g)(J.value.resources.metal,S(K)[r].cost.metal):``])},C(S(h)(S(K)[r].cost.metal)),3)]),x(`div`,ue,[d(f,{type:`crystal`,size:`sm`}),x(`span`,de,C(S(G)(`resources.crystal`))+`:`,1),x(`span`,{class:y([`font-medium text-sm`,J.value?S(g)(J.value.resources.crystal,S(K)[r].cost.crystal):``])},C(S(h)(S(K)[r].cost.crystal)),3)]),x(`div`,fe,[d(f,{type:`deuterium`,size:`sm`}),x(`span`,pe,C(S(G)(`resources.deuterium`))+`:`,1),x(`span`,{class:y([`font-medium text-sm`,J.value?S(g)(J.value.resources.deuterium,S(K)[r].cost.deuterium):``])},C(S(h)(S(K)[r].cost.deuterium)),3)]),S(K)[r].cost.darkMatter>0?(i(),s(`div`,me,[d(f,{type:`darkMatter`,size:`sm`}),x(`span`,he,C(S(G)(`resources.darkMatter`))+`:`,1),x(`span`,{class:y([`font-medium text-sm`,J.value?S(g)(J.value.resources.darkMatter,S(K)[r].cost.darkMatter):``])},C(S(h)(S(K)[r].cost.darkMatter)),3)])):b(``,!0)])]),x(`div`,ge,[x(`p`,_e,C(S(G)(`officersView.benefitsBonus`))+`:`,1),x(`div`,ve,[S(K)[r].benefits.resourceProductionBonus?(i(),s(`div`,ye,[a[0]||=x(`span`,{class:`text-green-600 dark:text-green-400`},``,-1),x(`span`,null,C(S(G)(`officersView.resourceProduction`))+` +`+C(S(K)[r].benefits.resourceProductionBonus)+`%`,1)])):b(``,!0),S(K)[r].benefits.darkMatterProductionBonus?(i(),s(`div`,be,[a[1]||=x(`span`,{class:`text-green-600 dark:text-green-400`},``,-1),x(`span`,null,C(S(G)(`officersView.darkMatterProduction`))+` +`+C(S(K)[r].benefits.darkMatterProductionBonus)+`%`,1)])):b(``,!0),S(K)[r].benefits.buildingSpeedBonus?(i(),s(`div`,xe,[a[2]||=x(`span`,{class:`text-green-600 dark:text-green-400`},``,-1),x(`span`,null,C(S(G)(`officersView.buildingSpeed`))+` +`+C(S(K)[r].benefits.buildingSpeedBonus)+`%`,1)])):b(``,!0),S(K)[r].benefits.researchSpeedBonus?(i(),s(`div`,Se,[a[3]||=x(`span`,{class:`text-green-600 dark:text-green-400`},``,-1),x(`span`,null,C(S(G)(`officersView.researchSpeed`))+` +`+C(S(K)[r].benefits.researchSpeedBonus)+`%`,1)])):b(``,!0),S(K)[r].benefits.fleetSpeedBonus?(i(),s(`div`,Ce,[a[4]||=x(`span`,{class:`text-green-600 dark:text-green-400`},``,-1),x(`span`,null,C(S(G)(`officersView.fleetSpeed`))+` +`+C(S(K)[r].benefits.fleetSpeedBonus)+`%`,1)])):b(``,!0),S(K)[r].benefits.fuelConsumptionReduction?(i(),s(`div`,we,[a[5]||=x(`span`,{class:`text-green-600 dark:text-green-400`},``,-1),x(`span`,null,C(S(G)(`officersView.fuelConsumption`))+` -`+C(S(K)[r].benefits.fuelConsumptionReduction)+`%`,1)])):b(``,!0),S(K)[r].benefits.defenseBonus?(i(),s(`div`,Te,[a[6]||=x(`span`,{class:`text-green-600 dark:text-green-400`},``,-1),x(`span`,null,C(S(G)(`officersView.defense`))+` +`+C(S(K)[r].benefits.defenseBonus)+`%`,1)])):b(``,!0),S(K)[r].benefits.storageCapacityBonus?(i(),s(`div`,Ee,[a[7]||=x(`span`,{class:`text-green-600 dark:text-green-400`},``,-1),x(`span`,null,C(S(G)(`officersView.storageCapacity`))+` +`+C(S(K)[r].benefits.storageCapacityBonus)+`%`,1)])):b(``,!0),S(K)[r].benefits.additionalBuildQueue?(i(),s(`div`,De,[a[8]||=x(`span`,{class:`text-green-600 dark:text-green-400`},`+`,-1),x(`span`,null,C(S(G)(`officersView.buildQueue`))+` +`+C(S(K)[r].benefits.additionalBuildQueue),1)])):b(``,!0),S(K)[r].benefits.additionalFleetSlots?(i(),s(`div`,Oe,[a[9]||=x(`span`,{class:`text-green-600 dark:text-green-400`},`+`,-1),x(`span`,null,C(S(G)(`officersView.fleetSlots`))+` +`+C(S(K)[r].benefits.additionalFleetSlots),1)])):b(``,!0)])]),x(`div`,ke,[Z(r)?b(``,!0):(i(),t(S(D),{key:0,onClick:e=>Me(r),disabled:!$(r),class:`flex-1`},{default:p(()=>[l(C(S(G)(`officersView.hire`))+` (7`+C(S(G)(`officersView.days`))+`) `,1)]),_:1},8,[`onClick`,`disabled`])),Z(r)?(i(),t(S(D),{key:1,onClick:e=>Pe(r),disabled:!$(r),class:`flex-1`},{default:p(()=>[l(C(S(G)(`officersView.renew`))+` (7`+C(S(G)(`officersView.days`))+`) `,1)]),_:1},8,[`onClick`,`disabled`])):b(``,!0),Z(r)?(i(),t(S(D),{key:2,onClick:e=>Fe(r),variant:`outline`,size:`sm`},{default:p(()=>[l(C(S(G)(`officersView.dismiss`)),1)]),_:1},8,[`onClick`])):b(``,!0)])]),_:2},1024)]),_:2},1024))),128))]),d(k,{ref_key:`alertDialog`,ref:Y},null,512),d(re,{ref_key:`confirmDialog`,ref:X},null,512)]))}});export{G as default};