mirror of
https://github.com/setube/ogame-vue-ts.git
synced 2026-05-11 23:45:11 +08:00
重构并精简了部分UI组件,移除冗余弹窗与详情组件,新增NPC相关逻辑(npcBehaviorLogic、npcGrowthLogic、npcStore等)及外交逻辑(diplomaticLogic、DiplomacyView)。完善分页、标签、复选框等通用UI组件。优化战报弹窗,调整README下载链接为相对路径,修复部分国际化内容。
1 line
7.5 KiB
JavaScript
1 line
7.5 KiB
JavaScript
import{$t as e,En as t,Gn as n,Gt as r,Ln as i,Q as a,Qt as o,Vn as s,Xn as c,Yt as l,en as u,gn as d,mn as f,ot as p,tn as ee}from"./game-logic-Bi1l7y4K.js";import"./vendor-pinia-DqhKuBjp.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-Dr0JspcV.js";import"./vendor-others-DTUzJ7S-.js";import"./vendor-reka-ui-BEHIKScj.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CJcfYqoW.js";import{c as te,g as ne,p as m,t as h}from"./vendor-icons-z9V6Jdbh.js";import"./TooltipProvider-BwjgS8_x.js";import{t as g}from"./CardDescription-BSLS07AU.js";import{_,f as v}from"./game-config-CG6z6nnH.js";import{K as re,L as y,N as ie,W as b,_ as x,b as S,g as C,v as w,y as T}from"./index-BT5w6et-.js";import{t as E}from"./useGameConfig-b98LOtBY.js";import{i as ae,n as oe,r as D,t as O}from"./TabsTrigger-DrosU7aN.js";import{t as se}from"./BattleReportDialog-CGjL16c6.js";var ce={class:`container mx-auto p-4 sm:p-6 space-y-6`},le={class:`text-2xl sm:text-3xl font-bold`},ue={class:`text-sm font-medium mb-3`},de={class:`grid grid-cols-2 md:grid-cols-3 gap-3`},k={class:`text-sm font-medium mb-3`},A={class:`grid grid-cols-3 gap-3`},j={class:`text-sm font-medium mb-3`},M={class:`grid grid-cols-2 md:grid-cols-3 gap-3`},N={class:`text-sm font-medium mb-3`},P={class:`grid grid-cols-2 md:grid-cols-3 gap-3`},F={class:`text-sm font-medium mb-3`},I={class:`grid grid-cols-3 gap-3`},L={class:`text-sm font-medium mb-3`},R={class:`grid grid-cols-3 gap-3`},z={class:`flex gap-2`},B=ee({__name:`BattleSimulatorView`,setup(ee){let{t:B}=re(),{SHIPS:V,DEFENSES:fe}=E(),H=[`weapon`,`shield`,`armor`],pe=[{key:`metal`},{key:`crystal`},{key:`deuterium`}],U=()=>{let e={};return Object.values(_).forEach(t=>{e[t]=0}),e},W=i(U()),G=i(`attacker`),K=i({weapon:0,shield:0,armor:0}),q=i(U()),J=()=>{let e={};return Object.values(v).forEach(t=>{e[t]=0}),e},Y=i(J()),X=i({weapon:0,shield:0,armor:0}),Z=i({metal:1e5,crystal:5e4,deuterium:25e3,darkMatter:100,energy:0}),Q=i(null),$=i(!1),me=async()=>{let e={ships:s(W.value),weaponTech:K.value.weapon,shieldTech:K.value.shield,armorTech:K.value.armor},t={ships:s(q.value),defense:s(Y.value),weaponTech:X.value.weapon,shieldTech:X.value.shield,armorTech:X.value.armor},n=await a.simulateBattle({attacker:e,defender:t}),r=n.winner===`attacker`?await a.calculatePlunder({defenderResources:s(Z.value),attackerFleet:n.attackerRemaining}):{metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0},i=await a.calculateDebris({attackerLosses:n.attackerLosses,defenderLosses:n.defenderLosses}),o=p(i)/100;Q.value={id:`sim_${Date.now()}`,timestamp:Date.now(),attackerId:`simulator_attacker`,defenderId:`simulator_defender`,attackerPlanetId:`sim_attacker`,defenderPlanetId:`sim_defender`,attackerFleet:W.value,defenderFleet:q.value,defenderDefense:Y.value,attackerLosses:n.attackerLosses,defenderLosses:n.defenderLosses,winner:n.winner,plunder:r,debrisField:i,rounds:n.rounds,attackerRemaining:n.attackerRemaining,defenderRemaining:n.defenderRemaining,roundDetails:n.roundDetails,moonChance:o},$.value=!0},he=()=>{W.value=U(),q.value=U(),Y.value=J(),K.value={weapon:0,shield:0,armor:0},X.value={weapon:0,shield:0,armor:0},Q.value=null,$.value=!1};return(i,a)=>(f(),o(`div`,ce,[l(`h1`,le,c(n(B)(`simulatorView.title`)),1),u(n(ae),{modelValue:G.value,"onUpdate:modelValue":a[0]||=e=>G.value=e,class:`w-full`},{default:t(()=>[u(n(oe),{class:`grid w-full grid-cols-2`},{default:t(()=>[u(n(O),{value:`attacker`},{default:t(()=>[u(n(te),{class:`h-4 w-4 mr-2`}),e(` `+c(n(B)(`simulatorView.attacker`)),1)]),_:1}),u(n(O),{value:`defender`},{default:t(()=>[u(n(m),{class:`h-4 w-4 mr-2`}),e(` `+c(n(B)(`simulatorView.defender`)),1)]),_:1})]),_:1}),u(n(D),{value:`attacker`,class:`mt-4`},{default:t(()=>[u(n(S),null,{default:t(()=>[u(n(w),null,{default:t(()=>[u(n(x),null,{default:t(()=>[e(c(n(B)(`simulatorView.attackerConfig`)),1)]),_:1}),u(n(g),null,{default:t(()=>[e(c(n(B)(`simulatorView.attackerConfigDesc`)),1)]),_:1})]),_:1}),u(n(T),{class:`space-y-4`},{default:t(()=>[l(`div`,null,[l(`h3`,ue,c(n(B)(`simulatorView.fleet`)),1),l(`div`,de,[(f(!0),o(r,null,d(Object.values(n(_)),r=>(f(),o(`div`,{key:r,class:`space-y-1`},[u(n(C),{for:`attacker-${r}`,class:`text-xs`},{default:t(()=>[e(c(n(V)[r].name),1)]),_:2},1032,[`for`]),u(n(y),{id:`attacker-${r}`,"model-value":W.value[r]??0,"onUpdate:modelValue":e=>W.value[r]=typeof e==`number`?e:0,type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`model-value`,`onUpdate:modelValue`])]))),128))])]),l(`div`,null,[l(`h3`,k,c(n(B)(`simulatorView.techLevels`)),1),l(`div`,A,[(f(),o(r,null,d(H,r=>l(`div`,{key:r,class:`space-y-1`},[u(n(C),{for:`attacker-${r}`,class:`text-xs`},{default:t(()=>[e(c(n(B)(`simulatorView.${r}`)),1)]),_:2},1032,[`for`]),u(n(y),{id:`attacker-${r}`,modelValue:K.value[r],"onUpdate:modelValue":e=>K.value[r]=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`])])),64))])])]),_:1})]),_:1})]),_:1}),u(n(D),{value:`defender`,class:`mt-4`},{default:t(()=>[u(n(S),null,{default:t(()=>[u(n(w),null,{default:t(()=>[u(n(x),null,{default:t(()=>[e(c(n(B)(`simulatorView.defenderConfig`)),1)]),_:1}),u(n(g),null,{default:t(()=>[e(c(n(B)(`simulatorView.defenderConfigDesc`)),1)]),_:1})]),_:1}),u(n(T),{class:`space-y-4`},{default:t(()=>[l(`div`,null,[l(`h3`,j,c(n(B)(`simulatorView.fleet`)),1),l(`div`,M,[(f(!0),o(r,null,d(Object.values(n(_)),r=>(f(),o(`div`,{key:r,class:`space-y-1`},[u(n(C),{for:`defender-${r}`,class:`text-xs`},{default:t(()=>[e(c(n(V)[r].name),1)]),_:2},1032,[`for`]),u(n(y),{id:`defender-${r}`,"model-value":q.value[r]??0,"onUpdate:modelValue":e=>q.value[r]=typeof e==`number`?e:0,type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`model-value`,`onUpdate:modelValue`])]))),128))])]),l(`div`,null,[l(`h3`,N,c(n(B)(`simulatorView.defenseStructures`)),1),l(`div`,P,[(f(!0),o(r,null,d(Object.values(n(v)),r=>(f(),o(`div`,{key:r,class:`space-y-1`},[u(n(C),{for:`defense-${r}`,class:`text-xs`},{default:t(()=>[e(c(n(fe)[r].name),1)]),_:2},1032,[`for`]),u(n(y),{id:`defense-${r}`,"model-value":Y.value[r]??0,"onUpdate:modelValue":e=>Y.value[r]=typeof e==`number`?e:0,type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`model-value`,`onUpdate:modelValue`])]))),128))])]),l(`div`,null,[l(`h3`,F,c(n(B)(`simulatorView.techLevels`)),1),l(`div`,I,[(f(),o(r,null,d(H,r=>l(`div`,{key:r,class:`space-y-1`},[u(n(C),{for:`defender-${r}`,class:`text-xs`},{default:t(()=>[e(c(n(B)(`simulatorView.${r}`)),1)]),_:2},1032,[`for`]),u(n(y),{id:`defender-${r}`,modelValue:X.value[r],"onUpdate:modelValue":e=>X.value[r]=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`])])),64))])]),l(`div`,null,[l(`h3`,L,c(n(B)(`simulatorView.defenderResources`)),1),l(`div`,R,[(f(),o(r,null,d(pe,r=>l(`div`,{key:r.key,class:`space-y-1`},[u(n(C),{for:`defender-${r.key}`,class:`text-xs flex items-center gap-1`},{default:t(()=>[u(ie,{type:r.key,size:`sm`},null,8,[`type`]),e(` `+c(n(B)(`resources.${r.key}`)),1)]),_:2},1032,[`for`]),u(n(y),{id:`defender-${r.key}`,modelValue:Z.value[r.key],"onUpdate:modelValue":e=>Z.value[r.key]=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`])])),64))])])]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),l(`div`,z,[u(n(b),{onClick:me,class:`flex-1`,size:`lg`},{default:t(()=>[u(n(h),{class:`h-4 w-4 mr-2`}),e(` `+c(n(B)(`simulatorView.startSimulation`)),1)]),_:1}),u(n(b),{onClick:he,variant:`outline`,size:`lg`},{default:t(()=>[u(n(ne),{class:`h-4 w-4 mr-2`}),e(` `+c(n(B)(`simulatorView.reset`)),1)]),_:1})]),u(se,{open:$.value,"onUpdate:open":a[1]||=e=>$.value=e,report:Q.value},null,8,[`open`,`report`])]))}});export{B as default}; |