Files
ogame-vue-ts/docs/assets/battle.worker-CNO8oZzx.js
谦君 44580909a3 feat: 新增docs静态资源与Electron主进程
添加了docs目录及其静态资源文件,支持前端文档和演示页面部署。新增dist-electron/main.js,实现Electron主进程窗口加载本地docs或开发服务器。更新.gitignore,允许docs目录纳入版本控制。
2025-12-14 15:59:32 +08:00

1 line
16 KiB
JavaScript

(function(){let e={MetalMine:`metalMine`,CrystalMine:`crystalMine`,DeuteriumSynthesizer:`deuteriumSynthesizer`,SolarPlant:`solarPlant`,RoboticsFactory:`roboticsFactory`,NaniteFactory:`naniteFactory`,Shipyard:`shipyard`,ResearchLab:`researchLab`,MetalStorage:`metalStorage`,CrystalStorage:`crystalStorage`,DeuteriumTank:`deuteriumTank`,DarkMatterCollector:`darkMatterCollector`,Terraformer:`terraformer`,LunarBase:`lunarBase`,SensorPhalanx:`sensorPhalanx`,JumpGate:`jumpGate`,PlanetDestroyerFactory:`planetDestroyerFactory`},t={EnergyTechnology:`energyTechnology`,LaserTechnology:`laserTechnology`,IonTechnology:`ionTechnology`,HyperspaceTechnology:`hyperspaceTechnology`,PlasmaTechnology:`plasmaTechnology`,ComputerTechnology:`computerTechnology`,CombustionDrive:`combustionDrive`,ImpulseDrive:`impulseDrive`,HyperspaceDrive:`hyperspaceDrive`,DarkMatterTechnology:`darkMatterTechnology`,TerraformingTechnology:`terraformingTechnology`,PlanetDestructionTech:`planetDestructionTech`},n={RocketLauncher:`rocketLauncher`,LightLaser:`lightLaser`,HeavyLaser:`heavyLaser`,GaussCannon:`gaussCannon`,IonCannon:`ionCannon`,PlasmaTurret:`plasmaTurret`,SmallShieldDome:`smallShieldDome`,LargeShieldDome:`largeShieldDome`,PlanetaryShield:`planetaryShield`},r={LightFighter:`lightFighter`,HeavyFighter:`heavyFighter`,Cruiser:`cruiser`,Battleship:`battleship`,SmallCargo:`smallCargo`,LargeCargo:`largeCargo`,ColonyShip:`colonyShip`,Recycler:`recycler`,EspionageProbe:`espionageProbe`,DarkMatterHarvester:`darkMatterHarvester`,Deathstar:`deathstar`},i={Commander:`commander`,Admiral:`admiral`,Engineer:`engineer`,Geologist:`geologist`,Technocrat:`technocrat`,DarkMatterSpecialist:`darkMatterSpecialist`};e.MetalMine,e.MetalMine,e.SolarPlant,e.RoboticsFactory,e.RoboticsFactory,e.ResearchLab,e.NaniteFactory,e.ResearchLab,e.CrystalMine,e.CrystalMine,e.SolarPlant,e.RoboticsFactory,e.RoboticsFactory,e.ResearchLab,e.NaniteFactory,e.ResearchLab,e.DeuteriumSynthesizer,e.DeuteriumSynthesizer,e.SolarPlant,e.RoboticsFactory,e.RoboticsFactory,e.ResearchLab,e.NaniteFactory,e.ResearchLab,e.SolarPlant,e.SolarPlant,e.RoboticsFactory,e.RoboticsFactory,e.ResearchLab,e.NaniteFactory,e.ResearchLab,e.RoboticsFactory,e.RoboticsFactory,e.MetalMine,e.CrystalMine,e.DeuteriumSynthesizer,e.ResearchLab,e.SolarPlant,e.ResearchLab,e.SolarPlant,e.MetalMine,e.CrystalMine,e.ResearchLab,e.NaniteFactory,e.NaniteFactory,e.NaniteFactory,e.RoboticsFactory,e.ResearchLab,e.Shipyard,t.ComputerTechnology,e.ResearchLab,e.Shipyard,t.ComputerTechnology,e.Shipyard,e.Shipyard,e.RoboticsFactory,e.RoboticsFactory,e.ResearchLab,e.RoboticsFactory,e.ResearchLab,e.NaniteFactory,e.ResearchLab,e.ResearchLab,e.MetalMine,e.CrystalMine,e.DeuteriumSynthesizer,e.RoboticsFactory,e.MetalMine,e.CrystalMine,e.DeuteriumSynthesizer,e.RoboticsFactory,e.NaniteFactory,t.EnergyTechnology,e.MetalStorage,e.MetalStorage,e.MetalMine,e.MetalMine,e.RoboticsFactory,e.MetalMine,e.RoboticsFactory,e.CrystalStorage,e.CrystalStorage,e.CrystalMine,e.CrystalMine,e.RoboticsFactory,e.CrystalMine,e.RoboticsFactory,e.DeuteriumTank,e.DeuteriumTank,e.DeuteriumSynthesizer,e.DeuteriumSynthesizer,e.RoboticsFactory,e.DeuteriumSynthesizer,e.RoboticsFactory,e.DarkMatterCollector,e.DarkMatterCollector,e.ResearchLab,t.DarkMatterTechnology,e.ResearchLab,t.DarkMatterTechnology,e.RoboticsFactory,e.ResearchLab,t.DarkMatterTechnology,e.NaniteFactory,e.Terraformer,e.Terraformer,e.ResearchLab,e.RoboticsFactory,t.TerraformingTechnology,e.ResearchLab,t.TerraformingTechnology,e.NaniteFactory,e.ResearchLab,t.TerraformingTechnology,e.NaniteFactory,e.LunarBase,e.LunarBase,e.RoboticsFactory,e.RoboticsFactory,e.NaniteFactory,e.SensorPhalanx,e.SensorPhalanx,e.LunarBase,e.LunarBase,t.ComputerTechnology,e.LunarBase,t.ComputerTechnology,e.NaniteFactory,e.JumpGate,e.JumpGate,e.LunarBase,t.HyperspaceTechnology,e.LunarBase,t.HyperspaceTechnology,e.NaniteFactory,e.PlanetDestroyerFactory,e.PlanetDestroyerFactory,e.Shipyard,e.RoboticsFactory,e.NaniteFactory,t.PlanetDestructionTech,e.Shipyard,e.NaniteFactory,t.PlanetDestructionTech,t.HyperspaceTechnology,t.EnergyTechnology,t.EnergyTechnology,e.ResearchLab,e.ResearchLab,e.SolarPlant,e.ResearchLab,e.SolarPlant,e.RoboticsFactory,e.ResearchLab,e.RoboticsFactory,e.NaniteFactory,t.LaserTechnology,t.LaserTechnology,e.ResearchLab,t.EnergyTechnology,e.ResearchLab,t.EnergyTechnology,e.Shipyard,e.ResearchLab,t.EnergyTechnology,e.Shipyard,t.IonTechnology,t.IonTechnology,e.ResearchLab,t.LaserTechnology,t.EnergyTechnology,e.ResearchLab,t.LaserTechnology,t.EnergyTechnology,e.ResearchLab,t.LaserTechnology,e.NaniteFactory,t.HyperspaceTechnology,t.HyperspaceTechnology,e.ResearchLab,t.EnergyTechnology,e.ResearchLab,t.EnergyTechnology,e.Shipyard,e.ResearchLab,t.EnergyTechnology,e.NaniteFactory,t.PlasmaTechnology,t.PlasmaTechnology,e.ResearchLab,t.EnergyTechnology,t.LaserTechnology,t.IonTechnology,e.ResearchLab,t.EnergyTechnology,t.IonTechnology,e.NaniteFactory,e.ResearchLab,t.EnergyTechnology,t.IonTechnology,e.NaniteFactory,t.ComputerTechnology,t.ComputerTechnology,e.ResearchLab,e.ResearchLab,e.ResearchLab,e.RoboticsFactory,e.ResearchLab,e.NaniteFactory,t.CombustionDrive,t.CombustionDrive,e.ResearchLab,t.EnergyTechnology,e.ResearchLab,t.EnergyTechnology,e.Shipyard,e.ResearchLab,t.EnergyTechnology,e.Shipyard,t.ImpulseDrive,t.ImpulseDrive,e.ResearchLab,t.EnergyTechnology,e.ResearchLab,t.EnergyTechnology,e.Shipyard,e.ResearchLab,t.EnergyTechnology,e.Shipyard,t.HyperspaceDrive,t.HyperspaceDrive,e.ResearchLab,t.HyperspaceTechnology,e.ResearchLab,t.HyperspaceTechnology,e.Shipyard,e.ResearchLab,t.HyperspaceTechnology,e.NaniteFactory,t.DarkMatterTechnology,t.DarkMatterTechnology,e.ResearchLab,t.HyperspaceTechnology,e.ResearchLab,t.HyperspaceTechnology,e.RoboticsFactory,t.EnergyTechnology,e.ResearchLab,t.HyperspaceTechnology,e.NaniteFactory,t.EnergyTechnology,t.TerraformingTechnology,t.TerraformingTechnology,e.ResearchLab,t.EnergyTechnology,e.ResearchLab,t.EnergyTechnology,e.RoboticsFactory,e.ResearchLab,t.EnergyTechnology,e.NaniteFactory,t.PlanetDestructionTech,t.PlanetDestructionTech,e.ResearchLab,t.HyperspaceTechnology,t.HyperspaceDrive,t.PlasmaTechnology,e.ResearchLab,t.HyperspaceTechnology,t.HyperspaceDrive,t.PlasmaTechnology,e.NaniteFactory;let a={[r.LightFighter]:{id:r.LightFighter,name:`轻型战斗机`,description:`基础战斗单位`,cost:{metal:3e3,crystal:1e3,deuterium:0,darkMatter:0,energy:0},buildTime:20,cargoCapacity:50,attack:50,shield:10,armor:400,speed:12500,fuelConsumption:20,storageUsage:5,requirements:{[e.Shipyard]:1,[t.CombustionDrive]:1}},[r.HeavyFighter]:{id:r.HeavyFighter,name:`重型战斗机`,description:`强力战斗单位`,cost:{metal:6e3,crystal:4e3,deuterium:0,darkMatter:0,energy:0},buildTime:30,cargoCapacity:100,attack:150,shield:25,armor:1e3,speed:1e4,fuelConsumption:75,storageUsage:10,requirements:{[e.Shipyard]:3,[t.ImpulseDrive]:2}},[r.Cruiser]:{id:r.Cruiser,name:`巡洋舰`,description:`中型战舰`,cost:{metal:2e4,crystal:7e3,deuterium:2e3,darkMatter:0,energy:0},buildTime:60,cargoCapacity:800,attack:400,shield:50,armor:2700,speed:15e3,fuelConsumption:300,storageUsage:15,requirements:{[e.Shipyard]:5,[t.ImpulseDrive]:4,[t.IonTechnology]:2}},[r.Battleship]:{id:r.Battleship,name:`战列舰`,description:`重型战舰`,cost:{metal:45e3,crystal:15e3,deuterium:0,darkMatter:0,energy:0},buildTime:90,cargoCapacity:1500,attack:1e3,shield:200,armor:6e3,speed:1e4,fuelConsumption:500,storageUsage:25,requirements:{[e.Shipyard]:7,[t.HyperspaceDrive]:4}},[r.SmallCargo]:{id:r.SmallCargo,name:`小型运输船`,description:`运输资源`,cost:{metal:2e3,crystal:2e3,deuterium:0,darkMatter:0,energy:0},buildTime:15,cargoCapacity:5e3,attack:5,shield:10,armor:400,speed:5e3,fuelConsumption:10,storageUsage:10,requirements:{[e.Shipyard]:2,[t.CombustionDrive]:2}},[r.LargeCargo]:{id:r.LargeCargo,name:`大型运输船`,description:`大量运输资源`,cost:{metal:6e3,crystal:6e3,deuterium:0,darkMatter:0,energy:0},buildTime:30,cargoCapacity:25e3,attack:5,shield:25,armor:1200,speed:7500,fuelConsumption:50,storageUsage:20,requirements:{[e.Shipyard]:4,[t.CombustionDrive]:6}},[r.ColonyShip]:{id:r.ColonyShip,name:`殖民船`,description:`建立新殖民地`,cost:{metal:1e4,crystal:2e4,deuterium:1e4,darkMatter:0,energy:0},buildTime:120,cargoCapacity:7500,attack:50,shield:100,armor:3e3,speed:2500,fuelConsumption:1e3,storageUsage:40,requirements:{[e.Shipyard]:4,[t.ImpulseDrive]:3}},[r.Recycler]:{id:r.Recycler,name:`回收船`,description:`回收废墟资源`,cost:{metal:1e4,crystal:6e3,deuterium:2e3,darkMatter:0,energy:0},buildTime:60,cargoCapacity:2e4,attack:1,shield:10,armor:1600,speed:2e3,fuelConsumption:300,storageUsage:30,requirements:{[e.Shipyard]:4,[t.CombustionDrive]:6}},[r.EspionageProbe]:{id:r.EspionageProbe,name:`间谍探测器`,description:`侦察敌方星球`,cost:{metal:0,crystal:1e3,deuterium:0,darkMatter:0,energy:0},buildTime:5,cargoCapacity:5,attack:0,shield:0,armor:100,speed:1e8,fuelConsumption:1,storageUsage:2,requirements:{[e.Shipyard]:3,[t.CombustionDrive]:3}},[r.DarkMatterHarvester]:{id:r.DarkMatterHarvester,name:`暗物质采集船`,description:`专门用于采集暗物质的特殊飞船`,cost:{metal:1e5,crystal:15e4,deuterium:5e4,darkMatter:0,energy:0},buildTime:120,cargoCapacity:1e3,attack:10,shield:50,armor:2e3,speed:5e3,fuelConsumption:500,storageUsage:50,requirements:{[e.Shipyard]:8,[t.HyperspaceDrive]:5,[t.DarkMatterTechnology]:1}},[r.Deathstar]:{id:r.Deathstar,name:`死星`,description:`终极武器,能够摧毁整个行星`,cost:{metal:5e6,crystal:4e6,deuterium:1e6,darkMatter:0,energy:0},buildTime:600,cargoCapacity:1e6,attack:2e5,shield:5e4,armor:9e5,speed:100,fuelConsumption:1,storageUsage:100,requirements:{[e.PlanetDestroyerFactory]:10,[t.PlanetDestructionTech]:7,[t.HyperspaceDrive]:7}}},o={[n.RocketLauncher]:{id:n.RocketLauncher,name:`火箭发射器`,description:`基础防御设施`,cost:{metal:2e3,crystal:0,deuterium:0,darkMatter:0,energy:0},buildTime:10,attack:80,shield:20,armor:200,requirements:{[e.Shipyard]:1}},[n.LightLaser]:{id:n.LightLaser,name:`轻型激光炮`,description:`激光防御武器`,cost:{metal:1500,crystal:500,deuterium:0,darkMatter:0,energy:0},buildTime:12,attack:100,shield:25,armor:200,requirements:{[e.Shipyard]:2,[t.LaserTechnology]:3}},[n.HeavyLaser]:{id:n.HeavyLaser,name:`重型激光炮`,description:`强力激光武器`,cost:{metal:6e3,crystal:2e3,deuterium:0,darkMatter:0,energy:0},buildTime:20,attack:250,shield:100,armor:800,requirements:{[e.Shipyard]:4,[t.LaserTechnology]:6}},[n.GaussCannon]:{id:n.GaussCannon,name:`高斯炮`,description:`电磁加速武器`,cost:{metal:2e4,crystal:15e3,deuterium:2e3,darkMatter:0,energy:0},buildTime:35,attack:1100,shield:200,armor:3500,requirements:{[e.Shipyard]:6,[t.EnergyTechnology]:6}},[n.IonCannon]:{id:n.IonCannon,name:`离子炮`,description:`离子武器系统`,cost:{metal:2e3,crystal:6e3,deuterium:0,darkMatter:0,energy:0},buildTime:30,attack:150,shield:500,armor:800,requirements:{[e.Shipyard]:4,[t.IonTechnology]:4}},[n.PlasmaTurret]:{id:n.PlasmaTurret,name:`等离子炮台`,description:`最强防御武器`,cost:{metal:5e4,crystal:5e4,deuterium:3e4,darkMatter:0,energy:0},buildTime:60,attack:3e3,shield:300,armor:1e4,requirements:{[e.Shipyard]:8,[t.PlasmaTechnology]:7}},[n.SmallShieldDome]:{id:n.SmallShieldDome,name:`小型护盾罩`,description:`保护星球的能量护盾`,cost:{metal:1e4,crystal:1e4,deuterium:0,darkMatter:0,energy:0},buildTime:30,attack:1,shield:2e3,armor:2e3,requirements:{[e.Shipyard]:6,[t.EnergyTechnology]:3}},[n.LargeShieldDome]:{id:n.LargeShieldDome,name:`大型护盾罩`,description:`强大的星球护盾`,cost:{metal:5e4,crystal:5e4,deuterium:0,darkMatter:0,energy:0},buildTime:60,attack:1,shield:1e4,armor:1e4,requirements:{[e.Shipyard]:6,[t.EnergyTechnology]:6}},[n.PlanetaryShield]:{id:n.PlanetaryShield,name:`行星护盾`,description:`保护行星免受毁灭攻击的超级护盾`,cost:{metal:2e6,crystal:2e6,deuterium:1e6,darkMatter:0,energy:0},buildTime:180,attack:1,shield:1e5,armor:1e5,requirements:{[e.Shipyard]:10,[t.EnergyTechnology]:10,[t.HyperspaceTechnology]:8}}};i.Commander,i.Commander,i.Admiral,i.Admiral,i.Engineer,i.Engineer,i.Geologist,i.Geologist,i.Technocrat,i.Technocrat,i.DarkMatterSpecialist,i.DarkMatterSpecialist;let s={SIMULATE_BATTLE:`SIMULATE_BATTLE`,CALCULATE_PLUNDER:`CALCULATE_PLUNDER`,CALCULATE_DEBRIS:`CALCULATE_DEBRIS`,SUCCESS:`SUCCESS`,ERROR:`ERROR`},c=(e,t=0,n=.1)=>Math.floor(e*(1+t*n)),l=(e,t=!1)=>{let n=[];if(e.ships){for(let[t,r]of Object.entries(e.ships))if(r>0){let i=a[t];n.push({type:t,count:r,attack:c(i.attack,e.weaponTech),shield:c(i.shield,e.shieldTech),armor:c(i.armor,e.armorTech)})}}if(t&&e.defense){for(let[t,r]of Object.entries(e.defense))if(r>0){let i=o[t];n.push({type:t,count:r,attack:c(i.attack,e.weaponTech),shield:c(i.shield,e.shieldTech),armor:c(i.armor,e.armorTech)})}}return n},u=(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}},d=(e,t)=>{let n={},i={},a={};for(let n of e)for(let e=0;e<n.count&&t.length!==0;e++){let e=Math.floor(Math.random()*t.length),o=t[e];if(!o)continue;let{destroyed:s}=u(n,o);if(s>0){if(o.count-=s,Object.values(r).includes(o.type)){let e=o.type;i[e]=(i[e]||0)+s}else{let e=o.type;a[e]=(a[e]||0)+s}o.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}=u(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 o=e.reduce((e,t)=>e+t.count*t.attack,0),s=t.reduce((e,t)=>e+t.count*t.attack,0);return{attackerLosses:n,defenderLosses:{fleet:i,defense:a},attackerRemainingPower:o,defenderRemainingPower:s}},f=(e,t,n=6)=>{let i=l(e,!1),a=l(t,!0),o={},s={},c={},u=[],f=0;for(let e=0;e<n&&!(i.length===0||a.length===0);e++){f++;let e=d(i,a);u.push({round:f,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))o[t]=(o[t]||0)+n;for(let[t,n]of Object.entries(e.defenderLosses.fleet))s[t]=(s[t]||0)+n;for(let[t,n]of Object.entries(e.defenderLosses.defense))c[t]=(c[t]||0)+n}let p={};for(let[e,t]of Object.entries(c)){let n=Math.floor(t*.7);n>0&&(p[e]=n,c[e]=t-n)}let m={};for(let e of i)e.count>0&&(m[e.type]=e.count);let h={},g={};for(let e of a)e.count>0&&(Object.values(r).includes(e.type)?h[e.type]=e.count:g[e.type]=e.count);for(let[e,t]of Object.entries(p))g[e]=(g[e]||0)+t;let _;return _=i.length===0&&a.length===0?`draw`:i.length===0?`defender`:a.length===0?`attacker`:`draw`,{winner:_,rounds:f,attackerLosses:o,defenderLosses:{fleet:s,defense:c},attackerRemaining:m,defenderRemaining:{fleet:h,defense:g},roundDetails:u}},p=(e,t)=>{let n=0;for(let[e,r]of Object.entries(t)){let t=a[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 o=n/i;return{metal:Math.floor(r.metal*o),crystal:Math.floor(r.crystal*o),deuterium:Math.floor(r.deuterium*o),darkMatter:Math.floor(r.darkMatter*o),energy:0}},m=(e,t)=>{let n=0,r=0;for(let[t,i]of Object.entries(e)){let e=a[t];n+=e.cost.metal*i*.3,r+=e.cost.crystal*i*.3}for(let[e,i]of Object.entries(t.fleet)){let t=a[e];n+=t.cost.metal*i*.3,r+=t.cost.crystal*i*.3}for(let[e,i]of Object.entries(t.defense)){let t=o[e];n+=t.cost.metal*i*.3,r+=t.cost.crystal*i*.3}return{metal:Math.floor(n),crystal:Math.floor(r),deuterium:0,darkMatter:0,energy:0}};self.onmessage=e=>{let{id:t,type:n,payload:r}=e.data;try{let e;switch(n){case s.SIMULATE_BATTLE:{let{attacker:t,defender:n,maxRounds:i=6}=r;e=f(t,n,i);break}case s.CALCULATE_PLUNDER:{let{defenderResources:t,attackerFleet:n}=r;e=p(t,n);break}case s.CALCULATE_DEBRIS:{let{attackerLosses:t,defenderLosses:n}=r;e=m(t,n);break}default:throw Error(`Unknown message type: ${n}`)}let i={id:t,type:s.SUCCESS,success:!0,data:e};self.postMessage(i)}catch(e){let n={id:t,type:s.ERROR,success:!1,error:e instanceof Error?e.message:String(e)};self.postMessage(n)}}})();