Files
ogame-vue-ts/docs/assets/BattleSimulatorView-BMgbGRUI.js
谦君 59dd7bfd05 feat: 重构战报弹窗与模拟器视图,优化UI与逻辑
重构BattleReportDialog和BattleSimulatorView相关静态资源,替换旧版JS/CSS文件,提升界面一致性和交互体验。新增和优化空状态、滚动区域等通用UI组件,移除部分冗余composable,完善多语言内容。引入导弹逻辑,补充版本检测工具,提升整体代码结构和可维护性。
2025-12-15 20:04:40 +08:00

1 line
7.5 KiB
JavaScript

import{$n as e,En as t,G as n,On as r,Rn as i,Yn as a,cr as o,dn as s,fn as c,pn as l,rn as u,rr as d,sn as f,un as p,wt as m}from"./game-logic-BBFCPVtv.js";import"./vendor-pinia-L_8CmDWM.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-BC9uiVvf.js";import"./vendor-others-Bce0hM6h.js";import"./vendor-reka-ui-DR3m_AkV.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-Djj-oRw9.js";import{_ as ee,l as te,m as ne,t as h}from"./vendor-icons-Ccm2_GPI.js";import"./TooltipProvider-Cspoy8HK.js";import{t as g}from"./CardDescription-DduF5EVY.js";import{_,f as v}from"./game-config-DRP-gbpS.js";import{J as y,L as re,V as b,X as ie,d as x,f as S,m as C,p as w,u as T}from"./index-B4KMqZ_y.js";import{t as ae}from"./useGameConfig-DLqfPHtW.js";import{i as oe,n as se,r as E,t as D}from"./TabsTrigger-BnZOhHbD.js";import{t as ce}from"./BattleReportDialog-BNULWr3T.js";var le={class:`container mx-auto p-4 sm:p-6 space-y-6`},ue={class:`text-2xl sm:text-3xl font-bold`},de={class:`text-sm font-medium mb-3`},O={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=l({__name:`BattleSimulatorView`,setup(l){let{t:B}=ie(),{SHIPS:V,DEFENSES:fe}=ae(),H=[`weapon`,`shield`,`armor`],pe=[{key:`metal`},{key:`crystal`},{key:`deuterium`}],U=()=>{let e={};return Object.values(_).forEach(t=>{e[t]=0}),e},W=a(U()),G=a(`attacker`),K=a({weapon:0,shield:0,armor:0}),q=a(U()),J=()=>{let e={};return Object.values(v).forEach(t=>{e[t]=0}),e},Y=a(J()),X=a({weapon:0,shield:0,armor:0}),Z=a({metal:1e5,crystal:5e4,deuterium:25e3,darkMatter:100,energy:0}),Q=a(null),$=a(!1),me=async()=>{let t={ships:e(W.value),weaponTech:K.value.weapon,shieldTech:K.value.shield,armorTech:K.value.armor},r={ships:e(q.value),defense:e(Y.value),weaponTech:X.value.weapon,shieldTech:X.value.shield,armorTech:X.value.armor},i=await n.simulateBattle({attacker:t,defender:r}),a=i.winner===`attacker`?await n.calculatePlunder({defenderResources:e(Z.value),attackerFleet:i.attackerRemaining}):{metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0},o=await n.calculateDebris({attackerLosses:i.attackerLosses,defenderLosses:i.defenderLosses}),s=m(o)/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:i.attackerLosses,defenderLosses:i.defenderLosses,winner:i.winner,plunder:a,debrisField:o,rounds:i.rounds,attackerRemaining:i.attackerRemaining,defenderRemaining:i.defenderRemaining,roundDetails:i.roundDetails,moonChance:s},$.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(e,n)=>(t(),p(`div`,le,[f(`h1`,ue,o(d(B)(`simulatorView.title`)),1),c(d(oe),{modelValue:G.value,"onUpdate:modelValue":n[0]||=e=>G.value=e,class:`w-full`},{default:i(()=>[c(d(se),{class:`grid w-full grid-cols-2`},{default:i(()=>[c(d(D),{value:`attacker`},{default:i(()=>[c(d(te),{class:`h-4 w-4 mr-2`}),s(` `+o(d(B)(`simulatorView.attacker`)),1)]),_:1}),c(d(D),{value:`defender`},{default:i(()=>[c(d(ne),{class:`h-4 w-4 mr-2`}),s(` `+o(d(B)(`simulatorView.defender`)),1)]),_:1})]),_:1}),c(d(E),{value:`attacker`,class:`mt-4`},{default:i(()=>[c(d(C),null,{default:i(()=>[c(d(S),null,{default:i(()=>[c(d(x),null,{default:i(()=>[s(o(d(B)(`simulatorView.attackerConfig`)),1)]),_:1}),c(d(g),null,{default:i(()=>[s(o(d(B)(`simulatorView.attackerConfigDesc`)),1)]),_:1})]),_:1}),c(d(w),{class:`space-y-4`},{default:i(()=>[f(`div`,null,[f(`h3`,de,o(d(B)(`simulatorView.fleet`)),1),f(`div`,O,[(t(!0),p(u,null,r(Object.values(d(_)),e=>(t(),p(`div`,{key:e,class:`space-y-1`},[c(d(T),{for:`attacker-${e}`,class:`text-xs`},{default:i(()=>[s(o(d(V)[e].name),1)]),_:2},1032,[`for`]),c(d(b),{id:`attacker-${e}`,"model-value":W.value[e]??0,"onUpdate:modelValue":t=>W.value[e]=typeof t==`number`?t:0,type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`model-value`,`onUpdate:modelValue`])]))),128))])]),f(`div`,null,[f(`h3`,k,o(d(B)(`simulatorView.techLevels`)),1),f(`div`,A,[(t(),p(u,null,r(H,e=>f(`div`,{key:e,class:`space-y-1`},[c(d(T),{for:`attacker-${e}`,class:`text-xs`},{default:i(()=>[s(o(d(B)(`simulatorView.${e}`)),1)]),_:2},1032,[`for`]),c(d(b),{id:`attacker-${e}`,modelValue:K.value[e],"onUpdate:modelValue":t=>K.value[e]=t,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`])])),64))])])]),_:1})]),_:1})]),_:1}),c(d(E),{value:`defender`,class:`mt-4`},{default:i(()=>[c(d(C),null,{default:i(()=>[c(d(S),null,{default:i(()=>[c(d(x),null,{default:i(()=>[s(o(d(B)(`simulatorView.defenderConfig`)),1)]),_:1}),c(d(g),null,{default:i(()=>[s(o(d(B)(`simulatorView.defenderConfigDesc`)),1)]),_:1})]),_:1}),c(d(w),{class:`space-y-4`},{default:i(()=>[f(`div`,null,[f(`h3`,j,o(d(B)(`simulatorView.fleet`)),1),f(`div`,M,[(t(!0),p(u,null,r(Object.values(d(_)),e=>(t(),p(`div`,{key:e,class:`space-y-1`},[c(d(T),{for:`defender-${e}`,class:`text-xs`},{default:i(()=>[s(o(d(V)[e].name),1)]),_:2},1032,[`for`]),c(d(b),{id:`defender-${e}`,"model-value":q.value[e]??0,"onUpdate:modelValue":t=>q.value[e]=typeof t==`number`?t:0,type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`model-value`,`onUpdate:modelValue`])]))),128))])]),f(`div`,null,[f(`h3`,N,o(d(B)(`simulatorView.defenseStructures`)),1),f(`div`,P,[(t(!0),p(u,null,r(Object.values(d(v)),e=>(t(),p(`div`,{key:e,class:`space-y-1`},[c(d(T),{for:`defense-${e}`,class:`text-xs`},{default:i(()=>[s(o(d(fe)[e].name),1)]),_:2},1032,[`for`]),c(d(b),{id:`defense-${e}`,"model-value":Y.value[e]??0,"onUpdate:modelValue":t=>Y.value[e]=typeof t==`number`?t:0,type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`model-value`,`onUpdate:modelValue`])]))),128))])]),f(`div`,null,[f(`h3`,F,o(d(B)(`simulatorView.techLevels`)),1),f(`div`,I,[(t(),p(u,null,r(H,e=>f(`div`,{key:e,class:`space-y-1`},[c(d(T),{for:`defender-${e}`,class:`text-xs`},{default:i(()=>[s(o(d(B)(`simulatorView.${e}`)),1)]),_:2},1032,[`for`]),c(d(b),{id:`defender-${e}`,modelValue:X.value[e],"onUpdate:modelValue":t=>X.value[e]=t,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`])])),64))])]),f(`div`,null,[f(`h3`,L,o(d(B)(`simulatorView.defenderResources`)),1),f(`div`,R,[(t(),p(u,null,r(pe,e=>f(`div`,{key:e.key,class:`space-y-1`},[c(d(T),{for:`defender-${e.key}`,class:`text-xs flex items-center gap-1`},{default:i(()=>[c(re,{type:e.key,size:`sm`},null,8,[`type`]),s(` `+o(d(B)(`resources.${e.key}`)),1)]),_:2},1032,[`for`]),c(d(b),{id:`defender-${e.key}`,modelValue:Z.value[e.key],"onUpdate:modelValue":t=>Z.value[e.key]=t,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`])])),64))])])]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),f(`div`,z,[c(d(y),{onClick:me,class:`flex-1`,size:`lg`},{default:i(()=>[c(d(h),{class:`h-4 w-4 mr-2`}),s(` `+o(d(B)(`simulatorView.startSimulation`)),1)]),_:1}),c(d(y),{onClick:he,variant:`outline`,size:`lg`},{default:i(()=>[c(d(ee),{class:`h-4 w-4 mr-2`}),s(` `+o(d(B)(`simulatorView.reset`)),1)]),_:1})]),c(ce,{open:$.value,"onUpdate:open":n[1]||=e=>$.value=e,report:Q.value},null,8,[`open`,`report`])]))}});export{B as default};