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

1 line
21 KiB
JavaScript

import{t as e}from"./CardDescription-Cb9v68Xa.js";import{$ as t,An as n,Ct as r,En as i,Et as a,Fn as o,G as s,Gn as c,K as l,Mn as u,Mt as d,Nn as f,O as p,On as m,Pn as h,Pt as g,Qn as _,St as ee,Tt as v,V as y,bn as te,bt as ne,dt as b,er as x,ft as S,ir as re,it as C,jn as w,jt as T,kn as E,lt as D,qn as O,rr as k,sr as A,st as j,tt as M,ut as N,xt as ie,zt as P}from"./index-BpOElaf9.js";import{t as ae}from"./useGameConfig-DqswvIth.js";var oe=T(`rotate-ccw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),se=T(`trophy`,[[`path`,{d:`M10 14.66v1.626a2 2 0 0 1-.976 1.696A5 5 0 0 0 7 21.978`,key:`1n3hpd`}],[`path`,{d:`M14 14.66v1.626a2 2 0 0 0 .976 1.696A5 5 0 0 1 17 21.978`,key:`rfe1zi`}],[`path`,{d:`M18 9h1.5a1 1 0 0 0 0-5H18`,key:`7xy6bh`}],[`path`,{d:`M4 22h16`,key:`57wxv0`}],[`path`,{d:`M6 9a6 6 0 0 0 12 0V3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1z`,key:`1mhfuq`}],[`path`,{d:`M6 9H4.5a1 1 0 0 1 0-5H6`,key:`tex48p`}]]),F=(e,t=0,n=.1)=>Math.floor(e*(1+t*n)),I=(e,n=!1)=>{let r=[];if(e.ships){for(let[t,n]of Object.entries(e.ships))if(n>0){let i=M[t];r.push({type:t,count:n,attack:F(i.attack,e.weaponTech),shield:F(i.shield,e.shieldTech),armor:F(i.armor,e.armorTech)})}}if(n&&e.defense){for(let[n,i]of Object.entries(e.defense))if(i>0){let a=t[n];r.push({type:n,count:i,attack:F(a.attack,e.weaponTech),shield:F(a.shield,e.shieldTech),armor:F(a.armor,e.armorTech)})}}return r},L=(e,t)=>{let n=e.attack,r=t.shield,i=t.armor,a=0,o=0;if(n<r*.01&&Math.random()>.01)return{destroyed:0,damagedShield:0};let s=n;if(s>r)s-=r,o=r;else return o=s,{destroyed:0,damagedShield:o};if(s>i)a=1;else{let e=s/i;Math.random()<e&&(a=1)}return{destroyed:a,damagedShield:o}},R=(e,t)=>{let n={},r={},i={};for(let n of e)for(let e=0;e<n.count&&t.length!==0;e++){let e=Math.floor(Math.random()*t.length),a=t[e];if(!a)continue;let{destroyed:o}=L(n,a);if(o>0){if(a.count-=o,Object.values(j).includes(a.type)){let e=a.type;r[e]=(r[e]||0)+o}else{let e=a.type;i[e]=(i[e]||0)+o}a.count<=0&&t.splice(e,1)}}for(let r of t)for(let t=0;t<r.count&&e.length!==0;t++){let t=Math.floor(Math.random()*e.length),i=e[t];if(!i)continue;let{destroyed:a}=L(r,i);if(a>0){i.count-=a;let r=i.type;n[r]=(n[r]||0)+a,i.count<=0&&e.splice(t,1)}}let a=e.reduce((e,t)=>e+t.count*t.attack,0),o=t.reduce((e,t)=>e+t.count*t.attack,0);return{attackerLosses:n,defenderLosses:{fleet:r,defense:i},attackerRemainingPower:a,defenderRemainingPower:o}};const ce=(e,t,n=6)=>{let r=I(e,!1),i=I(t,!0),a={},o={},s={},c=[],l=0;for(let e=0;e<n&&!(r.length===0||i.length===0);e++){l++;let e=R(r,i);c.push({round:l,attackerLosses:{...e.attackerLosses},defenderLosses:{fleet:{...e.defenderLosses.fleet},defense:{...e.defenderLosses.defense}},attackerRemainingPower:e.attackerRemainingPower,defenderRemainingPower:e.defenderRemainingPower});for(let[t,n]of Object.entries(e.attackerLosses))a[t]=(a[t]||0)+n;for(let[t,n]of Object.entries(e.defenderLosses.fleet))o[t]=(o[t]||0)+n;for(let[t,n]of Object.entries(e.defenderLosses.defense))s[t]=(s[t]||0)+n}let u={};for(let[e,t]of Object.entries(s)){let n=Math.floor(t*.7);n>0&&(u[e]=n,s[e]=t-n)}let d={};for(let e of r)e.count>0&&(d[e.type]=e.count);let f={},p={};for(let e of i)e.count>0&&(Object.values(j).includes(e.type)?f[e.type]=e.count:p[e.type]=e.count);for(let[e,t]of Object.entries(u))p[e]=(p[e]||0)+t;let m;return m=r.length===0&&i.length===0?`draw`:r.length===0?`defender`:i.length===0?`attacker`:`draw`,{winner:m,rounds:l,attackerLosses:a,defenderLosses:{fleet:o,defense:s},attackerRemaining:d,defenderRemaining:{fleet:f,defense:p},roundDetails:c}},le=(e,t)=>{let n=0;for(let[e,r]of Object.entries(t)){let t=M[e];n+=t.cargoCapacity*r}let r={metal:Math.floor(e.metal*.5),crystal:Math.floor(e.crystal*.5),deuterium:Math.floor(e.deuterium*.5),darkMatter:Math.floor(e.darkMatter*.5),energy:0},i=r.metal+r.crystal+r.deuterium+r.darkMatter;if(n>=i)return r;let a=n/i;return{metal:Math.floor(r.metal*a),crystal:Math.floor(r.crystal*a),deuterium:Math.floor(r.deuterium*a),darkMatter:Math.floor(r.darkMatter*a),energy:0}},ue=(e,n)=>{let r=0,i=0;for(let[t,n]of Object.entries(e)){let e=M[t];r+=e.cost.metal*n*.3,i+=e.cost.crystal*n*.3}for(let[e,t]of Object.entries(n.fleet)){let n=M[e];r+=n.cost.metal*t*.3,i+=n.cost.crystal*t*.3}for(let[e,a]of Object.entries(n.defense)){let n=t[e];r+=n.cost.metal*a*.3,i+=n.cost.crystal*a*.3}return{metal:Math.floor(r),crystal:Math.floor(i),deuterium:0,darkMatter:0,energy:0}};var de={class:`container mx-auto p-4 sm:p-6 space-y-6`},fe={class:`text-2xl sm:text-3xl font-bold`},pe={class:`flex gap-2 border-b`},me={class:`text-sm font-medium mb-3`},z={class:`grid grid-cols-2 md:grid-cols-3 gap-3`},he={class:`text-sm font-medium mb-3`},ge={class:`grid grid-cols-3 gap-3`},_e={class:`space-y-1`},ve={class:`space-y-1`},ye={class:`space-y-1`},be={class:`text-sm font-medium mb-3`},xe={class:`grid grid-cols-2 md:grid-cols-3 gap-3`},Se={class:`text-sm font-medium mb-3`},Ce={class:`grid grid-cols-2 md:grid-cols-3 gap-3`},we={class:`text-sm font-medium mb-3`},Te={class:`grid grid-cols-3 gap-3`},Ee={class:`space-y-1`},De={class:`space-y-1`},Oe={class:`space-y-1`},ke={class:`text-sm font-medium mb-3`},Ae={class:`grid grid-cols-3 gap-3`},je={class:`space-y-1`},Me={class:`space-y-1`},Ne={class:`space-y-1`},Pe={class:`flex gap-2`},Fe={key:0,class:`space-y-4`},Ie={class:`text-lg font-bold`},Le={class:`text-sm mt-1`},Re={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},ze={class:`space-y-2`},Be={class:`text-sm font-medium text-red-600 dark:text-red-400`},Ve={class:`p-3 bg-muted rounded-lg space-y-1 text-xs`},He={class:`text-muted-foreground`},Ue={class:`ml-2 font-medium`},We={key:0,class:`text-muted-foreground`},Ge={class:`space-y-2`},Ke={class:`text-sm font-medium text-red-600 dark:text-red-400`},qe={class:`p-3 bg-muted rounded-lg space-y-1 text-xs`},Je={class:`text-muted-foreground`},Ye={class:`ml-2 font-medium`},Xe={class:`text-muted-foreground`},Ze={class:`ml-2 font-medium`},Qe={key:0,class:`text-muted-foreground`},$e={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},et={class:`space-y-2`},tt={class:`text-sm font-medium text-blue-600 dark:text-blue-400`},nt={class:`p-3 bg-muted rounded-lg space-y-1 text-xs`},rt={class:`text-muted-foreground`},it={class:`ml-2 font-medium`},at={key:0,class:`text-muted-foreground`},ot={class:`space-y-2`},st={class:`text-sm font-medium text-blue-600 dark:text-blue-400`},ct={class:`p-3 bg-muted rounded-lg space-y-1 text-xs`},lt={class:`text-muted-foreground`},B={class:`ml-2 font-medium`},ut={class:`text-muted-foreground`},dt={class:`ml-2 font-medium`},ft={key:0,class:`text-muted-foreground`},pt={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},mt={key:0,class:`p-3 bg-green-50 dark:bg-green-950 rounded-lg`},ht={class:`text-sm font-medium mb-2 text-green-600 dark:text-green-400`},gt={class:`flex flex-wrap gap-3 text-xs`},_t={key:0,class:`flex items-center gap-1`},vt={key:1,class:`flex items-center gap-1`},yt={key:2,class:`flex items-center gap-1`},bt={key:1,class:`p-3 bg-muted rounded-lg`},xt={class:`text-sm font-medium mb-2`},St={class:`flex flex-wrap gap-3 text-xs`},Ct={key:0,class:`flex items-center gap-1`},wt={key:1,class:`flex items-center gap-1`},Tt={key:0,class:`text-xs text-muted-foreground mt-2`},Et={class:`space-y-2`},Dt={key:0,class:`relative pl-6 space-y-4`},Ot={class:`border rounded-lg p-3 bg-card hover:shadow-md transition-shadow`},kt={class:`flex items-center justify-between mb-3`},At={class:`text-sm font-semibold`},jt={class:`flex gap-3 text-xs text-muted-foreground`},Mt=[`title`],Nt=[`title`],Pt={class:`grid grid-cols-1 md:grid-cols-2 gap-3`},Ft={class:`bg-red-50 dark:bg-red-950/20 rounded p-2`},It={class:`text-xs font-medium text-red-600 dark:text-red-400 mb-1.5`},Lt={class:`text-xs space-y-0.5`},Rt={class:`text-muted-foreground`},zt={class:`font-medium`},Bt={key:0,class:`text-muted-foreground italic`},Vt={class:`bg-blue-50 dark:bg-blue-950/20 rounded p-2`},Ht={class:`text-xs font-medium text-blue-600 dark:text-blue-400 mb-1.5`},Ut={class:`text-xs space-y-0.5`},Wt={class:`text-muted-foreground`},Gt={class:`font-medium`},Kt={class:`text-muted-foreground`},qt={class:`font-medium`},Jt={key:0,class:`text-muted-foreground italic`},V=o({__name:`BattleSimulatorView`,setup(t){let{t:o}=te(),{SHIPS:T,DEFENSES:M}=ae(),F=x({[j.LightFighter]:0,[j.HeavyFighter]:0,[j.Cruiser]:0,[j.Battleship]:0,[j.SmallCargo]:0,[j.LargeCargo]:0,[j.ColonyShip]:0,[j.Recycler]:0,[j.EspionageProbe]:0,[j.DarkMatterHarvester]:0}),I=x(`attacker`),L=x({weapon:0,shield:0,armor:0}),R=x({[j.LightFighter]:0,[j.HeavyFighter]:0,[j.Cruiser]:0,[j.Battleship]:0,[j.SmallCargo]:0,[j.LargeCargo]:0,[j.ColonyShip]:0,[j.Recycler]:0,[j.EspionageProbe]:0,[j.DarkMatterHarvester]:0}),V=x({[C.RocketLauncher]:0,[C.LightLaser]:0,[C.HeavyLaser]:0,[C.GaussCannon]:0,[C.IonCannon]:0,[C.PlasmaTurret]:0,[C.SmallShieldDome]:0,[C.LargeShieldDome]:0}),H=x({weapon:0,shield:0,armor:0}),U=x({metal:1e5,crystal:5e4,deuterium:25e3,darkMatter:100,energy:0}),W=x(null),G=x(0),K=x({}),q=x({fleet:{},defense:{}}),J=x([]),Y=x(!1),X=x(!1),Z=m(()=>!W.value||W.value.winner!==`attacker`?{metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0}:le(U.value,F.value)),Q=m(()=>W.value?ue(W.value.attackerLosses,W.value.defenderLosses):{metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0}),Yt=e=>p(e),$=m(()=>Q.value?Yt(Q.value):0),Xt=()=>{let e=ce({ships:F.value,weaponTech:L.value.weapon,shieldTech:L.value.shield,armorTech:L.value.armor},{ships:R.value,defense:V.value,weaponTech:H.value.weapon,shieldTech:H.value.shield,armorTech:H.value.armor});G.value=e.rounds,K.value=e.attackerRemaining,q.value=e.defenderRemaining,J.value=e.roundDetails,Y.value=!1,W.value={id:`sim_${Date.now()}`,timestamp:Date.now(),attackerId:`simulator_attacker`,defenderId:`simulator_defender`,attackerPlanetId:`sim_attacker`,defenderPlanetId:`sim_defender`,attackerFleet:F.value,defenderFleet:R.value,defenderDefense:V.value,attackerLosses:e.attackerLosses,defenderLosses:e.defenderLosses,winner:e.winner,plunder:Z.value,debrisField:Q.value},X.value=!0},Zt=()=>{Object.keys(F.value).forEach(e=>{F.value[e]=0}),Object.keys(R.value).forEach(e=>{R.value[e]=0}),Object.keys(V.value).forEach(e=>{V.value[e]=0}),L.value={weapon:0,shield:0,armor:0},H.value={weapon:0,shield:0,armor:0},W.value=null,G.value=0,K.value={},q.value={fleet:{},defense:{}},J.value=[],Y.value=!1,X.value=!1},Qt=e=>e===`attacker`?`bg-green-50 dark:bg-green-950 text-green-700 dark:text-green-300`:e===`defender`?`bg-red-50 dark:bg-red-950 text-red-700 dark:text-red-300`:`bg-gray-50 dark:bg-gray-950 text-gray-700 dark:text-gray-300`;return(t,p)=>(c(),u(`div`,de,[E(`h1`,fe,A(k(o)(`simulatorView.title`)),1),E(`div`,pe,[h(k(P),{onClick:p[0]||=e=>I.value=`attacker`,variant:I.value===`attacker`?`default`:`ghost`,class:`rounded-b-none`},{default:_(()=>[h(k(v)),f(` `+A(k(o)(`simulatorView.attacker`)),1)]),_:1},8,[`variant`]),h(k(P),{onClick:p[1]||=e=>I.value=`defender`,variant:I.value===`defender`?`default`:`ghost`,class:`rounded-b-none`},{default:_(()=>[h(k(a)),f(` `+A(k(o)(`simulatorView.defender`)),1)]),_:1},8,[`variant`])]),I.value===`attacker`?(c(),n(k(S),{key:0},{default:_(()=>[h(k(N),null,{default:_(()=>[h(k(D),null,{default:_(()=>[f(A(k(o)(`simulatorView.attackerConfig`)),1)]),_:1}),h(k(e),null,{default:_(()=>[f(A(k(o)(`simulatorView.attackerConfigDesc`)),1)]),_:1})]),_:1}),h(k(b),{class:`space-y-4`},{default:_(()=>[E(`div`,null,[E(`h3`,me,A(k(o)(`simulatorView.fleet`)),1),E(`div`,z,[(c(!0),u(i,null,O(Object.values(k(j)),e=>(c(),u(`div`,{key:e,class:`space-y-1`},[h(k(s),{for:`attacker-${e}`,class:`text-xs`},{default:_(()=>[f(A(k(T)[e].name),1)]),_:2},1032,[`for`]),h(k(l),{id:`attacker-${e}`,modelValue:F.value[e],"onUpdate:modelValue":t=>F.value[e]=t,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`])]))),128))])]),E(`div`,null,[E(`h3`,he,A(k(o)(`simulatorView.techLevels`)),1),E(`div`,ge,[E(`div`,_e,[h(k(s),{for:`attacker-weapon`,class:`text-xs`},{default:_(()=>[f(A(k(o)(`simulatorView.weapon`)),1)]),_:1}),h(k(l),{id:`attacker-weapon`,modelValue:L.value.weapon,"onUpdate:modelValue":p[2]||=e=>L.value.weapon=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`modelValue`])]),E(`div`,ve,[h(k(s),{for:`attacker-shield`,class:`text-xs`},{default:_(()=>[f(A(k(o)(`simulatorView.shield`)),1)]),_:1}),h(k(l),{id:`attacker-shield`,modelValue:L.value.shield,"onUpdate:modelValue":p[3]||=e=>L.value.shield=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`modelValue`])]),E(`div`,ye,[h(k(s),{for:`attacker-armor`,class:`text-xs`},{default:_(()=>[f(A(k(o)(`simulatorView.armor`)),1)]),_:1}),h(k(l),{id:`attacker-armor`,modelValue:L.value.armor,"onUpdate:modelValue":p[4]||=e=>L.value.armor=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`modelValue`])])])])]),_:1})]),_:1})):(c(),n(k(S),{key:1},{default:_(()=>[h(k(N),null,{default:_(()=>[h(k(D),null,{default:_(()=>[f(A(k(o)(`simulatorView.defenderConfig`)),1)]),_:1}),h(k(e),null,{default:_(()=>[f(A(k(o)(`simulatorView.defenderConfigDesc`)),1)]),_:1})]),_:1}),h(k(b),{class:`space-y-4`},{default:_(()=>[E(`div`,null,[E(`h3`,be,A(k(o)(`simulatorView.fleet`)),1),E(`div`,xe,[(c(!0),u(i,null,O(Object.values(k(j)),e=>(c(),u(`div`,{key:e,class:`space-y-1`},[h(k(s),{for:`defender-${e}`,class:`text-xs`},{default:_(()=>[f(A(k(T)[e].name),1)]),_:2},1032,[`for`]),h(k(l),{id:`defender-${e}`,modelValue:R.value[e],"onUpdate:modelValue":t=>R.value[e]=t,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`])]))),128))])]),E(`div`,null,[E(`h3`,Se,A(k(o)(`simulatorView.defenseStructures`)),1),E(`div`,Ce,[(c(!0),u(i,null,O(Object.values(k(C)),e=>(c(),u(`div`,{key:e,class:`space-y-1`},[h(k(s),{for:`defense-${e}`,class:`text-xs`},{default:_(()=>[f(A(k(M)[e].name),1)]),_:2},1032,[`for`]),h(k(l),{id:`defense-${e}`,modelValue:V.value[e],"onUpdate:modelValue":t=>V.value[e]=t,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`])]))),128))])]),E(`div`,null,[E(`h3`,we,A(k(o)(`simulatorView.techLevels`)),1),E(`div`,Te,[E(`div`,Ee,[h(k(s),{for:`defender-weapon`,class:`text-xs`},{default:_(()=>[f(A(k(o)(`simulatorView.weapon`)),1)]),_:1}),h(k(l),{id:`defender-weapon`,modelValue:H.value.weapon,"onUpdate:modelValue":p[5]||=e=>H.value.weapon=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`modelValue`])]),E(`div`,De,[h(k(s),{for:`defender-shield`,class:`text-xs`},{default:_(()=>[f(A(k(o)(`simulatorView.shield`)),1)]),_:1}),h(k(l),{id:`defender-shield`,modelValue:H.value.shield,"onUpdate:modelValue":p[6]||=e=>H.value.shield=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`modelValue`])]),E(`div`,Oe,[h(k(s),{for:`defender-armor`,class:`text-xs`},{default:_(()=>[f(A(k(o)(`simulatorView.armor`)),1)]),_:1}),h(k(l),{id:`defender-armor`,modelValue:H.value.armor,"onUpdate:modelValue":p[7]||=e=>H.value.armor=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`modelValue`])])])]),E(`div`,null,[E(`h3`,ke,A(k(o)(`simulatorView.defenderResources`)),1),E(`div`,Ae,[E(`div`,je,[h(k(s),{for:`defender-metal`,class:`text-xs flex items-center gap-1`},{default:_(()=>[h(g,{type:`metal`,size:`sm`}),f(` `+A(k(o)(`resources.metal`)),1)]),_:1}),h(k(l),{id:`defender-metal`,modelValue:U.value.metal,"onUpdate:modelValue":p[8]||=e=>U.value.metal=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`modelValue`])]),E(`div`,Me,[h(k(s),{for:`defender-crystal`,class:`text-xs flex items-center gap-1`},{default:_(()=>[h(g,{type:`crystal`,size:`sm`}),f(` `+A(k(o)(`resources.crystal`)),1)]),_:1}),h(k(l),{id:`defender-crystal`,modelValue:U.value.crystal,"onUpdate:modelValue":p[9]||=e=>U.value.crystal=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`modelValue`])]),E(`div`,Ne,[h(k(s),{for:`defender-deuterium`,class:`text-xs flex items-center gap-1`},{default:_(()=>[h(g,{type:`deuterium`,size:`sm`}),f(` `+A(k(o)(`resources.deuterium`)),1)]),_:1}),h(k(l),{id:`defender-deuterium`,modelValue:U.value.deuterium,"onUpdate:modelValue":p[10]||=e=>U.value.deuterium=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`modelValue`])])])])]),_:1})]),_:1})),E(`div`,Pe,[h(k(P),{onClick:Xt,class:`flex-1`,size:`lg`},{default:_(()=>[h(k(r),{class:`h-4 w-4 mr-2`}),f(` `+A(k(o)(`simulatorView.startSimulation`)),1)]),_:1}),h(k(P),{onClick:Zt,variant:`outline`,size:`lg`},{default:_(()=>[h(k(oe),{class:`h-4 w-4 mr-2`}),f(` `+A(k(o)(`simulatorView.reset`)),1)]),_:1})]),h(k(d),{open:X.value,"onUpdate:open":p[12]||=e=>X.value=e},{default:_(()=>[h(k(ee),{class:`max-w-4xl max-h-[90vh] overflow-y-auto`},{default:_(()=>[h(k(ie),null,{default:_(()=>[h(k(ne),{class:`flex items-center gap-2`},{default:_(()=>[h(k(se),{class:`h-5 w-5`}),f(` `+A(k(o)(`simulatorView.battleResult`)),1)]),_:1})]),_:1}),W.value?(c(),u(`div`,Fe,[E(`div`,{class:re([`text-center p-4 rounded-lg`,Qt(W.value.winner)])},[E(`p`,Ie,A(W.value.winner===`attacker`?k(o)(`simulatorView.attackerVictory`):W.value.winner===`defender`?k(o)(`simulatorView.defenderVictory`):k(o)(`simulatorView.draw`)),1),E(`p`,Le,A(k(o)(`simulatorView.afterRounds`).replace(`{rounds}`,String(G.value))),1)],2),E(`div`,Re,[E(`div`,ze,[E(`p`,Be,A(k(o)(`simulatorView.attackerLosses`)),1),E(`div`,Ve,[(c(!0),u(i,null,O(W.value.attackerLosses,(e,t)=>(c(),u(`div`,{key:t},[E(`span`,He,A(k(T)[t].name)+`:`,1),E(`span`,Ue,A(e),1)]))),128)),Object.keys(W.value.attackerLosses).length===0?(c(),u(`p`,We,A(k(o)(`simulatorView.noLosses`)),1)):w(``,!0)])]),E(`div`,Ge,[E(`p`,Ke,A(k(o)(`simulatorView.defenderLosses`)),1),E(`div`,qe,[(c(!0),u(i,null,O(W.value.defenderLosses.fleet,(e,t)=>(c(),u(`div`,{key:t},[E(`span`,Je,A(k(T)[t].name)+`:`,1),E(`span`,Ye,A(e),1)]))),128)),(c(!0),u(i,null,O(W.value.defenderLosses.defense,(e,t)=>(c(),u(`div`,{key:t},[E(`span`,Xe,A(k(M)[t].name)+`:`,1),E(`span`,Ze,A(e),1)]))),128)),Object.keys(W.value.defenderLosses.fleet).length===0&&Object.keys(W.value.defenderLosses.defense).length===0?(c(),u(`p`,Qe,A(k(o)(`simulatorView.noLosses`)),1)):w(``,!0)])])]),E(`div`,$e,[E(`div`,et,[E(`p`,tt,A(k(o)(`simulatorView.attackerRemaining`)),1),E(`div`,nt,[(c(!0),u(i,null,O(K.value,(e,t)=>(c(),u(`div`,{key:t},[E(`span`,rt,A(k(T)[t].name)+`:`,1),E(`span`,it,A(e),1)]))),128)),Object.keys(K.value).length===0?(c(),u(`p`,at,A(k(o)(`simulatorView.allDestroyed`)),1)):w(``,!0)])]),E(`div`,ot,[E(`p`,st,A(k(o)(`simulatorView.defenderRemaining`)),1),E(`div`,ct,[(c(!0),u(i,null,O(q.value.fleet,(e,t)=>(c(),u(`div`,{key:t},[E(`span`,lt,A(k(T)[t].name)+`:`,1),E(`span`,B,A(e),1)]))),128)),(c(!0),u(i,null,O(q.value.defense,(e,t)=>(c(),u(`div`,{key:t},[E(`span`,ut,A(k(M)[t].name)+`:`,1),E(`span`,dt,A(e),1)]))),128)),Object.keys(q.value.fleet).length===0&&Object.keys(q.value.defense).length===0?(c(),u(`p`,ft,A(k(o)(`simulatorView.allDestroyed`)),1)):w(``,!0)])])]),E(`div`,pt,[Z.value.metal>0||Z.value.crystal>0||Z.value.deuterium>0?(c(),u(`div`,mt,[E(`p`,ht,A(k(o)(`simulatorView.plunderableResources`)),1),E(`div`,gt,[Z.value.metal>0?(c(),u(`span`,_t,[h(g,{type:`metal`,size:`sm`}),f(` `+A(k(y)(Z.value.metal)),1)])):w(``,!0),Z.value.crystal>0?(c(),u(`span`,vt,[h(g,{type:`crystal`,size:`sm`}),f(` `+A(k(y)(Z.value.crystal)),1)])):w(``,!0),Z.value.deuterium>0?(c(),u(`span`,yt,[h(g,{type:`deuterium`,size:`sm`}),f(` `+A(k(y)(Z.value.deuterium)),1)])):w(``,!0)])])):w(``,!0),Q.value.metal>0||Q.value.crystal>0?(c(),u(`div`,bt,[E(`p`,xt,A(k(o)(`simulatorView.debrisField`)),1),E(`div`,St,[Q.value.metal>0?(c(),u(`span`,Ct,[h(g,{type:`metal`,size:`sm`}),f(` `+A(k(y)(Q.value.metal)),1)])):w(``,!0),Q.value.crystal>0?(c(),u(`span`,wt,[h(g,{type:`crystal`,size:`sm`}),f(` `+A(k(y)(Q.value.crystal)),1)])):w(``,!0)]),$.value>0?(c(),u(`p`,Tt,A(k(o)(`simulatorView.moonChance`))+`: `+A($.value)+`%`,1)):w(``,!0)])):w(``,!0)]),E(`div`,Et,[h(k(P),{onClick:p[11]||=e=>Y.value=!Y.value,variant:`outline`,size:`sm`,class:`w-full`},{default:_(()=>[f(A(Y.value?k(o)(`simulatorView.hideRoundDetails`):k(o)(`simulatorView.showRoundDetails`)),1)]),_:1}),Y.value?(c(),u(`div`,Dt,[p[14]||=E(`div`,{class:`absolute left-2 top-0 bottom-0 w-0.5 bg-border`},null,-1),(c(!0),u(i,null,O(J.value,e=>(c(),u(`div`,{key:e.round,class:`relative`},[p[13]||=E(`div`,{class:`absolute -left-6 top-3 w-4 h-4 rounded-full bg-primary border-2 border-background`},null,-1),E(`div`,Ot,[E(`div`,kt,[E(`p`,At,A(k(o)(`simulatorView.round`).replace(`{round}`,String(e.round))),1),E(`div`,jt,[E(`span`,{class:`flex items-center gap-1`,title:k(o)(`simulatorView.attackerRemainingPower`)},[h(k(v),{class:`h-3 w-3`}),f(` `+A(k(y)(e.attackerRemainingPower)),1)],8,Mt),E(`span`,{class:`flex items-center gap-1`,title:k(o)(`simulatorView.defenderRemainingPower`)},[h(k(a),{class:`h-3 w-3`}),f(` `+A(k(y)(e.defenderRemainingPower)),1)],8,Nt)])]),E(`div`,Pt,[E(`div`,Ft,[E(`p`,It,A(k(o)(`simulatorView.attackerLosses`)),1),E(`div`,Lt,[(c(!0),u(i,null,O(e.attackerLosses,(e,t)=>(c(),u(`div`,{key:t,class:`flex justify-between`},[E(`span`,Rt,A(k(T)[t].name),1),E(`span`,zt,`-`+A(e),1)]))),128)),Object.keys(e.attackerLosses).length===0?(c(),u(`p`,Bt,A(k(o)(`simulatorView.noLosses`)),1)):w(``,!0)])]),E(`div`,Vt,[E(`p`,Ht,A(k(o)(`simulatorView.defenderLosses`)),1),E(`div`,Ut,[(c(!0),u(i,null,O(e.defenderLosses.fleet,(e,t)=>(c(),u(`div`,{key:t,class:`flex justify-between`},[E(`span`,Wt,A(k(T)[t].name),1),E(`span`,Gt,`-`+A(e),1)]))),128)),(c(!0),u(i,null,O(e.defenderLosses.defense,(e,t)=>(c(),u(`div`,{key:t,class:`flex justify-between`},[E(`span`,Kt,A(k(M)[t].name),1),E(`span`,qt,`-`+A(e),1)]))),128)),Object.keys(e.defenderLosses.fleet).length===0&&Object.keys(e.defenderLosses.defense).length===0?(c(),u(`p`,Jt,A(k(o)(`simulatorView.noLosses`)),1)):w(``,!0)])])])])]))),128))])):w(``,!0)])])):w(``,!0)]),_:1})]),_:1},8,[`open`])]))}});export{V as default};