feat: 初始化项目结构与核心功能

引入项目基础目录结构,包含多语言支持、主要页面与组件、核心游戏逻辑、UI 组件库、加密与本地持久化、自动化 Docker 构建流程、GitHub issue 模板(中英文)、README(中英文)、LICENSE 及开发配置文件。实现 OGame 单机版主要功能模块,为后续开发和扩展奠定基础。
This commit is contained in:
谦君
2025-12-11 14:49:25 +08:00
commit 705ee8c3db
178 changed files with 17258 additions and 0 deletions

View File

@@ -0,0 +1 @@
import{An as e,Dn as t,Fn as n,Gn as r,Mn as i,Nn as a,Pn as o,Qn as s,bn as c,er as l,jn as u,kn as d,rr as f,sr as p,zt as m}from"./index-BpOElaf9.js";var h={key:0,class:`fixed inset-0 z-50 flex items-center justify-center`},g={class:`relative bg-card border rounded-lg shadow-lg p-6 max-w-md w-full mx-4 z-10`},_={class:`text-lg font-semibold mb-2`},v={class:`text-sm text-muted-foreground mb-6 whitespace-pre-line`},y={class:`flex justify-end gap-2`},b=n({__name:`AlertDialog`,setup(n,{expose:b}){let{t:x}=c(),S=l(!1),C=l(null),w=e=>{C.value=e,S.value=!0},T=()=>{C.value?.onConfirm&&C.value.onConfirm(),S.value=!1},E=()=>{S.value=!1};return b({show:w}),(n,c)=>(r(),e(t,{to:`body`},[S.value?(r(),i(`div`,h,[d(`div`,{class:`fixed inset-0 bg-black/50`,onClick:E}),d(`div`,g,[d(`h2`,_,p(C.value?.title),1),d(`p`,v,p(C.value?.message),1),d(`div`,y,[C.value?.onConfirm?(r(),e(f(m),{key:0,onClick:E,variant:`outline`},{default:s(()=>[a(p(f(x)(`common.cancel`)),1)]),_:1})):u(``,!0),o(f(m),{onClick:T,variant:`default`},{default:s(()=>[a(p(f(x)(`common.confirm`)),1)]),_:1})])])])):u(``,!0)]))}});export{b as t};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
import{Bt as e,Fn as t,Gn as n,Jn as r,Mn as i,ir as a,rr as o}from"./index-BpOElaf9.js";var s=t({__name:`CardDescription`,props:{class:{}},setup(t){let s=t;return(t,c)=>(n(),i(`p`,{"data-slot":`card-description`,class:a(o(e)(`text-muted-foreground text-sm`,s.class))},[r(t.$slots,`default`)],2))}});export{s as t};

View File

@@ -0,0 +1,2 @@
import{n as e}from"./UnlockRequirement-DeOUxO_t.js";import{Fn as t,Gn as n,Mn as r,Nn as i,On as a,Pn as o,Qn as s,bn as c,ct as l,er as u,jn as d,kn as f,rr as p,rt as m,sr as h,w as g,xn as _,zt as v}from"./index-BpOElaf9.js";import{t as y}from"./useGameConfig-DqswvIth.js";import{t as b}from"./AlertDialog-BbpHh-RO.js";var x={key:0,class:`absolute inset-0 z-10 bg-background/70 backdrop-blur-[2px] rounded-lg flex items-center justify-center`},S={class:`text-center p-4 space-y-2`},C={class:`flex justify-center`},w={class:`rounded-full bg-muted p-2`},T={class:`text-xs font-medium text-muted-foreground`},E=t({__name:`CardUnlockOverlay`,props:{requirements:{}},setup(t){let E=t,D=_(),{t:O}=c(),{BUILDINGS:k,TECHNOLOGIES:A}=y(),j=u(null),M=a(()=>!E.requirements||!D.currentPlanet?!0:g(D.currentPlanet,D.player.technologies,E.requirements)),N=()=>{if(!E.requirements||!D.currentPlanet)return``;let e=[];for(let[t,n]of Object.entries(E.requirements))if(Object.values(m).includes(t)){let r=t,i=D.currentPlanet.buildings[r]||0,a=k.value[r]?.name||r,o=i>=n?``:``;e.push(`${o} ${a}: Lv ${n} (${O(`common.current`)}: Lv ${i})`)}else if(Object.values(l).includes(t)){let r=t,i=D.player.technologies[r]||0,a=A.value[r]?.name||r,o=i>=n?``:``;e.push(`${o} ${a}: Lv ${n} (${O(`common.current`)}: Lv ${i})`)}return e.join(`
`)},P=()=>{j.value?.show({title:O(`common.requirementsNotMet`),message:N()})};return(t,a)=>M.value?d(``,!0):(n(),r(`div`,x,[f(`div`,S,[f(`div`,C,[f(`div`,w,[o(p(e),{size:20,class:`text-muted-foreground`})])]),f(`p`,T,h(p(O)(`common.locked`)),1),o(p(v),{variant:`outline`,size:`sm`,onClick:P,class:`text-xs`},{default:s(()=>[i(h(p(O)(`common.viewRequirements`)),1)]),_:1})]),o(b,{ref_key:`requirementsDialog`,ref:j},null,512)]))}});export{E as t};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
import{t as e}from"./CardDescription-Cb9v68Xa.js";import{An as t,D as n,E as r,En as i,F as a,Fn as o,Gn as s,It as c,M as l,Mn as u,Nn as d,On as f,Pn as p,Pt as m,Qn as h,U as g,V as _,_t as v,bn as ee,dt as y,ft as b,gt as x,ht as S,ir as C,j as w,jn as T,kn as E,lt as D,mt as O,pt as te,qn as k,rr as A,sr as j,ut as M,vt as N,xn as P,zt as F}from"./index-BpOElaf9.js";import{t as I}from"./useGameConfig-DqswvIth.js";var L={key:0,class:`container mx-auto p-4 sm:p-6 space-y-4 sm:space-y-6`},R={class:`text-center`},z={class:`text-2xl sm:text-3xl font-bold mb-1 sm:mb-2 flex items-center justify-center gap-2`},B={class:`text-xs sm:text-sm text-muted-foreground`},V={key:0,class:`mt-2`},H={key:1,class:`mt-2`},U={class:`flex items-center gap-2`},W={class:`grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-3 sm:gap-4`},G={class:`text-xs sm:text-sm text-muted-foreground`},K={class:`text-lg sm:text-xl font-bold`},q=o({__name:`OverviewView`,setup(o){let q=P(),{t:J}=ee(),{SHIPS:Y}=I(),X=f(()=>q.currentPlanet),Z=f(()=>X.value?n(X.value,q.player.officers):null),Q=f(()=>X.value?r(X.value,q.player.officers):null),ne=f(()=>{if(!X.value)return 0;let e=a(q.player.officers,Date.now());return l(X.value,{energyProductionBonus:e.energyProductionBonus})}),re=f(()=>X.value?w(X.value):0),ie=[{key:`metal`},{key:`crystal`},{key:`deuterium`},{key:`darkMatter`},{key:`energy`}],$=f(()=>!X.value||X.value.isMoon?null:ae(X.value.id)),ae=e=>q.player.planets.find(t=>t.isMoon&&t.parentPlanetId===e)||null,oe=()=>{$.value&&(q.currentPlanetId=$.value.id)},se=()=>{X.value?.parentPlanetId&&(q.currentPlanetId=X.value.parentPlanetId)};return(n,r)=>X.value?(s(),u(`div`,L,[E(`div`,R,[E(`h1`,z,[d(j(X.value.name)+` `,1),X.value.isMoon?(s(),t(A(c),{key:0,variant:`secondary`},{default:h(()=>[d(j(A(J)(`planet.moon`)),1)]),_:1})):T(``,!0)]),E(`p`,B,j(A(J)(`planet.position`))+`: [`+j(X.value.position.galaxy)+`:`+j(X.value.position.system)+`:`+j(X.value.position.position)+`] `,1),!X.value.isMoon&&$.value?(s(),u(`div`,V,[p(A(F),{onClick:oe,variant:`outline`,size:`sm`},{default:h(()=>[r[0]||=E(`span`,{class:`mr-2`},`🌙`,-1),d(` `+j(A(J)(`planet.switchToMoon`)),1)]),_:1})])):T(``,!0),X.value.isMoon?(s(),u(`div`,H,[p(A(F),{onClick:se,variant:`outline`,size:`sm`},{default:h(()=>[d(j(A(J)(`planet.backToPlanet`)),1)]),_:1})])):T(``,!0)]),p(A(b),null,{default:h(()=>[p(A(M),null,{default:h(()=>[p(A(D),null,{default:h(()=>[d(j(A(J)(`overview.resourceOverview`)),1)]),_:1})]),_:1}),p(A(y),null,{default:h(()=>[p(A(N),null,{default:h(()=>[p(A(te),null,{default:h(()=>[p(A(S),null,{default:h(()=>[p(A(O),null,{default:h(()=>[d(j(A(J)(`common.resourceType`)),1)]),_:1}),p(A(O),{class:`text-right`},{default:h(()=>[d(j(A(J)(`resources.current`)),1)]),_:1}),p(A(O),{class:`text-right`},{default:h(()=>[d(j(A(J)(`resources.max`)),1)]),_:1}),p(A(O),{class:`text-right`},{default:h(()=>[d(j(A(J)(`resources.production`))+j(A(J)(`resources.perHour`)),1)]),_:1})]),_:1})]),_:1}),p(A(v),null,{default:h(()=>[(s(),u(i,null,k(ie,e=>p(A(S),{key:e.key},{default:h(()=>[p(A(x),{class:`font-medium`},{default:h(()=>[E(`div`,U,[p(m,{type:e.key,size:`sm`},null,8,[`type`]),d(` `+j(A(J)(`resources.${e.key}`)),1)])]),_:2},1024),e.key===`energy`?(s(),u(i,{key:0},[p(A(x),{class:C([`text-right`,X.value.resources[e.key]>=0?`text-green-600 dark:text-green-400`:`text-red-600 dark:text-red-400`])},{default:h(()=>[d(j(A(_)(X.value.resources[e.key])),1)]),_:2},1032,[`class`]),p(A(x),{class:`text-right text-muted-foreground`},{default:h(()=>[...r[1]||=[d(`-`,-1)]]),_:1}),p(A(x),{class:`text-right text-muted-foreground`},{default:h(()=>[d(j(A(_)(ne.value))+` / `+j(A(_)(re.value)),1)]),_:1})],64)):(s(),u(i,{key:1},[p(A(x),{class:C([`text-right`,A(g)(X.value.resources[e.key],Q.value?.[e.key]||1/0)])},{default:h(()=>[d(j(A(_)(X.value.resources[e.key])),1)]),_:2},1032,[`class`]),p(A(x),{class:`text-right text-muted-foreground`},{default:h(()=>[d(j(A(_)(Q.value?.[e.key]||0)),1)]),_:2},1024),p(A(x),{class:`text-right text-muted-foreground`},{default:h(()=>[d(j(A(_)(Z.value?.[e.key]||0)),1)]),_:2},1024)],64))]),_:2},1024)),64))]),_:1})]),_:1})]),_:1})]),_:1}),p(A(b),null,{default:h(()=>[p(A(M),null,{default:h(()=>[p(A(D),null,{default:h(()=>[d(j(A(J)(`overview.fleetInfo`)),1)]),_:1}),p(A(e),null,{default:h(()=>[d(j(A(J)(`overview.currentShips`)),1)]),_:1})]),_:1}),p(A(y),null,{default:h(()=>[E(`div`,W,[(s(!0),u(i,null,k(X.value.fleet,(e,t)=>(s(),u(`div`,{key:t},[E(`p`,G,j(A(Y)[t].name),1),E(`p`,K,j(e),1)]))),128))])]),_:1})]),_:1})])):T(``,!0)}});export{q as default};

View File

@@ -0,0 +1 @@
import{t as e}from"./UnlockRequirement-DeOUxO_t.js";import{t}from"./CardDescription-Cb9v68Xa.js";import{An as n,En as r,Fn as i,Gn as a,It as o,Mn as s,Nn as c,On as l,Pn as u,Pt as d,Qn as f,V as p,W as m,Z as h,bn as ee,ct as te,dt as ne,er as re,ft as ie,ir as g,jn as _,kn as v,lt as ae,qn as oe,rr as y,rt as b,sr as x,ut as S,v as C,w,xn as T,y as E,yt as D,zt as O}from"./index-BpOElaf9.js";import{t as k}from"./useGameConfig-DqswvIth.js";import{t as A}from"./AlertDialog-BbpHh-RO.js";import{t as j}from"./CardUnlockOverlay-tiSNfyF3.js";var M={key:0,class:`container mx-auto p-4 sm:p-6`},N={class:`text-2xl sm:text-3xl font-bold mb-4 sm:mb-6`},P={class:`grid grid-cols-2 lg:grid-cols-3 gap-3 sm:gap-4`},F={class:`flex justify-between items-start gap-2`},I={class:`min-w-0 flex-1`},L={class:`space-y-2.5 sm:space-y-3`},se={class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2`},R={class:`text-muted-foreground mb-1 sm:mb-2`},z={class:`space-y-1 sm:space-y-1.5`},B={class:`flex items-center gap-1.5 sm:gap-2`},V={class:`text-xs`},H={class:`flex items-center gap-1.5 sm:gap-2`},U={class:`text-xs`},W={class:`flex items-center gap-1.5 sm:gap-2`},G={class:`text-xs`},K=i({__name:`ResearchView`,setup(i){let K=T(),ce=D(),{t:q}=ee(),{TECHNOLOGIES:J}=k(),Y=l(()=>K.currentPlanet),X=l(()=>K.player),Z=re(null),le=e=>{if(!K.currentPlanet||!E(K.currentPlanet,e,K.player.technologies,K.player.researchQueue).valid)return!1;let t=K.player.technologies[e]||0,{queueItem:n}=C(K.currentPlanet,e,t,K.player.officers);return K.player.researchQueue.push(n),!0},ue=e=>{le(e)||Z.value?.show({title:q(`researchView.researchFailed`),message:q(`researchView.researchFailedMessage`)})},Q=e=>X.value.technologies[e]||0,de=e=>{if(!Y.value||X.value.researchQueue.length>0)return!1;let t=J.value[e],n=$(e,Q(e)+1);return w(Y.value,K.player.technologies,t.requirements)&&Y.value.resources.metal>=n.metal&&Y.value.resources.crystal>=n.crystal&&Y.value.resources.deuterium>=n.deuterium},$=(e,t)=>h(e,t);return(i,l)=>Y.value?(a(),s(`div`,M,[u(e,{"required-building":y(b).ResearchLab,"required-level":1},null,8,[`required-building`]),v(`h1`,N,x(y(q)(`researchView.title`)),1),v(`div`,P,[(a(!0),s(r,null,oe(Object.values(y(te)),e=>(a(),n(y(ie),{key:e,class:`relative`},{default:f(()=>[u(j,{requirements:y(J)[e].requirements},null,8,[`requirements`]),u(y(S),null,{default:f(()=>[v(`div`,F,[v(`div`,I,[u(y(ae),{class:`text-base sm:text-lg cursor-pointer hover:text-primary transition-colors`,onClick:t=>y(ce).openTechnology(e,Q(e))},{default:f(()=>[c(x(y(J)[e].name),1)]),_:2},1032,[`onClick`]),u(y(t),{class:`text-xs sm:text-sm`},{default:f(()=>[c(x(y(J)[e].description),1)]),_:2},1024)]),u(y(o),{variant:`secondary`,class:`text-xs whitespace-nowrap flex-shrink-0`},{default:f(()=>[c(`Lv `+x(Q(e)),1)]),_:2},1024)])]),_:2},1024),u(y(ne),null,{default:f(()=>[v(`div`,L,[v(`div`,se,[v(`p`,R,x(y(q)(`researchView.researchCost`))+`:`,1),v(`div`,z,[v(`div`,B,[u(d,{type:`metal`,size:`sm`}),v(`span`,V,x(y(q)(`resources.metal`))+`:`,1),v(`span`,{class:g([`font-medium text-xs sm:text-sm`,y(m)(Y.value.resources.metal,$(e,Q(e)+1).metal)])},x(y(p)($(e,Q(e)+1).metal)),3)]),v(`div`,H,[u(d,{type:`crystal`,size:`sm`}),v(`span`,U,x(y(q)(`resources.crystal`))+`:`,1),v(`span`,{class:g([`font-medium text-xs sm:text-sm`,y(m)(Y.value.resources.crystal,$(e,Q(e)+1).crystal)])},x(y(p)($(e,Q(e)+1).crystal)),3)]),v(`div`,W,[u(d,{type:`deuterium`,size:`sm`}),v(`span`,G,x(y(q)(`resources.deuterium`))+`:`,1),v(`span`,{class:g([`font-medium text-xs sm:text-sm`,y(m)(Y.value.resources.deuterium,$(e,Q(e)+1).deuterium)])},x(y(p)($(e,Q(e)+1).deuterium)),3)])])]),u(y(O),{onClick:t=>ue(e),disabled:!de(e),class:`w-full`},{default:f(()=>[c(x(y(q)(`researchView.research`)),1)]),_:1},8,[`onClick`,`disabled`])])]),_:2},1024)]),_:2},1024))),128))]),u(A,{ref_key:`alertDialog`,ref:Z},null,512)])):_(``,!0)}});export{K as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
import{t as e}from"./CardDescription-Cb9v68Xa.js";import{At as t,Fn as n,Gn as r,It as i,Mn as a,Nn as o,On as s,Pn as c,Qn as l,bn as u,dt as d,ft as f,jn as p,jt as m,kn as h,lt as g,rr as _,sr as v,ut as y,wn as b,xn as x,zt as S}from"./index-BpOElaf9.js";import{t as C}from"./useGameConfig-DqswvIth.js";var w=m(`lock`,[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`,key:`1w4ew1`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`,key:`fwvmzm`}]]),T={key:0,class:`fixed inset-0 z-50 bg-background/80 backdrop-blur-sm flex items-center justify-center p-4`},E={class:`flex justify-center mb-4`},D={class:`rounded-full bg-muted p-4`},O={class:`p-4 bg-muted rounded-lg space-y-2`},k={class:`text-sm font-medium text-center`},A={class:`flex items-center justify-center gap-2`},j={class:`text-base sm:text-lg font-bold`},M={key:0,class:`text-xs text-center text-muted-foreground`},N={class:`flex gap-2`},P=n({__name:`UnlockRequirement`,props:{requiredBuilding:{},requiredLevel:{}},setup(n){let m=n,P=b(),F=x(),{t:I}=u(),{BUILDINGS:L}=C(),R=s(()=>L.value[m.requiredBuilding]?.name||m.requiredBuilding),z=s(()=>F.currentPlanet&&F.currentPlanet.buildings[m.requiredBuilding]||0),B=s(()=>z.value>=m.requiredLevel),V=()=>{P.push(`/buildings`)};return(s,u)=>B.value?p(``,!0):(r(),a(`div`,T,[c(_(f),{class:`max-w-md w-full`},{default:l(()=>[c(_(y),{class:`text-center`},{default:l(()=>[h(`div`,E,[h(`div`,D,[c(_(w),{size:48,class:`text-muted-foreground`})])]),c(_(g),{class:`text-xl sm:text-2xl`},{default:l(()=>[o(v(_(I)(`common.featureLocked`)),1)]),_:1}),c(_(e),{class:`text-sm sm:text-base`},{default:l(()=>[o(v(_(I)(`common.unlockRequired`)),1)]),_:1})]),_:1}),c(_(d),{class:`space-y-4`},{default:l(()=>[h(`div`,O,[h(`p`,k,v(_(I)(`common.requiredBuilding`))+`:`,1),h(`div`,A,[h(`span`,j,v(R.value),1),c(_(i),{variant:`default`},{default:l(()=>[o(`Lv `+v(n.requiredLevel),1)]),_:1})]),z.value===void 0?p(``,!0):(r(),a(`p`,M,v(_(I)(`common.currentLevel`))+`: Lv `+v(z.value),1))]),h(`div`,N,[c(_(S),{onClick:V,class:`flex-1`},{default:l(()=>[c(_(t),{size:16,class:`mr-2`}),o(` `+v(_(I)(`common.goToBuildings`)),1)]),_:1})])]),_:1})]),_:1})]))}});export{w as n,P as t};

View File

@@ -0,0 +1 @@
import{jt as e}from"./index-BpOElaf9.js";var t=e(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]);export{t};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1 @@
import{F as e,N as t,P as n,T as r,a as i,c as a,d as o,f as s,l as c,n as l,o as u,p as d,r as f,s as p,t as m,u as h}from"./index-BpOElaf9.js";const g=(e,n,r,i)=>{let a=u(n,r);return h(n,e.buildings,i)?t(e.resources,a)?{valid:!0}:{valid:!1,reason:`资源不足`}:{valid:!1,reason:`不满足前置条件`}},_=(t,r,a,o)=>{let c=u(r,a),l=i(r,a,e(o,Date.now()).buildingSpeedBonus);return n(t.resources,c),s(r,a,l)},v=(e,n,r,i)=>{let a=l(n,r);return p(n,e.buildings,i)?t(e.resources,a)?c(n,e.defense,r)?{valid:!0}:{valid:!1,reason:`护盾罩数量限制`}:{valid:!1,reason:`资源不足`}:{valid:!1,reason:`不满足前置条件`}},y=(t,r,i,a)=>{let s=l(r,i),c=m(r,i,e(a,Date.now()).buildingSpeedBonus);return n(t.resources,s),o(r,i,c)},b=(t,n,i,o,s=0)=>{let c=e(o,Date.now());if(s>=r(c.additionalFleetSlots))return{valid:!1,reason:`舰队任务槽位已满`};if(!a(t.fleet,n))return{valid:!1,reason:`舰队数量不足`};let l=f(n,c.fuelConsumptionReduction,i);return t.resources.deuterium<l?{valid:!1,reason:`燃料不足`,fuelNeeded:l}:{valid:!0,fuelNeeded:l}},x=(e,t,r,i,a)=>{d(e.fleet,t),e.resources.deuterium-=r,i&&n(e.resources,a)};export{b as a,v as i,x as n,g as o,_ as r,y as t};

View File

@@ -0,0 +1 @@
import{$ as e,On as t,Q as n,bn as r,ct as i,et as a,it as o,nt as s,ot as c,rt as l,st as u,tt as d}from"./index-BpOElaf9.js";const f=()=>{let{t:f}=r(),p={[l.MetalMine]:`metalMine`,[l.CrystalMine]:`crystalMine`,[l.DeuteriumSynthesizer]:`deuteriumSynthesizer`,[l.SolarPlant]:`solarPlant`,[l.RoboticsFactory]:`roboticsFactory`,[l.NaniteFactory]:`naniteFactory`,[l.Shipyard]:`shipyard`,[l.ResearchLab]:`researchLab`,[l.MetalStorage]:`metalStorage`,[l.CrystalStorage]:`crystalStorage`,[l.DeuteriumTank]:`deuteriumTank`,[l.DarkMatterCollector]:`darkMatterCollector`,[l.LunarBase]:`lunarBase`,[l.SensorPhalanx]:`sensorPhalanx`,[l.JumpGate]:`jumpGate`},m={[u.LightFighter]:`lightFighter`,[u.HeavyFighter]:`heavyFighter`,[u.Cruiser]:`cruiser`,[u.Battleship]:`battleship`,[u.SmallCargo]:`smallCargo`,[u.LargeCargo]:`largeCargo`,[u.ColonyShip]:`colonyShip`,[u.Recycler]:`recycler`,[u.EspionageProbe]:`espionageProbe`,[u.DarkMatterHarvester]:`darkMatterHarvester`},h={[o.RocketLauncher]:`rocketLauncher`,[o.LightLaser]:`lightLaser`,[o.HeavyLaser]:`heavyLaser`,[o.GaussCannon]:`gaussCannon`,[o.IonCannon]:`ionCannon`,[o.PlasmaTurret]:`plasmaTurret`,[o.SmallShieldDome]:`smallShieldDome`,[o.LargeShieldDome]:`largeShieldDome`},g={[i.EnergyTechnology]:`energyTechnology`,[i.LaserTechnology]:`laserTechnology`,[i.IonTechnology]:`ionTechnology`,[i.HyperspaceTechnology]:`hyperspaceTechnology`,[i.PlasmaTechnology]:`plasmaTechnology`,[i.ComputerTechnology]:`computerTechnology`,[i.CombustionDrive]:`combustionDrive`,[i.ImpulseDrive]:`impulseDrive`,[i.HyperspaceDrive]:`hyperspaceDrive`,[i.DarkMatterTechnology]:`darkMatterTechnology`},_={[c.Commander]:`commander`,[c.Admiral]:`admiral`,[c.Engineer]:`engineer`,[c.Geologist]:`geologist`,[c.Technocrat]:`technocrat`,[c.DarkMatterSpecialist]:`darkMatterSpecialist`};return{BUILDINGS:t(()=>{let e={};for(let[t,r]of Object.entries(n)){let n=t,i=p[n];e[n]={...r,name:f(`buildings.${i}`),description:f(`buildingDescriptions.${i}`)}}return e}),SHIPS:t(()=>{let e={};for(let[t,n]of Object.entries(d)){let r=t,i=m[r];e[r]={...n,name:f(`ships.${i}`),description:f(`shipDescriptions.${i}`)}}return e}),DEFENSES:t(()=>{let t={};for(let[n,r]of Object.entries(e)){let e=n,i=h[e];t[e]={...r,name:f(`defenses.${i}`),description:f(`defenseDescriptions.${i}`)}}return t}),TECHNOLOGIES:t(()=>{let e={};for(let[t,n]of Object.entries(s)){let r=t,i=g[r];e[r]={...n,name:f(`technologies.${i}`),description:f(`technologyDescriptions.${i}`)}}return e}),OFFICERS:t(()=>{let e={};for(let[t,n]of Object.entries(a)){let r=t,i=_[r];e[r]={...n,name:f(`officers.${i}`),description:f(`officerDescriptions.${i}`)}}return e})}};export{f as t};

17
docs/index.html Normal file
View File

@@ -0,0 +1,17 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="./logo.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>OGame-Vue-Ts</title>
<script type="module" crossorigin src="./assets/index-BpOElaf9.js"></script>
<link rel="stylesheet" crossorigin href="./assets/index-BXmZ_V9Y.css">
</head>
<body>
<div id="app"></div>
</body>
</html>

1
docs/logo.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 12 KiB