Merge remote-tracking branch 'origin/main'

# Conflicts:
#	docs/index.html
This commit is contained in:
coolxitech
2025-12-14 16:07:20 +08:00
25 changed files with 51 additions and 6 deletions

12
dist-electron/main.js Normal file
View File

@@ -0,0 +1,12 @@
import { BrowserWindow, app } from "electron";
import path, { dirname } from "node:path";
import { fileURLToPath } from "node:url";
app.whenReady().then(() => {
let i = dirname(fileURLToPath(import.meta.url)), a = new BrowserWindow({
title: "OGame",
icon: path.join(i, "../public/favicon.ico"),
width: 1200,
height: 800
});
a.setMenu(null), process.env.VITE_DEV_SERVER_URL ? a.loadURL(process.env.VITE_DEV_SERVER_URL) : a.loadFile("docs/index.html");
});

View File

@@ -0,0 +1 @@
import{At as e,Cn as t,Dt as n,Kt as r,Mt as i,Nt as a,On as o,Ot as s,hn as c,in as l,jt as u,kt as d,wt as f}from"./game-logic-CfBcTF_c.js";import{M as p,P as m}from"./index-DWmvUlvu.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=a({__name:`AlertDialog`,setup(a,{expose:b}){let{t:x}=m(),S=c(!1),C=c(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}),(a,c)=>(r(),s(f,{to:`body`},[S.value?(r(),e(`div`,h,[n(`div`,{class:`fixed inset-0 bg-black/50`,onClick:E}),n(`div`,g,[n(`h2`,_,o(C.value?.title),1),n(`p`,v,o(C.value?.message),1),n(`div`,y,[C.value?.onConfirm?(r(),s(t(p),{key:0,onClick:E,variant:`outline`},{default:l(()=>[u(o(t(x)(`common.cancel`)),1)]),_:1})):d(``,!0),i(t(p),{onClick:T,variant:`default`},{default:l(()=>[u(o(t(x)(`common.confirm`)),1)]),_:1})])])])):d(``,!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,2 @@
import{At as e,Cn as t,Ct as n,Dt as r,Et as i,Jt as a,Kt as o,M as s,Mt as c,N as ee,Nt as l,O as u,On as d,Ot as f,P as p,Tn as m,ct as te,dt as ne,hn as h,in as g,j as _,jt as v,k as re,kt as y,lt as ie,ut as ae}from"./game-logic-CfBcTF_c.js";import"./vendor-pinia-DP9x75p8.js";import"./vendor-crypto-Ce_BCn-h.js";import"./game-i18n-DEf7ySVe.js";import"./vendor-others-CUjrprN5.js";import"./vendor-reka-ui-CZQh7FLl.js";import"./vendor-utils-Dg-HLkEU.js";import"./vendor-vueuse-C7EbLx--.js";import{M as b,z as oe}from"./vendor-icons-W6Ny__75.js";import{t as se}from"./CardDescription-D2AN1hhX.js";import{h as ce,u as x}from"./game-config-D-D7cMgJ.js";import{A as le,I as ue,M as S,P as C,_ as w,c as T,i as E,l as D,o as O,r as k,s as A,u as j,w as M}from"./index-DWmvUlvu.js";import{t as N}from"./useGameConfig-B5wf1i8i.js";import{t as P}from"./AlertDialog-CiXBEnQ0.js";import{t as F}from"./CardUnlockOverlay-BA1LyGjd.js";var I={key:0,class:`container mx-auto p-4 sm:p-6`},L={class:`flex justify-between items-center mb-4 sm:mb-6 gap-2`},R={class:`text-2xl sm:text-3xl font-bold`},z={class:`text-xs sm:text-sm`},B={class:`flex items-center gap-1.5 text-muted-foreground`},V={class:`grid grid-cols-2 lg:grid-cols-3 gap-3 sm:gap-4`},H={class:`flex justify-between items-start gap-2`},U={class:`min-w-0 flex-1`},de={class:`space-y-3`},fe={class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2`},pe={class:`text-muted-foreground mb-1 sm:mb-2`},me={class:`space-y-1 sm:space-y-1.5`},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:`flex items-center gap-1.5 sm:gap-2`},be={class:`text-xs`},xe={class:`text-xs sm:text-sm space-y-0.5 sm:space-y-1`},Se={class:`flex items-center gap-1.5 text-muted-foreground`},Ce={class:`flex items-center gap-1.5 text-muted-foreground`},we={key:1,class:`text-xs text-muted-foreground`},Te={class:`flex gap-2 flex-wrap`},W=l({__name:`BuildingsView`,setup(l){let W=ue(),Ee=w(),{t:G}=C(),{BUILDINGS:K,TECHNOLOGIES:De}=N(),q=i(()=>W.currentPlanet),J=h(null),Oe=i(()=>q.value?Object.values(x).filter(e=>{let t=K.value[e];return q.value.isMoon?t.moonOnly===!0:t.moonOnly!==!0}):[]),ke=e=>{if(!W.currentPlanet||!s(W.currentPlanet,e,W.player.technologies,W.player.officers).valid)return!1;let t=re(W.currentPlanet,e,W.player.officers);return W.currentPlanet.buildQueue.push(t),!0},Ae=e=>ne(e),je=e=>{if(!X(e)){J.value?.show({title:G(`common.requirementsNotMet`),message:Z(e)});return}ke(e)||J.value?.show({title:G(`buildingsView.upgradeFailed`),message:G(`buildingsView.upgradeFailedMessage`)})},Y=e=>q.value?.buildings[e]||0,X=e=>{if(!q.value)return!1;let t=K.value[e],n=p(t,Y(e)+1);return!n||Object.keys(n).length===0?!0:ee(q.value,W.player.technologies,n)},Me=e=>{if(!q.value)return G(`buildingsView.upgrade`);let t=K.value[e],n=Y(e);return t.maxLevel!==void 0&&n>=t.maxLevel?G(`buildingsView.maxLevelReached`):q.value.buildQueue.length>0||X(e)?G(`buildingsView.upgrade`):G(`buildingsView.requirementsNotMet`)},Z=e=>{let t=K.value[e],n=p(t,Y(e)+1);if(!n||!q.value)return``;let r=[];for(let[e,t]of Object.entries(n))if(Object.values(x).includes(e)){let n=e,i=q.value.buildings[n]||0,a=K.value[n]?.name||n,o=i>=t?``:``;r.push(`${o} ${a}: Lv ${t} (${G(`common.current`)}: Lv ${i})`)}else if(Object.values(ce).includes(e)){let n=e,i=W.player.technologies[n]||0,a=De.value[n]?.name||n,o=i>=t?``:``;r.push(`${o} ${a}: Lv ${t} (${G(`common.current`)}: Lv ${i})`)}return r.join(`
`)},Ne=e=>{if(!q.value)return!1;let t=K.value[e],n=Y(e);if(t.maxLevel!==void 0&&n>=t.maxLevel||q.value.buildQueue.length>0||!s(q.value,e,W.player.technologies,W.player.officers).valid)return!1;let r=Q(e,n+1);return q.value.resources.metal>=r.metal&&q.value.resources.crystal>=r.crystal&&q.value.resources.deuterium>=r.deuterium},Q=(e,t)=>te(e,t),Pe=(e,t)=>ie(e,t),Fe=e=>{if(!W.currentPlanet||!_(W.currentPlanet,e,W.player.officers).valid)return!1;let t=u(W.currentPlanet,e,W.player.officers);return W.currentPlanet.buildQueue.push(t),!0},Ie=e=>{Fe(e)||J.value?.show({title:G(`buildingsView.demolishFailed`),message:G(`buildingsView.demolishFailedMessage`)})},Le=e=>!q.value||q.value.buildQueue.length>0?!1:Y(e)>0,$=e=>ae(e,Y(e));return(i,s)=>q.value?(o(),e(`div`,I,[r(`div`,L,[r(`h1`,R,d(t(G)(`buildingsView.title`)),1),r(`div`,z,[r(`span`,B,[c(t(b),{size:14}),v(` `+d(Ae(q.value))+` / `+d(q.value.maxSpace),1)])])]),r(`div`,V,[(o(!0),e(n,null,a(Oe.value,n=>(o(),f(t(j),{key:n,class:`relative`},{default:g(()=>[c(F,{requirements:t(K)[n].requirements,currentLevel:Y(n)},null,8,[`requirements`,`currentLevel`]),c(t(T),null,{default:g(()=>[r(`div`,H,[r(`div`,U,[c(t(A),{class:`text-base sm:text-lg cursor-pointer hover:text-primary transition-colors`,onClick:e=>t(Ee).openBuilding(n,Y(n))},{default:g(()=>[v(d(t(K)[n].name),1)]),_:2},1032,[`onClick`]),c(t(se),{class:`text-xs sm:text-sm`},{default:g(()=>[v(d(t(K)[n].description),1)]),_:2},1024)]),c(t(le),{variant:`secondary`,class:`text-xs whitespace-nowrap flex-shrink-0`},{default:g(()=>[v(`Lv `+d(Y(n)),1)]),_:2},1024)])]),_:2},1024),c(t(D),null,{default:g(()=>[r(`div`,de,[r(`div`,fe,[r(`p`,pe,d(t(G)(`buildingsView.upgradeCost`))+`:`,1),r(`div`,me,[r(`div`,he,[c(M,{type:`metal`,size:`sm`}),r(`span`,ge,d(t(G)(`resources.metal`))+`:`,1),r(`span`,{class:m([`font-medium text-xs sm:text-sm`,t(O)(q.value.resources.metal,Q(n,Y(n)+1).metal)])},d(t(k)(Q(n,Y(n)+1).metal)),3)]),r(`div`,_e,[c(M,{type:`crystal`,size:`sm`}),r(`span`,ve,d(t(G)(`resources.crystal`))+`:`,1),r(`span`,{class:m([`font-medium text-xs sm:text-sm`,t(O)(q.value.resources.crystal,Q(n,Y(n)+1).crystal)])},d(t(k)(Q(n,Y(n)+1).crystal)),3)]),r(`div`,ye,[c(M,{type:`deuterium`,size:`sm`}),r(`span`,be,d(t(G)(`resources.deuterium`))+`:`,1),r(`span`,{class:m([`font-medium text-xs sm:text-sm`,t(O)(q.value.resources.deuterium,Q(n,Y(n)+1).deuterium)])},d(t(k)(Q(n,Y(n)+1).deuterium)),3)])])]),r(`div`,xe,[r(`div`,Se,[c(t(oe),{size:14,class:`flex-shrink-0`}),r(`span`,null,d(t(E)(Pe(n,Y(n)+1))),1)]),r(`div`,Ce,[c(t(b),{size:14,class:`flex-shrink-0`}),r(`span`,null,d(t(K)[n].spaceUsage),1)])]),c(t(S),{onClick:e=>je(n),disabled:!Ne(n),class:`w-full`},{default:g(()=>[v(d(Me(n)),1)]),_:2},1032,[`onClick`,`disabled`]),Y(n)>0?(o(),f(t(S),{key:0,onClick:e=>Ie(n),disabled:!Le(n),variant:`destructive`,class:`w-full`},{default:g(()=>[v(d(t(G)(`buildingsView.demolish`)),1)]),_:1},8,[`onClick`,`disabled`])):y(``,!0),Y(n)>0?(o(),e(`div`,we,[r(`p`,null,d(t(G)(`buildingsView.demolishRefund`))+`:`,1),r(`div`,Te,[r(`span`,null,d(t(k)($(n).metal))+` `+d(t(G)(`resources.metal`)),1),r(`span`,null,d(t(k)($(n).crystal))+` `+d(t(G)(`resources.crystal`)),1),r(`span`,null,d(t(k)($(n).deuterium))+` `+d(t(G)(`resources.deuterium`)),1)])])):y(``,!0)])]),_:2},1024)]),_:2},1024))),128))]),c(P,{ref_key:`alertDialog`,ref:J},null,512)])):y(``,!0)}});export{W as default};

View File

@@ -0,0 +1 @@
import{At as e,Cn as t,Kt as n,Nt as r,Tn as i,Yt as a}from"./game-logic-CfBcTF_c.js";import{N as o}from"./index-DWmvUlvu.js";var s=r({__name:`CardDescription`,props:{class:{}},setup(r){let s=r;return(r,c)=>(n(),e(`p`,{"data-slot":`card-description`,class:i(t(o)(`text-muted-foreground text-sm`,s.class))},[a(r.$slots,`default`)],2))}});export{s as t};

View File

@@ -0,0 +1,2 @@
import{At as e,Cn as t,Dt as n,Et as r,Kt as i,Mt as a,N as o,Nt as s,On as c,hn as l,in as u,jt as d,kt as f}from"./game-logic-CfBcTF_c.js";import{D as p}from"./vendor-icons-W6Ny__75.js";import{h as m,u as h}from"./game-config-D-D7cMgJ.js";import{I as g,M as _,P as v}from"./index-DWmvUlvu.js";import{t as y}from"./useGameConfig-B5wf1i8i.js";import{t as b}from"./AlertDialog-CiXBEnQ0.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=s({__name:`CardUnlockOverlay`,props:{requirements:{},currentLevel:{}},setup(s){let E=s,D=g(),{t:O}=v(),{BUILDINGS:k,TECHNOLOGIES:A}=y(),j=l(null),M=r(()=>E.currentLevel!==void 0&&E.currentLevel>0||!E.requirements||!D.currentPlanet?!0:o(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(h).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(m).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(r,o)=>M.value?f(``,!0):(i(),e(`div`,x,[n(`div`,S,[n(`div`,C,[n(`div`,w,[a(t(p),{size:20,class:`text-muted-foreground`})])]),n(`p`,T,c(t(O)(`common.locked`)),1),a(t(_),{variant:`outline`,size:`sm`,onClick:P,class:`text-xs`},{default:u(()=>[d(c(t(O)(`common.viewRequirements`)),1)]),_:1})]),a(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

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,2 @@
import{At as e,Cn as t,Ct as n,Dt as r,E as i,Et as a,Jt as o,Kt as s,Mt as c,N as l,Nt as u,On as d,Ot as ee,P as f,T as p,Tn as m,gt as te,hn as h,in as g,jt as _,kt as ne}from"./game-logic-CfBcTF_c.js";import"./vendor-pinia-DP9x75p8.js";import"./vendor-vue-router-CWDMmE-U.js";import"./vendor-crypto-Ce_BCn-h.js";import"./game-i18n-DEf7ySVe.js";import"./vendor-others-CUjrprN5.js";import"./vendor-reka-ui-CZQh7FLl.js";import"./vendor-utils-Dg-HLkEU.js";import"./vendor-vueuse-C7EbLx--.js";import"./vendor-icons-W6Ny__75.js";import{t as re}from"./CardDescription-D2AN1hhX.js";import{h as v,u as y}from"./game-config-D-D7cMgJ.js";import{A as ie,I as ae,M as oe,P as se,_ as ce,c as le,l as b,o as x,r as S,s as C,u as w,w as T}from"./index-DWmvUlvu.js";import{t as E}from"./useGameConfig-B5wf1i8i.js";import{t as D}from"./AlertDialog-CiXBEnQ0.js";import{t as O}from"./CardUnlockOverlay-BA1LyGjd.js";import{t as k}from"./UnlockRequirement-c2kDZKZ0.js";var A={key:0,class:`container mx-auto p-4 sm:p-6`},j={class:`text-2xl sm:text-3xl font-bold mb-4 sm:mb-6`},M={class:`grid grid-cols-2 lg:grid-cols-3 gap-3 sm:gap-4`},N={class:`flex justify-between items-start gap-2`},P={class:`min-w-0 flex-1`},F={class:`space-y-2.5 sm:space-y-3`},I={class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2`},L={class:`text-muted-foreground mb-1 sm:mb-2`},R={class:`space-y-1 sm:space-y-1.5`},z={class:`flex items-center gap-1.5 sm:gap-2`},ue={class:`text-xs`},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=u({__name:`ResearchView`,setup(u){let W=ae(),de=ce(),{t:G}=se(),{TECHNOLOGIES:K,BUILDINGS:fe}=E(),q=a(()=>W.currentPlanet),J=a(()=>W.player),Y=h(null),X=e=>{if(!W.currentPlanet||!i(W.currentPlanet,e,W.player.technologies,W.player.researchQueue).valid)return!1;let t=W.player.technologies[e]||0,{queueItem:n}=p(W.currentPlanet,e,t,W.player.officers);return W.player.researchQueue.push(n),!0},Z=e=>{if(!q.value)return!1;let t=K.value[e],n=f(t,Q(e)+1);return!n||Object.keys(n).length===0?!0:l(q.value,W.player.technologies,n)},pe=e=>{if(!q.value)return G(`researchView.research`);let t=K.value[e],n=Q(e);return t.maxLevel!==void 0&&n>=t.maxLevel?G(`researchView.maxLevelReached`):J.value.researchQueue.length>0||Z(e)?G(`researchView.research`):G(`buildingsView.requirementsNotMet`)},me=e=>{let t=K.value[e],n=f(t,Q(e)+1);if(!n||!q.value)return``;let r=[];for(let[e,t]of Object.entries(n))if(Object.values(y).includes(e)){let n=e,i=q.value.buildings[n]||0,a=fe.value[n]?.name||n,o=i>=t?``:``;r.push(`${o} ${a}: Lv ${t} (${G(`common.current`)}: Lv ${i})`)}else if(Object.values(v).includes(e)){let n=e,i=W.player.technologies[n]||0,a=K.value[n]?.name||n,o=i>=t?``:``;r.push(`${o} ${a}: Lv ${t} (${G(`common.current`)}: Lv ${i})`)}return r.join(`
`)},he=e=>{if(!Z(e)){Y.value?.show({title:G(`common.requirementsNotMet`),message:me(e)});return}X(e)||Y.value?.show({title:G(`researchView.researchFailed`),message:G(`researchView.researchFailedMessage`)})},Q=e=>J.value.technologies[e]||0,ge=e=>{if(!q.value)return!1;let t=K.value[e],n=Q(e);if(t.maxLevel!==void 0&&n>=t.maxLevel||J.value.researchQueue.length>0)return!1;let r=$(e,n+1);return l(q.value,W.player.technologies,t.requirements)&&q.value.resources.metal>=r.metal&&q.value.resources.crystal>=r.crystal&&q.value.resources.deuterium>=r.deuterium},$=(e,t)=>te(e,t);return(i,a)=>q.value?(s(),e(`div`,A,[c(k,{"required-building":t(y).ResearchLab,"required-level":1},null,8,[`required-building`]),r(`h1`,j,d(t(G)(`researchView.title`)),1),r(`div`,M,[(s(!0),e(n,null,o(Object.values(t(v)),e=>(s(),ee(t(w),{key:e,class:`relative`},{default:g(()=>[c(O,{requirements:t(K)[e].requirements,currentLevel:Q(e)},null,8,[`requirements`,`currentLevel`]),c(t(le),null,{default:g(()=>[r(`div`,N,[r(`div`,P,[c(t(C),{class:`text-base sm:text-lg cursor-pointer hover:text-primary transition-colors`,onClick:n=>t(de).openTechnology(e,Q(e))},{default:g(()=>[_(d(t(K)[e].name),1)]),_:2},1032,[`onClick`]),c(t(re),{class:`text-xs sm:text-sm`},{default:g(()=>[_(d(t(K)[e].description),1)]),_:2},1024)]),c(t(ie),{variant:`secondary`,class:`text-xs whitespace-nowrap flex-shrink-0`},{default:g(()=>[_(`Lv `+d(Q(e)),1)]),_:2},1024)])]),_:2},1024),c(t(b),null,{default:g(()=>[r(`div`,F,[r(`div`,I,[r(`p`,L,d(t(G)(`researchView.researchCost`))+`:`,1),r(`div`,R,[r(`div`,z,[c(T,{type:`metal`,size:`sm`}),r(`span`,ue,d(t(G)(`resources.metal`))+`:`,1),r(`span`,{class:m([`font-medium text-xs sm:text-sm`,t(x)(q.value.resources.metal,$(e,Q(e)+1).metal)])},d(t(S)($(e,Q(e)+1).metal)),3)]),r(`div`,B,[c(T,{type:`crystal`,size:`sm`}),r(`span`,V,d(t(G)(`resources.crystal`))+`:`,1),r(`span`,{class:m([`font-medium text-xs sm:text-sm`,t(x)(q.value.resources.crystal,$(e,Q(e)+1).crystal)])},d(t(S)($(e,Q(e)+1).crystal)),3)]),r(`div`,H,[c(T,{type:`deuterium`,size:`sm`}),r(`span`,U,d(t(G)(`resources.deuterium`))+`:`,1),r(`span`,{class:m([`font-medium text-xs sm:text-sm`,t(x)(q.value.resources.deuterium,$(e,Q(e)+1).deuterium)])},d(t(S)($(e,Q(e)+1).deuterium)),3)])])]),c(t(oe),{onClick:t=>he(e),disabled:!ge(e),class:`w-full`},{default:g(()=>[_(d(pe(e)),1)]),_:2},1032,[`onClick`,`disabled`])])]),_:2},1024)]),_:2},1024))),128))]),c(D,{ref_key:`alertDialog`,ref:Y},null,512)])):ne(``,!0)}});export{W as default};

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{At as e,Cn as t,Dt as n,Et as r,Kt as i,Mt as a,Nt as o,On as s,in as c,jt as l,kt as u}from"./game-logic-CfBcTF_c.js";import{o as d}from"./vendor-vue-router-CWDMmE-U.js";import{D as f,G as p}from"./vendor-icons-W6Ny__75.js";import{t as m}from"./CardDescription-D2AN1hhX.js";import{A as h,I as g,M as _,P as v,c as y,l as b,s as x,u as S}from"./index-DWmvUlvu.js";import{t as C}from"./useGameConfig-B5wf1i8i.js";var w={key:0,class:`fixed inset-0 z-50 bg-background/80 backdrop-blur-sm flex items-center justify-center p-4`},T={class:`flex justify-center mb-4`},E={class:`rounded-full bg-muted p-4`},D={class:`p-4 bg-muted rounded-lg space-y-2`},O={class:`text-sm font-medium text-center`},k={class:`flex items-center justify-center gap-2`},A={class:`text-base sm:text-lg font-bold`},j={key:0,class:`text-xs text-center text-muted-foreground`},M={class:`flex gap-2`},N=o({__name:`UnlockRequirement`,props:{requiredBuilding:{},requiredLevel:{}},setup(o){let N=o,P=d(),F=g(),{t:I}=v(),{BUILDINGS:L}=C(),R=r(()=>L.value[N.requiredBuilding]?.name||N.requiredBuilding),z=r(()=>F.currentPlanet&&F.currentPlanet.buildings[N.requiredBuilding]||0),B=r(()=>z.value>=N.requiredLevel),V=()=>{P.push(`/buildings`)};return(r,d)=>B.value?u(``,!0):(i(),e(`div`,w,[a(t(S),{class:`max-w-md w-full`},{default:c(()=>[a(t(y),{class:`text-center`},{default:c(()=>[n(`div`,T,[n(`div`,E,[a(t(f),{size:48,class:`text-muted-foreground`})])]),a(t(x),{class:`text-xl sm:text-2xl`},{default:c(()=>[l(s(t(I)(`common.featureLocked`)),1)]),_:1}),a(t(m),{class:`text-sm sm:text-base`},{default:c(()=>[l(s(t(I)(`common.unlockRequired`)),1)]),_:1})]),_:1}),a(t(b),{class:`space-y-4`},{default:c(()=>[n(`div`,D,[n(`p`,O,s(t(I)(`common.requiredBuilding`))+`:`,1),n(`div`,k,[n(`span`,A,s(R.value),1),a(t(h),{variant:`default`},{default:c(()=>[l(`Lv `+s(o.requiredLevel),1)]),_:1})]),z.value===void 0?u(``,!0):(i(),e(`p`,j,s(t(I)(`common.currentLevel`))+`: Lv `+s(z.value),1))]),n(`div`,M,[a(t(_),{onClick:V,class:`flex-1`},{default:c(()=>[a(t(p),{size:16,class:`mr-2`}),l(` `+s(t(I)(`common.goToBuildings`)),1)]),_:1})])]),_:1})]),_:1})]))}});export{N 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{Et as e}from"./game-logic-CfBcTF_c.js";import{c as t,d as n,h as r,l as i,m as a,n as o,o as s,p as c,r as l,u}from"./game-config-D-D7cMgJ.js";import{P as d}from"./index-DWmvUlvu.js";const f=()=>{let{t:f}=d(),p={[u.MetalMine]:`metalMine`,[u.CrystalMine]:`crystalMine`,[u.DeuteriumSynthesizer]:`deuteriumSynthesizer`,[u.SolarPlant]:`solarPlant`,[u.RoboticsFactory]:`roboticsFactory`,[u.NaniteFactory]:`naniteFactory`,[u.Shipyard]:`shipyard`,[u.ResearchLab]:`researchLab`,[u.MetalStorage]:`metalStorage`,[u.CrystalStorage]:`crystalStorage`,[u.DeuteriumTank]:`deuteriumTank`,[u.DarkMatterCollector]:`darkMatterCollector`,[u.Terraformer]:`terraformer`,[u.LunarBase]:`lunarBase`,[u.SensorPhalanx]:`sensorPhalanx`,[u.JumpGate]:`jumpGate`,[u.PlanetDestroyerFactory]:`planetDestroyerFactory`},m={[a.LightFighter]:`lightFighter`,[a.HeavyFighter]:`heavyFighter`,[a.Cruiser]:`cruiser`,[a.Battleship]:`battleship`,[a.SmallCargo]:`smallCargo`,[a.LargeCargo]:`largeCargo`,[a.ColonyShip]:`colonyShip`,[a.Recycler]:`recycler`,[a.EspionageProbe]:`espionageProbe`,[a.DarkMatterHarvester]:`darkMatterHarvester`,[a.Deathstar]:`deathstar`},h={[n.RocketLauncher]:`rocketLauncher`,[n.LightLaser]:`lightLaser`,[n.HeavyLaser]:`heavyLaser`,[n.GaussCannon]:`gaussCannon`,[n.IonCannon]:`ionCannon`,[n.PlasmaTurret]:`plasmaTurret`,[n.SmallShieldDome]:`smallShieldDome`,[n.LargeShieldDome]:`largeShieldDome`,[n.PlanetaryShield]:`planetaryShield`},g={[r.EnergyTechnology]:`energyTechnology`,[r.LaserTechnology]:`laserTechnology`,[r.IonTechnology]:`ionTechnology`,[r.HyperspaceTechnology]:`hyperspaceTechnology`,[r.PlasmaTechnology]:`plasmaTechnology`,[r.ComputerTechnology]:`computerTechnology`,[r.CombustionDrive]:`combustionDrive`,[r.ImpulseDrive]:`impulseDrive`,[r.HyperspaceDrive]:`hyperspaceDrive`,[r.DarkMatterTechnology]:`darkMatterTechnology`,[r.TerraformingTechnology]:`terraformingTechnology`,[r.PlanetDestructionTech]:`planetDestructionTech`},_={[c.Commander]:`commander`,[c.Admiral]:`admiral`,[c.Engineer]:`engineer`,[c.Geologist]:`geologist`,[c.Technocrat]:`technocrat`,[c.DarkMatterSpecialist]:`darkMatterSpecialist`};return{BUILDINGS:e(()=>{let e={};for(let[t,n]of Object.entries(o)){let r=t,i=p[r];e[r]={...n,name:f(`buildings.${i}`),description:f(`buildingDescriptions.${i}`)}}return e}),SHIPS:e(()=>{let e={};for(let[n,r]of Object.entries(t)){let t=n,i=m[t];e[t]={...r,name:f(`ships.${i}`),description:f(`shipDescriptions.${i}`)}}return e}),DEFENSES:e(()=>{let e={};for(let[t,n]of Object.entries(l)){let r=t,i=h[r];e[r]={...n,name:f(`defenses.${i}`),description:f(`defenseDescriptions.${i}`)}}return e}),TECHNOLOGIES:e(()=>{let e={};for(let[t,n]of Object.entries(i)){let r=t,i=g[r];e[r]={...n,name:f(`technologies.${i}`),description:f(`technologyDescriptions.${i}`)}}return e}),OFFICERS:e(()=>{let e={};for(let[t,n]of Object.entries(s)){let r=t,i=_[r];e[r]={...n,name:f(`officers.${i}`),description:f(`officerDescriptions.${i}`)}}return e})}};export{f as t};

File diff suppressed because one or more lines are too long

View File

@@ -7,21 +7,21 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover" />
<link rel="icon" type="image/svg+xml" href="./logo.svg" /> <link rel="icon" type="image/svg+xml" href="./logo.svg" />
<title>OGame-Vue-Ts</title> <title>OGame-Vue-Ts</title>
<script type="module" crossorigin src="./assets/index-DRmrr36X.js"></script> <script type="module" crossorigin src="./assets/index-DWmvUlvu.js"></script>
<link rel="modulepreload" crossorigin href="./assets/game-config-D-D7cMgJ.js"> <link rel="modulepreload" crossorigin href="./assets/game-config-D-D7cMgJ.js">
<link rel="modulepreload" crossorigin href="./assets/rolldown-runtime-tX5UdD3f.js"> <link rel="modulepreload" crossorigin href="./assets/rolldown-runtime-tX5UdD3f.js">
<link rel="modulepreload" crossorigin href="./assets/game-logic-CfBcTF_c.js"> <link rel="modulepreload" crossorigin href="./assets/game-logic-CfBcTF_c.js">
<link rel="modulepreload" crossorigin href="./assets/vendor-others-CUjrprN5.js"> <link rel="modulepreload" crossorigin href="./assets/vendor-others-CUjrprN5.js">
<link rel="modulepreload" crossorigin href="./assets/vendor-reka-ui-CZQh7FLl.js"> <link rel="modulepreload" crossorigin href="./assets/vendor-reka-ui-CZQh7FLl.js">
<link rel="modulepreload" crossorigin href="./assets/vendor-vueuse-C7EbLx--.js"> <link rel="modulepreload" crossorigin href="./assets/vendor-vueuse-C7EbLx--.js">
<link rel="modulepreload" crossorigin href="./assets/vendor-crypto-DGvz1MHk.js"> <link rel="modulepreload" crossorigin href="./assets/vendor-crypto-Ce_BCn-h.js">
<link rel="modulepreload" crossorigin href="./assets/vendor-utils-Dg-HLkEU.js"> <link rel="modulepreload" crossorigin href="./assets/vendor-utils-Dg-HLkEU.js">
<link rel="modulepreload" crossorigin href="./assets/vendor-icons-W6Ny__75.js"> <link rel="modulepreload" crossorigin href="./assets/vendor-icons-W6Ny__75.js">
<link rel="modulepreload" crossorigin href="./assets/vendor-pinia-DP9x75p8.js"> <link rel="modulepreload" crossorigin href="./assets/vendor-pinia-DP9x75p8.js">
<link rel="modulepreload" crossorigin href="./assets/vendor-vue-router-CWDMmE-U.js"> <link rel="modulepreload" crossorigin href="./assets/vendor-vue-router-CWDMmE-U.js">
<link rel="modulepreload" crossorigin href="./assets/game-i18n-DEf7ySVe.js"> <link rel="modulepreload" crossorigin href="./assets/game-i18n-DEf7ySVe.js">
<link rel="stylesheet" crossorigin href="./assets/vendor-others-BMPyaZWq.css"> <link rel="stylesheet" crossorigin href="./assets/vendor-others-BMPyaZWq.css">
<link rel="stylesheet" crossorigin href="./assets/index-C1ya9Q3J.css"> <link rel="stylesheet" crossorigin href="./assets/index-Woj5fYlK.css">
</head> </head>
<body> <body>

View File

@@ -9,7 +9,7 @@
}, },
"private": true, "private": true,
"version": "1.1.0", "version": "1.1.0",
"buildDate": "2025/12/14 13:13:07", "buildDate": "2025/12/14 15:57:43",
"main": "dist-electron/main.js", "main": "dist-electron/main.js",
"type": "module", "type": "module",
"scripts": { "scripts": {
@@ -79,11 +79,17 @@
"artifactName": "${productName}-Setup.${ext}" "artifactName": "${productName}-Setup.${ext}"
}, },
"mac": { "mac": {
"target": ["dmg", "zip"], "target": [
"dmg",
"zip"
],
"artifactName": "${productName}-mac.${ext}" "artifactName": "${productName}-mac.${ext}"
}, },
"linux": { "linux": {
"target": ["AppImage", "deb"], "target": [
"AppImage",
"deb"
],
"artifactName": "${productName}-linux.${ext}" "artifactName": "${productName}-linux.${ext}"
} }
} }