From 292d913305427d929bfa2d013fc136a25ac32db1 Mon Sep 17 00:00:00 2001 From: Kunagisa <1549184870@qq.com> Date: Fri, 1 Aug 2025 02:05:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=95=E8=B4=A5=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/AlliedAntiAirShip.xml | 545 +++++ public/ButtonStateDataCommon.xml | 1577 ++++++++++++ public/Locomotor.xml | 3253 +++++++++++++++++++++++++ public/LogicCommand.xml | 2291 +++++++++++++++++ public/LogicCommandSet.xml | 1097 +++++++++ public/SpecialPowerTemplates.xml | 1649 +++++++++++++ public/UnitAbilityButtonTemplates.xml | 1088 +++++++++ src/components/RankContestant.vue | 4 +- src/components/TournamentBracket.vue | 326 ++- src/router/index.js | 10 +- src/views/index.vue | 12 +- src/views/index/ConfigEditor.vue | 1542 +++++++++--- 12 files changed, 12990 insertions(+), 404 deletions(-) create mode 100644 public/AlliedAntiAirShip.xml create mode 100644 public/ButtonStateDataCommon.xml create mode 100644 public/Locomotor.xml create mode 100644 public/LogicCommand.xml create mode 100644 public/LogicCommandSet.xml create mode 100644 public/SpecialPowerTemplates.xml create mode 100644 public/UnitAbilityButtonTemplates.xml diff --git a/public/AlliedAntiAirShip.xml b/public/AlliedAntiAirShip.xml new file mode 100644 index 0000000..75fb525 --- /dev/null +++ b/public/AlliedAntiAirShip.xml @@ -0,0 +1,545 @@ + + + + + + + + + + + + + + + + + + + + + + Name:AlliedAntiAirShip + + + + + + + + + + + + + + + + + + + + + + + + + + + FXGradient01 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + FXGrid_3 + + + FXInterlacedMask2 + + + 0.00000 + 2.00000 + 1.000000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AlliedHydroScrambler_Sparks + AlliedHydroScrambler_Start + + + Upgrade_Veterancy_HEROIC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/ButtonStateDataCommon.xml b/public/ButtonStateDataCommon.xml new file mode 100644 index 0000000..5970eb0 --- /dev/null +++ b/public/ButtonStateDataCommon.xml @@ -0,0 +1,1577 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/Locomotor.xml b/public/Locomotor.xml new file mode 100644 index 0000000..c491bcd --- /dev/null +++ b/public/Locomotor.xml @@ -0,0 +1,3253 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TankBounceKickTerrainMapping + + + + + + + + + + + + + + + + + + + + + + + + + TankBounceKickTerrainMapping + + + + + TankBounceKickTerrainMapping + + + + + + + + + + + + TankBounceKickTerrainMapping + + + + TankBounceKickTerrainMapping + + + + + TankBounceKickTerrainMapping + + + + + + + + + + + + + + + + + + + + + TankBounceKickTerrainMapping + + + + TankBounceKickTerrainMapping + + + + + TankBounceKickTerrainMapping + + + + + + TankBounceKickTerrainMapping + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TankBounceKickTerrainMapping + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TankBounceKickTerrainMapping + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/LogicCommand.xml b/public/LogicCommand.xml new file mode 100644 index 0000000..d1c27e7 --- /dev/null +++ b/public/LogicCommand.xml @@ -0,0 +1,2291 @@ + + + + + + + + + + + + + + + + SpecialPowerMoveToPositionAndEvacuate + + + + + + + SpecialPower_ToggleAlliedEngineerHeal + + + + SpecialPower_TargetedRepairVehicle + + + + SpecialPower_ChargeDefensesTrigger + + + + SpecialPowerCaptureControlPoint + + + + + + + SpecialPowerReturnToProducer + + + + SpecialPowerReturnToProducer + + + + + SpecialPowerReturnToProducer + + + + + SpecialPowerReturnToProducer + + + + + SpecialPower_UnpackReplaceSelf + + + + + SpecialPower_UnpackReplaceSelf + + + + + SpecialPower_UnpackReplaceSelf + + + + + SpecialPower_UnpackReplaceSelf + + + + + SpecialPower_UnpackReplaceSelf + + + + + SpecialPower_UnpackReplaceSelf + + + + + SpecialPower_UnpackReplaceSelf + + + + + SpecialPower_UnpackReplaceSelf + + + + + SpecialPower_UnpackReplaceSelf + + + + + SpecialPower_UnpackReplaceSelf + + + + + SpecialPower_UnpackReplaceSelf + + + + + + + + + + + + + + + + + + + SpecialPower_RecallAllAircraft + + + + Upgrade_AlliedTech2 + + + + + Upgrade_AlliedTech3 + + + + + SpecialPowerHighTechnology + + + + SpecialPowerAirPower + + + + SpecialPowerAlliedFreeTrade + + + + + + AlliedWallPiece + + + AlliedPowerPlant + + + AlliedRefinery + + + AlliedBarracks + + + AlliedWarFactory + + + AlliedAirfield + + + AlliedTechStructure + + + AlliedNavalYard + + + AlliedBaseDefense + + + AlliedBaseDefenseAdvanced + + + AlliedSuperWeapon + + + AlliedSuperWeaponAdvanced + + + Upgrade_AlliedCrane + + + AlliedOutpost + + + Upgrade_AlliedRadarDish + + + Upgrade_AlliedConstructionYardRepairBay + + + Upgrade_AlliedPowerPlantTurbine + + + + Upgrade_AlliedNavalYardRepairBay + + + + Upgrade_AlliedWarFactoryRepairBay + + + + + + + + + + + + + + SpecialPower_PackReplaceSelf + + + + AlliedAntiGroundAircraft + + + AlliedFighterAircraft + + + AlliedBomberAircraft + + + AlliedSupportAircraft + + + AlliedAntiInfantryInfantry + + + AlliedAntiVehicleInfantry + + + AlliedEngineer + + + AlliedScoutInfantry + + + AlliedInfiltrationInfantry + + + AlliedCommandoTech1 + + + AlliedAntiNavalScout + + + AlliedAntiNavyShipTech1 + + + AlliedAntiStructureShip + + + AlliedAntiAirShip + + + AlliedAntiAirVehicleTech1 + + + AlliedAntiVehicleVehicleTech1 + + + AlliedAntiVehicleVehicleTech3 + + + AlliedAntiStructureVehicle + + + AlliedMiner + + + AlliedMiner_Naval + + + AlliedMiner + + + AlliedMCV + + + AlliedMCV_Naval + + + + AlliedAttackDrone + + + + AlliedAntiInfantryVehicle + + + AlliedAntiInfantryVehicle_Ground + + + + SpecialPower_UnpackReplaceSelf + + + + + SpecialPower_UnpackReplaceSelf + + + + + SpecialPower_ToggleMirageField + + + + + SpecialPower_ToggleTargetPainter + + + + + SpecialPower_ToggleWeaponScrambler + + + + + SpecialPower_ToggleMagneticArmor + + + + + SpecialPower_ToggleShortCircuit + + + + + SpecialPower_ToggleShortCircuit + + + + + SpecialPower_TeslaNova + + + + + + + SpecialPower_EjectPassengers + + + + + SpecialPower_EjectPassengersUntargeted + + + + + SpecialPower_PilotSnipe + + + + + SpecialPower_TriggerLeap + + + + + + + + SpecialPower_TriggerEMPCruiseMissle + + + + + + + SpecialPower_TriggerJump + + + + + SpecialPower_Bark + + + + + + + SpecialPower_Bribe + + + + + SpecialPower_TimeBelt + + + + + SpecialPower_InfantryDisguise + + + + + SpecialPower_ToggleRiotShield + + + + + SpecialPower_ToggleLeechBeam + + + + + SpecialPower_ActivateSuperSonic + + + + + SpecialPowerParticleCannon + + + + + + + SpecialPowerPrecisionStrike + + + + + + + + + + + SpecialPower_DesolatorBomb_Level1 + + + + + + SpecialPower_DesolatorBomb_Level2 + + + + + + SpecialPower_DesolatorBomb_Level3 + + + + + + + SpecialPower_ProductionKickbacks + + + + + + + SpecialPower_PointDefenseDrones + + + + + + + SpecialPowerSatelliteSweep + + + + + + SpecialPowerOrbitalRefuse_Rank1 + + + + + + + SpecialPowerOrbitalRefuse_Rank2 + + + + + + + SpecialPowerOrbitalRefuse_Rank3 + + + + + + + SpecialPowerChronoRiftSelectLvl1 + + + + + + + + SpecialPowerChronoRiftSelectLvl2 + + + + + + + + SpecialPowerChronoRiftSelectLvl3 + + + + + + + + SpecialPowerChronoSwapSelect + + + + + + SpecialPowerChronoSwapTeleport + + + + SpecialPowerTimeBombLvl1 + + + + + + + SpecialPowerTimeBombLvl2 + + + + + + + SpecialPowerTimeBombLvl3 + + + + + + + SpecialPowerCryoSatelliteLvl1 + + + + + + + SpecialPowerCryoSatelliteLvl2 + + + + + + + SpecialPowerCryoSatelliteLvl3 + + + + + + + SpecialPowerChronosphereObjectSelect + + + SpecialPowerChronosphereObjectSpawn + + + + SpecialPower_RadarLock + + + + + + + + + + + SovietWallPiece + + + SovietPowerPlant + + + SovietPowerPlantAdvanced + + + SovietRefinery + + + SovietBarracks + + + SovietWarFactory + + + SovietAirfield + + + SovietNavalYard + + + SovietTechStructure + + + SovietBaseDefenseGround + + + SovietBaseDefenseAir + + + SovietBaseDefenseAdvanced + + + SovietSuperWeapon + + + SovietSuperWeaponAdvanced + + + SovietCrane + + + + Upgrade_SovietCrane + + + Upgrade_SovietRadarDish + + + Upgrade_SovietConstructionYardSalvageYard + + + Upgrade_SovietWarFactorySalvageYard + + + Upgrade_SovietNavalYardSalvageYard + + + + + + SovietAntiInfantryVehicle + + + SovietAntiNavyShipTech2 + + + SovietHeavyAntiVehicleInfantry + + + SovietScoutVehicle + + + SovietAntiGroundAircraft + + + SovietFighterAircraft + + + SovietBomberAircraft + + + SovietAntiInfantryInfantry + + + SovietAntiVehicleInfantry + + + SovietEngineer + + + SovietScoutInfantry + + + SovietCommandoTech1 + + + SovietAntiNavyShipTech1 + + + SovietAntiStructureShip + + + SovietAntiAirShip + + + + SovietAntiAirShip_Ground + + + + SovietAntiVehicleVehicleTech1 + + + SovietAntiVehicleVehicleTech3 + + + SovietAntiStructureVehicle + + + SovietSurveyor + + + SovietSurveyor_Naval + + + SovietMiner + + + SovietMiner_Naval + + + SovietMiner + + + SovietMCV + + + + SovietMCV_Naval + + + + + SpecialPowerIronCurtain + + + + + + SpecialPowerVacuumBomb + + + + + + + SpecialPowerMagneticSingularity + + + + + + + SpecialPowerMagneticSatelliteLvl1 + + + + + + SpecialPowerMagneticSatelliteLvl2 + + + + + + SpecialPowerMagneticSatelliteLvl3 + + + + + + + SpecialPowerSovietMassProduction + + + + SpecialPowerTerrorDroneEggs + + + + SpecialPowerCrushPuppies + + + + SpecialPower_MIRV + + + + + SpecialPower_ConstructSovietBunker + + + + SpecialPower_MolotovCocktail + + + + + SpecialPower_MagneticBomb + + + + + SpecialPower_ToggleRapidLaunch + + + + + SpecialPower_SuperTorpedos + + + + + SpecialPower_RecallAllAircraft + + + + SpecialPower_ToggleBinaryWeapons + + + + + SpecialPower_ToggleArmorUp + + + + + SpecialPower_ToggleAfterburners + + + + + SpecialPower_ToggleShieldSphere + + + + + SpecialPower_Roar + + + + + + + SpecialPower_PackReplaceSelf + + + + SpecialPower_UnpackReplaceSelf + + + + SpecialPower_UnpackReplaceSelf + + + + + SpecialPower_Harpoon + + + + + SpecialPower_IrradiateTarget + + + + + + + + + JapanWallPiece + + + JapanPowerPlant + + + JapanRefinery + + + JapanBarracks + + + JapanWarFactory + + + JapanNavalYard + + + JapanBaseDefense + + + JapanBaseDefenseAdvanced + + + JapanSuperWeapon + + + JapanSuperWeaponAdvanced + + + Upgrade_JapanRadarDish + + + Upgrade_JapanRepairBay + + + + + + + SpecialPower_JapanScoutInfantryBomb + + + + + SpecialPower_JapanEngineerSprint + + + + + SpecialPower_JapanAntiInfantryInfantryBonzai + + + + + SpecialPower_UnpackReplaceSelf + + + + SpecialPower_PackReplaceSelf + + + + JapanAntiInfantryInfantry + + + JapanAntiVehicleInfantry + + + JapanAntiVehicleInfantryTech3 + + + JapanEngineer + + + JapanScoutInfantry + + + JapanInfiltrationInfantry + + + JapanCommandoTech1 + + + JapanNavyScoutShip + + + JapanAntiStructureShip + + + JapanAntiVehicleShip + + + JapanAntiAirShip + + + JapanAntiAirVehicleTech1 + + + JapanAntiInfantryVehicle + + + JapanLightTransportVehicle + + + JapanAntiVehicleVehicleTech1 + + + JapanAntiVehicleVehicleTech1_Naval + + + JapanAntiVehicleVehicleTech3 + + + JapanAntiStructureVehicle + + + JapanMiner + + + JapanMiner_Naval + + + JapanMiner + + + JapanMCV + + + JapanMCV_Naval + + + + + + + JapanPowerPlantEgg + + + JapanRefineryEgg + + + JapanBarracksEgg + + + JapanWarFactoryEgg + + + JapanNavalYardEgg + + + JapanTechStructureEgg + + + JapanBaseDefenseEgg + + + JapanBaseDefenseAdvancedEgg + + + JapanSuperWeaponEgg + + + JapanSuperWeaponAdvancedEgg + + + + + + + SpecialPowerJapanEnhancedKamikaze + + + + SpecialPowerJapanNavalPower + + + + SpecialPowerJapanAdvancedMissilePacks + + + + SpecialPowerJapanBalloonAttack_L1 + + + + + + + SpecialPowerJapanBalloonAttack_L2 + + + + + + + SpecialPowerJapanBalloonAttack_L3 + + + + + + + SpecialPowerJapanRoboticAssembly + + + + SpecialPowerJapanAmbush + + + + + + SpecialPowerJapanEmperorsResolve_L1 + + + + + + SpecialPowerJapanEmperorsResolve_L2 + + + + + + SpecialPowerJapanEmperorsResolve_L3 + + + + + + SpecialPowerNanoSwarmHive + + + + SpecialPowerTelekineticProjectorDevice + + + + + + + SpecialPower_PsyonicBlast + + + + + + + SpecialPower_ToggleLockDownGun + + + + + SpecialPower_SmokeBomb + + + + + SpecialPower_KamikazeAttack + + + + + SpecialPower_JAAS_Transform + + + + + SpecialPower_JAIV_Transform + + + + + Upgrade_JapanBarracksTech2 + + + + + Upgrade_JapanBarracksTech3 + + + + + Upgrade_JapanNavalYardTech2 + + + + + Upgrade_JapanNavalYardTech3 + + + + + Upgrade_JapanWarFactoryTech2 + + + + + Upgrade_JapanWarFactoryTech3 + + + + + SpecialPower_ShrinkRay + + + + + Upgrade_JapanPowerPlantTurbine + + + + SpecialPower_JAAVT1_Transform + + + + + SpecialPower_JASV_FireKiCannon + + + + + SpecialPower_JapanBaseDefenseAdvanced_FireKiCannon + + + + + SpecialPower_TorpedoSpread + + + + + SpecialPower_ToggleSpiderHole + + + + + SpecialPower_ToggleEnergizedArmor + + + + + SpecialPower_TriggerRushAttack + + + + + SpecialPower_RammingSpeed + + + + + SpecialPower_ToggleDeployWeapon + + + + + SpecialPower_JapanBaseDefenseTransform + + + + + + + + SpecialPowerFinalSquadron_L1 + + + + + + SpecialPowerFinalSquadron_L2 + + + + + + SpecialPowerFinalSquadron_L3 + + + + + + + + + SpecialPowerCAMPAlliedBomberDrop1 + + + SpecialPowerCAMPAlliedBomberDrop2 + + + + SpecialPower_TriggerEmperorRushAttack + + + + + SpecialPower_MechaKingShockwave + + + + + + + + SovietAntiVehicleVehicleTech2 + + + diff --git a/public/LogicCommandSet.xml b/public/LogicCommandSet.xml new file mode 100644 index 0000000..e366d22 --- /dev/null +++ b/public/LogicCommandSet.xml @@ -0,0 +1,1097 @@ + + + + + + + + + + + + + + Command_Stop + + + + + + + + + + + Command_CivilianStructureEvacuate + + + + + Command_ConstructAlliedPowerPlant + Command_ConstructAlliedBarracks + Command_ConstructAlliedRefinery + Command_ConstructAlliedWarFactory + Command_ConstructAlliedNavalYard + Command_ConstructAlliedAirfield + Command_ConstructAlliedTechStructure + Command_ConstructAlliedWall + Command_ConstructAlliedBaseDefense + Command_ConstructAlliedBaseDefenseAdvanced + Command_ConstructAlliedSuperWeapon + Command_ConstructAlliedSuperWeaponAdvanced + Command_PackAlliedMCV + + + + + Command_PurchaseAlliedTech2 + + + Command_PurchaseAlliedTech3 + + + + Command_ConstructAlliedAntiGroundAircraft + Command_ConstructAlliedFighterAircraft + Command_ConstructAlliedSupportAircraft + Command_ConstructAlliedBomberAircraft + Command_AlliedRecallAllAircraft + + + + Command_ConstructAlliedScoutInfantry + Command_ConstructAlliedAntiInfantryInfantry + Command_ConstructAlliedAntiVehicleInfantry + Command_ConstructAlliedEngineer + Command_ConstructAlliedInfiltrationInfantry + Command_ConstructAlliedCommandoTech1 + + + + Command_ConstructAlliedPowerPlant + Command_ConstructAlliedRefinery + Command_ConstructAlliedTechStructure + Command_ConstructAlliedBarracks + Command_ConstructAlliedWarFactory + Command_ConstructAlliedAirfield + Command_ConstructAlliedNavalYard + Command_ConstructAlliedBaseDefense + Command_ConstructAlliedBaseDefenseAdvanced + Command_ConstructAlliedSuperWeapon + Command_ConstructAlliedSuperWeaponAdvanced + Command_ConstructAlliedOutpost + + + + + + + Command_RepairVehicle + + + + Command_RepairVehicle + + + + Command_RepairVehicle + + + + Command_PurchaseAlliedTech2 + + + + Command_PurchaseAlliedTech3 + + + + Command_AlliedBaseDefenseEvacuate + + + + Command_ActivateEMPCruiseMissleSpecialPower + Command_AttackMove + + + + Command_ConstructAlliedMiner_Naval + Command_ConstructAlliedAntiNavalScout + Command_ConstructAlliedAntiInfantryVehicle + Command_ConstructAlliedAntiAirShip + Command_ConstructAlliedAntiNavyShipTech1 + Command_ConstructAlliedAntiStructureShip + Command_ConstructAlliedMCV_Naval + + + + + + + + + + + Command_ConstructAlliedMinerFromRefinery + + + + Command_SelectObjectsForChrono + Command_SpawnObjectsForChrono + + + + Command_ParticleCannonSuperWeapon + + + + Command_ChargeDefenses + + + + Command_ConstructAlliedMiner + Command_ConstructAlliedAntiInfantryVehicle_Ground + Command_ConstructAlliedAntiAirVehicleTech1 + Command_ConstructAlliedAntiVehicleVehicleTech1 + Command_ConstructAlliedAntiStructureVehicle + Command_ConstructAlliedAntiVehicleVehicleTech3 + Command_ConstructAlliedMCV + + + + + Command_UnPackAlliedMCV + Command_MoveToPositionAndCollect + + + + Command_ToggleAlliedEngineerHeal + Command_CaptureBuilding + Command_MoveToPositionAndCollect + + + + Command_TimeBeltSpecialPower + Command_AttackMove + Command_MoveToPositionAndCollect + + + + Command_AlliedSupportAircraftShrinkRay + Command_AttackMove + + + + Command_ToggleMagneticArmor + Command_AttackMove + + + + Command_ActivateEjectPassengersSpecialPowerUntargeted + Command_AttackMove + + + + + Command_UnPackAlliedMiner + Command_MoveToPositionAndCollect + + + + Command_AlliedAntiGroundAircraftReturnToAirfield + Command_AttackMove + + + + Command_ActivateJumpSpecialPower + Command_AttackMove + Command_MoveToPositionAndCollect + + + + Command_ActivateBarkSpecialPower + Command_AttackMove + Command_MoveToPositionAndCollect + + + + Command_ActivateBribeSpecialPower + Command_MoveToPositionAndCollect + Command_ActivateDisguiseSpecialPower + + + + Command_ToggleRiotShieldSpecialPower + Command_AttackMove + Command_MoveToPositionAndCollect + + + + Command_ToggleRadarLockSpecialPower + Command_AttackMove + Command_MoveToPositionAndCollect + + + + Command_ToggleTargetPainter + Command_AttackMove + Command_MoveToPositionAndCollect + + + + Command_ToggleMirageField + Command_AttackMove + Command_MoveToPositionAndCollect + + + + Command_AlliedFighterAircraftReturnToAirfield + Command_AttackMove + + + + Command_ToggleShieldSphere + Command_AttackMove + Command_MoveToPositionAndCollect + + + + Command_ToggleWeaponScrambler + Command_AttackMove + + + + Command_Evacuate + Command_AttackMove + Command_MoveToPositionAndCollect + + + + Command_AlliedAntiInfantryVehicleEvacuate + Command_AttackMove + + + + + + Command_ConstructSovietWall + Command_ConstructSovietPowerPlant + Command_ConstructSovietBarracks + Command_ConstructSovietRefinery + Command_ConstructSovietWarFactory + Command_ConstructSovietNavalYard + Command_ConstructSovietAirfield + Command_ConstructSovietPowerPlantAdvanced + Command_ConstructSovietTechStructure + Command_ConstructSovietBaseDefenseGround + Command_ConstructSovietBaseDefenseAir + Command_ConstructSovietBaseDefenseAdvanced + Command_ConstructSovietSuperWeapon + Command_ConstructSovietSuperWeaponAdvanced + Command_ConstructSovietCrane + Command_PackSovietMCV + + + + + Command_SovietBattleBunkerEvacuate + + + + + + + Command_ConstructSovietAntiGroundAircraft + Command_ConstructSovietFighterAircraft + Command_ConstructSovietBomberAircraft + Command_SovietRecallAllAircraft + + + + Command_ConstructSovietScoutInfantry + Command_ConstructSovietAntiInfantryInfantry + Command_ConstructSovietAntiVehicleInfantry + Command_ConstructSovietEngineer + Command_ConstructSovietHeavyAntiVehicleInfantry + Command_ConstructSovietCommandoTech1 + + + + Command_ConstructSovietWall + Command_ConstructSovietPowerPlant + Command_ConstructSovietBarracks + Command_ConstructSovietRefinery + Command_ConstructSovietWarFactory + Command_ConstructSovietNavalYard + Command_ConstructSovietAirfield + Command_ConstructSovietPowerPlantAdvanced + Command_ConstructSovietTechStructure + Command_ConstructSovietBaseDefenseGround + Command_ConstructSovietBaseDefenseAir + Command_ConstructSovietBaseDefenseAdvanced + Command_ConstructSovietSuperWeapon + Command_ConstructSovietSuperWeaponAdvanced + + + + + + + + + + + + + + + + + + + Command_ConstructSovietMiner_Naval + Command_ConstructSovietSurveyor_Naval + Command_ConstructSovietAntiNavyShipTech1 + Command_ConstructSovietAntiAirShip + Command_ConstructSovietAntiNavyShipTech2 + Command_ConstructSovietAntiStructureShip + Command_ConstructSovietMCV_Naval + Command_RepairVehicle + + + + + + + + + + + + + + Command_ConstructSovietMinerFromRefinery + + + + Command_IronCurtain + + + + Command_VacuumBomb + + + + + + + + + + Command_ConstructSovietMiner + Command_ConstructSovietSurveyor + Command_ConstructSovietScoutVehicle + Command_ConstructSovietAntiInfantryVehicle + Command_ConstructSovietAntiAirShip_Ground + Command_ConstructSovietAntiVehicleVehicleTech1 + Command_ConstructSovietAntiStructureVehicle + Command_ConstructSovietAntiVehicleVehicleTech3 + Command_ConstructSovietMCV + Command_RepairVehicle + + + + + Command_ToggleBinaryWeapon + Command_AttackMove + Command_MoveToPositionAndCollect + + + + Command_ActivateRoarSpecialPower + Command_AttackMove + Command_MoveToPositionAndCollect + + + + Command_ToggleShortCircuit + Command_AttackMove + Command_MoveToPositionAndCollect + + + + Command_ToggleArmorUp + Command_MoveToPositionAndCollect + + + + Command_UnPackSovietMCV + Command_MoveToPositionAndCollect + + + + Command_UnPackSovietSurveyor + Command_MoveToPositionAndCollect + + + + Command_ConstructSovietBunker + Command_CaptureBuilding + Command_AttackMove + Command_MoveToPositionAndCollect + + + + Command_ActivateTeslaNova + Command_AttackMove + + + + Command_ActivateSuperTorpedos + Command_AttackMove + + + + Command_ActivatePilotSnipeSpecialPower + Command_MoveToPositionAndCollect + Command_AttackMove + + + + Command_ActivateEjectPassengersSpecialPower + Command_AttackMove + + + + Command_ActivateLeapSpecialPower + Command_AttackMove + Command_MoveToPositionAndCollect + + + + Command_AttackMove + Command_ToggleLeechBeam + Command_MoveToPositionAndCollect + + + + Command_ToggleShortCircuitTank + Command_AttackMove + Command_MoveToPositionAndCollect + + + + Command_ToggleMIRVSpecialPower + Command_AttackMove + Command_MoveToPositionAndCollect + + + + Command_ToggleMolotovCocktailSpecialPower + Command_AttackMove + Command_MoveToPositionAndCollect + + + + Command_ToggleMagneticBombSpecialPower + Command_AttackMove + Command_MoveToPositionAndCollect + + + + Command_AttackMove + Command_ToggleAfterburners + + + + Command_SovietFighterAircraftReturnToAirfield + Command_AttackMove + + + + Command_SovietAntiGroundAircraftEvacuate + Command_AttackMove + + + + Command_ToggleRapidLaunchSpecialPower + Command_AttackMove + + + + Command_Evacuate + Command_AttackMove + Command_MoveToPositionAndCollect + + + + Command_ToggleHarpoonSpecialPower + Command_AttackMove + Command_MoveToPositionAndCollect + + + + + + Command_ConstructJapanWall + Command_ConstructJapanPowerPlantEgg + Command_ConstructJapanBarracksEgg + Command_ConstructJapanRefineryEgg + Command_ConstructJapanWarFactoryEgg + Command_ConstructJapanNavalYardEgg + Command_ConstructJapanTechStructureEgg + Command_ConstructJapanBaseDefenseEgg + Command_ConstructJapanBaseDefenseAdvancedEgg + Command_ConstructJapanSuperWeaponEgg + Command_ConstructJapanSuperWeaponAdvancedEgg + + Command_PackJapanMCV + + + + + + + Command_ConstructJapanScoutInfantry + Command_ConstructJapanAntiInfantryInfantry + Command_ConstructJapanAntiVehicleInfantry + Command_ConstructJapanEngineer + Command_ConstructJapanInfiltrationInfantry + Command_ConstructJapanAntiVehicleInfantryTech3 + Command_ConstructJapanCommandoTech1 + + + Command_PurchaseJapanBarracksTech2 + + + Command_PurchaseJapanBarracksTech3 + + + + Command_JapanBaseDefenseToggleBinaryWeapon + + + + Command_JapanBaseDefenseAdvanced_FireKiCannon + + + + + + + Command_ConstructJapanMiner_Naval + Command_ConstructJapanNavyScoutShip + Command_ConstructJapanAntiVehicleVehicleTech1_Naval + Command_ConstructJapanAntiAirShip + Command_ConstructJapanAntiVehicleShip + Command_ConstructJapanAntiStructureShip + Command_ConstructJapanMCV_Naval + Command_RepairVehicle + + + Command_PurchaseJapanNavalYardTech2 + + + Command_PurchaseJapanNavalYardTech3 + + + + + + + Command_ConstructJapanMinerFromRefinery + + + + Command_NanoSwarmHive + + + + Command_TelekineticProjectorDevice + + + + Command_RepairVehicle + + + + Command_ConstructJapanMiner + Command_ConstructJapanLightTransportVehicle + Command_ConstructJapanAntiInfantryVehicle + Command_ConstructJapanAntiVehicleVehicleTech1 + Command_ConstructJapanAntiAirVehicleTech1 + Command_ConstructJapanAntiVehicleVehicleTech3 + Command_ConstructJapanAntiStructureVehicle + + Command_ConstructJapanMCV + + + Command_PurchaseJapanWarFactoryTech2 + + + Command_PurchaseJapanWarFactoryTech3 + + + + Command_UnPackJapanRefineryEgg + + + + Command_UnPackJapanBarracksEgg + + + + Command_UnPackJapanPowerPlantEgg + + + + Command_UnPackJapanWarFactoryEgg + + + + Command_UnPackJapanNavalYardEgg + + + + Command_UnPackJapanTechStructureEgg + + + + Command_UnPackJapanSuperWeaponEgg + + + + Command_UnPackJapanSuperWeaponAdvancedEgg + + + + Command_UnPackJapanBaseDefenseEgg + + + + Command_UnPackJapanBaseDefenseAdvancedEgg + + + + Command_UnPackJapanConstructionYardEgg + + + + Command_JapanEngineerSprint + Command_CaptureBuilding + Command_MoveToPositionAndCollect + + + + Command_JapanAntiInfantryInfantryBonzai + Command_AttackMove + Command_MoveToPositionAndCollect + + + + Command_JapanScoutInfantryBomb + Command_MoveToPositionAndCollect + + + + Command_UnPackJapanMCV + Command_MoveToPositionAndCollect + + + + Command_ToggleKamikazeAttackSpecialPower + Command_AttackMove + + + + Command_JAAS_Transform + Command_AttackMove + + + + Command_AttackMove + Command_JAAVT1_Transform + Command_MoveToPositionAndCollect + + + + Command_JAIV_Transform + Command_AttackMove + Command_MoveToPositionAndCollect + + + + Command_DisguisedEvacuate + Command_ActivateDisguiseSpecialPower + Command_MoveToPositionAndCollect + + + + Command_AttackMove + Command_ToggleEnergizedArmorSpecialPower + Command_MoveToPositionAndCollect + + + + Command_AttackMove + Command_TriggerRushAttackSpecialPower + Command_MoveToPositionAndCollect + + + + Command_AttackMove + Command_JASV_FireKiCannon + Command_MoveToPositionAndCollect + + + + Command_SmokeBombSpecialPower + Command_AttackMove + Command_MoveToPositionAndCollect + + + + Command_ActivateTorpedoSpread + Command_AttackMove + + + + Command_AttackMove + Command_ActivateMechaKingShockwave + + + + + Command_PsyonicBlastSpecialPower + Command_AttackMove + Command_MoveToPositionAndCollect + + + + Command_ToggleLockDownGunSpecialPower + Command_AttackMove + Command_MoveToPositionAndCollect + + + + Command_ToggleSpiderHole + Command_AttackMove + Command_MoveToPositionAndCollect + + + + Command_ToggleDeployWeapon + Command_MoveToPositionAndCollect + Command_AttackMove + + + + Command_RammingSpeed + Command_AttackMove + + + + + Command_SelectObjectsForChrono + Command_SpawnObjectsForChrono + Command_ChronoSwapSelect + Command_ParticleCannonSuperWeapon + Command_PrecisionStrike + Command_SatelliteSweep + Command_ChronoRiftSelectLvl1 + Command_ChronoRiftSelectLvl2 + Command_ChronoRiftSelectLvl3 + Command_TimeBombLvl1 + Command_TimeBombLvl2 + Command_TimeBombLvl3 + Command_HighTechnology + Command_AirPower + Command_CryoSatelliteLvl1 + Command_CryoSatelliteLvl2 + Command_CryoSatelliteLvl3 + + + Command_IronCurtain + Command_VacuumBomb + Command_MagneticSingularity + Command_MagneticSatelliteLvl1 + Command_MagneticSatelliteLvl2 + Command_MagneticSatelliteLvl3 + Command_OrbitalRefuse_Rank1 + Command_OrbitalRefuse_Rank2 + Command_OrbitalRefuse_Rank3 + Command_DesolatorAirstrikeLvl1 + Command_DesolatorAirstrikeLvl2 + Command_DesolatorAirstrikeLvl3 + Command_TerrorDroneEggs + Command_CrushPuppiesPower + Command_ProductionKickbacks + Command_IrradiateTarget + + + Command_TelekineticProjectorDevice + Command_NanoSwarmHive + Command_JapanEnhancedKamikaze + Command_FinalSquadron_L1 + Command_FinalSquadron_L2 + Command_FinalSquadron_L3 + Command_PointDefenseDrones + Command_JapanNavalPower + Command_JapanAdvancedMissilePacks + Command_JapanRoboticAssembly + Command_JapanAmbush + Command_JapanEmperorsResolve_L1 + Command_JapanEmperorsResolve_L2 + Command_JapanEmperorsResolve_L3 + Command_JapanBalloonAttack_L1 + Command_JapanBalloonAttack_L2 + Command_JapanBalloonAttack_L3 + + + + + + Command_CAMPAlliedBomberDrop1 + Command_CAMPAlliedBomberDrop2 + + + + Command_ConstructJapanScoutInfantry + Command_ConstructJapanAntiInfantryInfantry + Command_ConstructJapanAntiVehicleInfantry + Command_ConstructJapanEngineer + Command_ConstructJapanInfiltrationInfantry + Command_ConstructJapanAntiVehicleInfantryTech3 + Command_ConstructJapanCommandoTech1 + + Command_PurchaseJapanBarracksTech2 + Command_PurchaseJapanBarracksTech3 + + Command_ConstructJapanMiner + Command_ConstructJapanLightTransportVehicle + Command_ConstructJapanAntiInfantryVehicle + Command_ConstructJapanAntiVehicleVehicleTech1 + Command_ConstructJapanAntiAirVehicleTech1 + Command_ConstructJapanAntiVehicleVehicleTech3 + Command_ConstructJapanAntiStructureVehicle + Command_ConstructJapanMCV + + Command_PurchaseJapanWarFactoryTech2 + Command_PurchaseJapanWarFactoryTech3 + + + + + + + Command_ActivateEjectPassengersSpecialPower + + + + Command_AttackMove + Command_TriggerEmperorRushAttackSpecialPower + + + + Command_ConstructSovietMiner + Command_ConstructSovietSurveyor + Command_ConstructSovietScoutVehicle + Command_ConstructSovietAntiInfantryVehicle + Command_ConstructSovietAntiAirShip_Ground + Command_ConstructSovietAntiVehicleVehicleTech2 + Command_ConstructSovietAntiStructureVehicle + Command_ConstructSovietAntiVehicleVehicleTech3 + Command_ConstructSovietMCV + Command_RepairVehicle + + + + Command_Evacuate + Command_AttackMove + + + + Command_ActivateEjectPassengersSpecialPower + Command_ReturnToAirfield + Command_AttackMove + + + + + diff --git a/public/SpecialPowerTemplates.xml b/public/SpecialPowerTemplates.xml new file mode 100644 index 0000000..634e8a5 --- /dev/null +++ b/public/SpecialPowerTemplates.xml @@ -0,0 +1,1649 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SovietConstructionYard + + + + + + SovietConstructionYard + + PlayerTech_Soviet_MagneticSatellite_Rank_2 + PlayerTech_Soviet_MagneticSatellite_Rank_3 + + + + SovietConstructionYard + + PlayerTech_Soviet_MagneticSatellite_Rank_3 + + + + SovietConstructionYard + + + + + + + + + + + + NanoSwarmHiveEffect + + + + + + + + + + + AlliedConstructionYard + + PlayerTech_Allied_TimeBomb_Rank2 + PlayerTech_Allied_TimeBomb_Rank3 + + + + + AlliedConstructionYard + + PlayerTech_Allied_TimeBomb_Rank3 + + + + + AlliedConstructionYard + + + + + + + AlliedConstructionYard + + PlayerTech_Allied_CryoSatellite_Rank2 + PlayerTech_Allied_CryoSatellite_Rank3 + + + + + + AlliedConstructionYard + + PlayerTech_Allied_CryoSatellite_Rank3 + + + + + + AlliedConstructionYard + + + + + + AlliedConstructionYard + + + + + + AlliedConstructionYard + + + + + + + + AlliedTimeBombLvl1 + AlliedTimeBombLvl2 + AlliedTimeBombLvl3 + + + + + + AlliedTimeBombLvl1 + AlliedTimeBombLvl2 + AlliedTimeBombLvl3 + NanoSwarmHiveEffect + + + AlliedConstructionYard + + + + + PlayerTech_Allied_ChronoRift_Rank2 + PlayerTech_Allied_ChronoRift_Rank3 + + + PlayerTech_Allied_ChronoRift_Rank2 + PlayerTech_Allied_ChronoRift_Rank3 + + + + PlayerTech_Allied_ChronoRift_Rank3 + + + PlayerTech_Allied_ChronoRift_Rank3 + + + + + + + + + + + AlliedTimeBombLvl1 + AlliedTimeBombLvl2 + AlliedTimeBombLvl3 + + + AlliedConstructionYard + + + + + + AlliedTimeBombLvl1 + AlliedTimeBombLvl2 + AlliedTimeBombLvl3 + + + AlliedConstructionYard + + + + + + AlliedTimeBombLvl1 + AlliedTimeBombLvl2 + AlliedTimeBombLvl3 + + + + + + + AlliedTimeBombLvl1 + AlliedTimeBombLvl2 + AlliedTimeBombLvl3 + + + + + + AlliedConstructionYard + + + + + + AlliedConstructionYard + + + + + + + + AlliedBaseDefenseAdvanced + + + + + + AlliedConstructionYard + + + + + + + + + + + + SovietBaseDefenseAdvanced + + + + + + SovietConstructionYard + + PlayerTech_Soviet_OrbitalRefuse_Rank2 + PlayerTech_Soviet_OrbitalRefuse_Rank3 + + + + SovietConstructionYard + + PlayerTech_Soviet_OrbitalRefuse_Rank3 + + + + SovietConstructionYard + + + + + + SovietConstructionYard + + + + + + SovietConstructionYard + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AlliedCommandoTech1 + AlliedInfiltrationInfantry + AlliedScoutInfantry + AlliedAntiNavalScout + + SovietCommandoTech1 + SovietSurveyor + SovietScoutInfantry + SovietScoutVehicle + + JapanCommandoTech1 + JapanInfiltrationInfantry + JapanScoutInfantry + + + + + + + + + + + + + + + + SovietScoutVehicle + + + + + + + + + + + + + + + + + + + + + + + + + + + + NanoSwarmHiveEffect + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OreNode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JapanConstructionYard + + + + + + + JapanConstructionYard + + + + + + + JapanConstructionYard + + PlayerTech_Japan_EmperorsRage_Rank2 + PlayerTech_Japan_EmperorsRage_Rank3 + + + + + JapanConstructionYard + + PlayerTech_Japan_EmperorsRage_Rank3 + + + + + JapanConstructionYard + + + + + + JapanConstructionYard + + PlayerTech_Japan_BalloonAttack_Rank2 + PlayerTech_Japan_BalloonAttack_Rank3 + + + + + JapanConstructionYard + + PlayerTech_Japan_BalloonAttack_Rank3 + + + + + JapanConstructionYard + + + + + + JapanConstructionYard + + + + + + SovietConstructionYard + + + + + + JapanConstructionYard + + + + + + JapanConstructionYard + + + + + + + + SovietConstructionYard + + + + + + + + + + SovietConstructionYard + + PlayerTech_Soviet_DesolatorBomb_Rank2 + PlayerTech_Soviet_DesolatorBomb_Rank3 + + + + SovietConstructionYard + + PlayerTech_Soviet_DesolatorBomb_Rank3 + + + + SovietConstructionYard + + + + + + + SovietConstructionYard + + + + + + + + JapanPointDefenseDrone + + + JapanConstructionYard + + + + + + JapanConstructionYard + + PlayerTech_Japan_FinalSquadron_Rank2 + PlayerTech_Japan_FinalSquadron_Rank3 + + + + JapanConstructionYard + + PlayerTech_Japan_FinalSquadron_Rank3 + + + + JapanConstructionYard + + + + + + + + + + + + + + + + + + + diff --git a/public/UnitAbilityButtonTemplates.xml b/public/UnitAbilityButtonTemplates.xml new file mode 100644 index 0000000..582abcf --- /dev/null +++ b/public/UnitAbilityButtonTemplates.xml @@ -0,0 +1,1088 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ButtonStateAbilityAlliedEngineerHeal + ButtonStateAbilityAlliedEngineerHealOff + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ButtonStateToggleMirageField + ButtonStateToggleMirageFieldOff + + + + + + + + ButtonStateToggleTargetPainter + ButtonStateToggleTargetPainterOff + + + + + + + + ButtonStateToggleMagneticArmor + ButtonStateToggleMagneticArmorOff + + + + + + + + ButtonStateToggleShortCircuit + ButtonStateToggleShortCircuitOff + + + + + + + + ButtonStateToggleShortCircuitTank + ButtonStateToggleShortCircuitTankOff + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ButtonStateToggleRiotShield + ButtonStateToggleRiotShieldOff + + + + + + + + + + + + + + ButtonStateToggleLeechBeam + ButtonStateToggleLeechBeamOff + + + + + + + + + + + + + + ButtonStateToggleRadarLock + ButtonStateToggleRadarLockOff + + + + + + + + ButtonStateToggleWeaponScrambler + ButtonStateToggleWeaponScramblerOff + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ButtonStateAbilityRapidLaunch + ButtonStateAbilityRapidLaunchOff + + + + + + + + ButtonStateAbilityMIRV + ButtonStateAbilityMIRVOff + + + + + + + + ButtonStateAbilityMolotovCocktail + ButtonStateAbilityMolotovCocktailOff + + + + + + + + + + + + + + + + + + + + + + + + + + ButtonStateAbilityToggleLockDownGun + ButtonStateAbilityToggleLockDownGunOff + + + + + + + + ButtonStateAbilityMagneticBomb + ButtonStateAbilityMagneticBombOff + + + + + + + + ButtonStateToggleBinaryWeapon + ButtonStateToggleBinaryWeaponOff + + + + + + + + ButtonStateToggleArmorUp + ButtonStateToggleArmorUpOff + + + + + + + + ButtonStateToggleAfterburners + ButtonStateToggleAfterburnersOff + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ButtonStateToggleHarpoon + ButtonStateToggleHarpoonOff + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ButtonStateJAIV_Transform + ButtonStateJAIV_TransformOff + + + + + + + + + + + + + + + ButtonStateSpecialPowerJAAVT1_Transform + ButtonStateSpecialPowerJAAVT1_TransformOff + + + + + + + + + + + + + + + + + + + + ButtonStateJapanBaseDefenseToggleBinaryWeapon + ButtonStateJapanBaseDefenseToggleBinaryWeaponOff + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ButtonStateSpecialPowerToggleDeployWeapon + ButtonStateSpecialPowerToggleDeployWeaponOff + + + + + + + + ButtonStateSpecialPowerJAASTransform + ButtonStateSpecialPowerJAASTransformOff + + + + + + + + ButtonStateSpecialPowerToggleSpiderHole + ButtonStateSpecialPowerToggleSpiderHoleOff + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/RankContestant.vue b/src/components/RankContestant.vue index 584de10..fee3d67 100644 --- a/src/components/RankContestant.vue +++ b/src/components/RankContestant.vue @@ -73,7 +73,7 @@ const fetchRankData = async () => { if (!playerStats[playerName]) { playerStats[playerName] = { username: playerName, - faction: player.faction || player.team_name || '', + faction: player.faction || player.team_name || '', totalWin: 0, totalLose: 0, totalPoints: 0, @@ -113,7 +113,7 @@ const fetchRankData = async () => { bracket_type: 'winners', score: `${player.totalWin}胜${player.totalLose}负 (${player.totalPoints.toFixed(1)}分)`, rounds: player.rounds.join(',') - })) + })) console.log('RankContestant 最终排名结果:', sortedPlayers) rankData.value = sortedPlayers diff --git a/src/components/TournamentBracket.vue b/src/components/TournamentBracket.vue index ee34c40..1529427 100644 --- a/src/components/TournamentBracket.vue +++ b/src/components/TournamentBracket.vue @@ -165,16 +165,16 @@ const generateSingleEliminationBracket = async () => { // 获取所有存在的轮次 const existingRounds = Object.keys(roundsData).map(Number).sort((a, b) => a - b); console.log('存在的轮次:', existingRounds); - + // 生成所有轮次的比赛 for (const round of existingRounds) { - if (round === 0) { + if (round === 0) { await generateRound0Matches(roundsData[round] || []); - } else { + } else { await generateRoundMatches(round, roundsData[round] || []); + } } - } - + // 更新总轮数为实际存在的最大轮次 if (existingRounds.length > 0) { tournament.value.rounds = Math.max(...existingRounds); @@ -182,131 +182,176 @@ const generateSingleEliminationBracket = async () => { }; const generateRound0Matches = async (round0Data) => { - const matches = []; - const usedPlayers = new Set(); - + const matches = []; + const usedPlayers = new Set(); + // 处理正常配对 for (const player of round0Data) { - if (usedPlayers.has(player.id)) continue; - - const rivalName = player.rival_name; - const isBye = rivalName === '轮空' || rivalName === 'bye' || rivalName === 'BYE' || rivalName === 'Bye'; - const isPending = rivalName === '待定' || rivalName === 'pending' || rivalName === 'PENDING' || rivalName === 'Pending'; - + if (usedPlayers.has(player.id)) continue; + + const rivalName = player.rival_name; + const isBye = rivalName === '轮空' || rivalName === 'bye' || rivalName === 'BYE' || rivalName === 'Bye'; + const isPending = rivalName === '待定' || rivalName === 'pending' || rivalName === 'PENDING' || rivalName === 'Pending'; + if (isBye || isPending) continue; - // 寻找对手 + // 寻找对手 const rival = round0Data.find(p => - p.sign_name === rivalName && p.id !== player.id && !usedPlayers.has(p.id) - ); - - if (rival) { - const matchNumber = matches.length + 1; - matches.push({ + p.sign_name === rivalName && p.id !== player.id && !usedPlayers.has(p.id) + ); + + if (rival) { + const matchNumber = matches.length + 1; + matches.push({ id: `0-${matchNumber}`, round: 0, - matchNumber: matchNumber, + matchNumber: matchNumber, participant1: { id: player.id, name: player.sign_name }, participant2: { id: rival.id, name: rival.sign_name }, - winner: null, - score1: parseInt(player.win || 0), - score2: parseInt(rival.win || 0), - decided: false - }); - usedPlayers.add(player.id); - usedPlayers.add(rival.id); - } - } - + winner: null, + score1: parseInt(player.win || 0), + score2: parseInt(rival.win || 0), + decided: false + }); + usedPlayers.add(player.id); + usedPlayers.add(rival.id); + } + } + // 处理轮空 for (const player of round0Data) { - if (usedPlayers.has(player.id)) continue; - - const rivalName = player.rival_name; - const isBye = rivalName === '轮空' || rivalName === 'bye' || rivalName === 'BYE' || rivalName === 'Bye'; - - if (isBye) { - const matchNumber = matches.length + 1; - matches.push({ + if (usedPlayers.has(player.id)) continue; + + const rivalName = player.rival_name; + const isBye = rivalName === '轮空' || rivalName === 'bye' || rivalName === 'BYE' || rivalName === 'Bye'; + + if (isBye) { + const matchNumber = matches.length + 1; + matches.push({ id: `0-${matchNumber}`, round: 0, - matchNumber: matchNumber, + matchNumber: matchNumber, participant1: { id: player.id, name: player.sign_name }, - participant2: null, + participant2: null, winner: { id: player.id, name: player.sign_name }, - score1: 1, - score2: 0, - decided: true - }); - usedPlayers.add(player.id); - } - } - - tournament.value.matches.push(...matches); + score1: 1, + score2: 0, + decided: true + }); + usedPlayers.add(player.id); + } + } + + tournament.value.matches.push(...matches); }; const generateRoundMatches = async (round, roundData) => { - const matches = []; - const usedPlayers = new Set(); - + const matches = []; + const usedPlayers = new Set(); + console.log(`生成第${round}轮比赛,数据:`, roundData); + console.log(`第${round}轮详细数据:`, roundData.map(p => ({ + id: p.id, + sign_name: p.sign_name, + rival_name: p.rival_name, + status: p.status, + win: p.win, + lose: p.lose + }))); // 处理已有数据的比赛 for (const player of roundData) { - if (usedPlayers.has(player.id)) continue; - - const rivalName = player.rival_name; - const isBye = rivalName === '轮空' || rivalName === 'bye' || rivalName === 'BYE' || rivalName === 'Bye'; - const isPending = rivalName === '待定' || rivalName === 'pending' || rivalName === 'PENDING' || rivalName === 'Pending'; - - if (isBye || isPending) continue; - - // 寻找对手 - const rival = roundData.find(p => - p.sign_name === rivalName && p.id !== player.id && !usedPlayers.has(p.id) - ); - - if (rival) { - const matchNumber = matches.length + 1; - matches.push({ - id: `${round}-${matchNumber}`, - round: round, - matchNumber: matchNumber, - participant1: { id: player.id, name: player.sign_name }, - participant2: { id: rival.id, name: rival.sign_name }, - winner: null, - score1: parseInt(player.win || 0), - score2: parseInt(rival.win || 0), - decided: false - }); - usedPlayers.add(player.id); - usedPlayers.add(rival.id); + if (usedPlayers.has(player.id)) { + console.log(`玩家 ${player.sign_name} (ID: ${player.id}) 已被使用,跳过`); + continue; } - } - + + const rivalName = player.rival_name; + const isBye = rivalName === '轮空' || rivalName === 'bye' || rivalName === 'BYE' || rivalName === 'Bye'; + const isPending = rivalName === '待定' || rivalName === 'pending' || rivalName === 'PENDING' || rivalName === 'Pending'; + + if (isBye || isPending) { + console.log(`玩家 ${player.sign_name} 的对手是 ${rivalName},跳过正常比赛处理`); + continue; + } + + // 寻找对手 + const rival = roundData.find(p => + p.sign_name === rivalName && p.id !== player.id && !usedPlayers.has(p.id) + ); + + if (rival) { + const matchNumber = matches.length + 1; + + // 判断比赛是否已完成 + const playerStatus = player.status; + const rivalStatus = rival.status; + const playerWin = parseInt(player.win || 0); + const rivalWin = parseInt(rival.win || 0); + + // 如果任一玩家有胜场,说明比赛已完成 + const isDecided = playerWin > 0 || rivalWin > 0 || + playerStatus === 'win' || playerStatus === 'lose' || + rivalStatus === 'win' || rivalStatus === 'lose'; + + // 确定获胜者 + let winner = null; + if (playerStatus === 'win' || playerWin > rivalWin) { + winner = { id: player.id, name: player.sign_name }; + } else if (rivalStatus === 'win' || rivalWin > playerWin) { + winner = { id: rival.id, name: rival.sign_name }; + } + + console.log(`创建比赛 ${matchNumber}: ${player.sign_name} vs ${rival.sign_name}`, { + playerStatus, + rivalStatus, + isDecided, + winner: winner?.name, + playerData: { id: player.id, name: player.sign_name, status: player.status, win: player.win, lose: player.lose }, + rivalData: { id: rival.id, name: rival.sign_name, status: rival.status, win: rival.win, lose: rival.lose } + }); + + matches.push({ + id: `${round}-${matchNumber}`, + round: round, + matchNumber: matchNumber, + participant1: { id: player.id, name: player.sign_name }, + participant2: { id: rival.id, name: rival.sign_name }, + winner: winner, + score1: parseInt(player.win || 0), + score2: parseInt(rival.win || 0), + decided: isDecided + }); + usedPlayers.add(player.id); + usedPlayers.add(rival.id); + } else { + console.log(`未找到玩家 ${player.sign_name} 的对手 ${rivalName}`); + } + } + // 处理轮空 for (const player of roundData) { if (usedPlayers.has(player.id)) continue; - - const rivalName = player.rival_name; - const isBye = rivalName === '轮空' || rivalName === 'bye' || rivalName === 'BYE' || rivalName === 'Bye'; - - if (isBye) { - const matchNumber = matches.length + 1; - matches.push({ - id: `${round}-${matchNumber}`, - round: round, - matchNumber: matchNumber, - participant1: { id: player.id, name: player.sign_name }, - participant2: null, - winner: { id: player.id, name: player.sign_name }, - score1: 1, - score2: 0, - decided: true - }); - usedPlayers.add(player.id); - } - } + + const rivalName = player.rival_name; + const isBye = rivalName === '轮空' || rivalName === 'bye' || rivalName === 'BYE' || rivalName === 'Bye'; + + if (isBye) { + const matchNumber = matches.length + 1; + matches.push({ + id: `${round}-${matchNumber}`, + round: round, + matchNumber: matchNumber, + participant1: { id: player.id, name: player.sign_name }, + participant2: null, + winner: { id: player.id, name: player.sign_name }, + score1: 1, + score2: 0, + decided: true + }); + usedPlayers.add(player.id); + } + } // 处理待定的玩家(单独显示) for (const player of roundData) { @@ -317,43 +362,84 @@ const generateRoundMatches = async (round, roundData) => { if (isPending) { const matchNumber = matches.length + 1; + + // 判断比赛是否已完成(如果玩家状态是win或lose,或者有胜场,说明比赛已完成) + const playerWin = parseInt(player.win || 0); + const isDecided = player.status === 'win' || player.status === 'lose' || playerWin > 0; + let winner = null; + if (player.status === 'win' || playerWin > 0) { + winner = { id: player.id, name: player.sign_name }; + } + + console.log(`创建待定比赛 ${matchNumber}: ${player.sign_name} vs 待定`, { + playerStatus: player.status, + isDecided, + winner: winner?.name + }); + matches.push({ id: `${round}-${matchNumber}`, round: round, matchNumber: matchNumber, participant1: { id: player.id, name: player.sign_name }, participant2: null, - winner: null, + winner: winner, score1: parseInt(player.win || 0), score2: 0, - decided: false + decided: isDecided }); usedPlayers.add(player.id); } } console.log(`第${round}轮生成比赛:`, matches); - tournament.value.matches.push(...matches); + tournament.value.matches.push(...matches); }; // 检查比赛顺序是否合法 const isMatchOrderValid = (match) => { + console.log('检查比赛顺序:', { + matchId: match.id, + round: match.round, + matchNumber: match.matchNumber + }); + const currentRoundMatches = tournament.value.matches .filter(m => m.round === match.round) .sort((a, b) => a.matchNumber - b.matchNumber); + console.log('当前轮次所有比赛:', currentRoundMatches.map(m => ({ + id: m.id, + matchNumber: m.matchNumber, + decided: m.decided, + participant1: m.participant1?.name, + participant2: m.participant2?.name, + winner: m.winner?.name, + score1: m.score1, + score2: m.score2 + }))); + const currentMatchIndex = currentRoundMatches.findIndex(m => m.id === match.id); + console.log('当前比赛索引:', currentMatchIndex); // 检查是否有更小编号的比赛未完成 for (let i = 0; i < currentMatchIndex; i++) { const previousMatch = currentRoundMatches[i]; + console.log(`检查第${i + 1}场比赛:`, { + id: previousMatch.id, + matchNumber: previousMatch.matchNumber, + decided: previousMatch.decided + }); + if (!previousMatch.decided) { + console.log(`第${previousMatch.matchNumber}场比赛未完成,阻止进行第${match.matchNumber}场比赛`); return false; } } + console.log('比赛顺序验证通过'); return true; }; @@ -474,6 +560,14 @@ const handlePlayerAdvancement = async (match) => { }; const confirmScore = async (match) => { + console.log('确认比分,比赛信息:', { + id: match.id, + round: match.round, + matchNumber: match.matchNumber, + participant1: match.participant1?.name, + participant2: match.participant2?.name + }); + // 检查比赛顺序 if (!isMatchOrderValid(match)) { const currentRoundMatches = tournament.value.matches @@ -483,6 +577,12 @@ const confirmScore = async (match) => { const currentMatchIndex = currentRoundMatches.findIndex(m => m.id === match.id); const previousMatch = currentRoundMatches[currentMatchIndex - 1]; + console.log('比赛顺序验证失败,阻止的比赛:', { + currentMatch: match.matchNumber, + previousMatch: previousMatch?.matchNumber, + previousMatchId: previousMatch?.id + }); + errorDialog.value = { visible: true, message: `请先完成第${previousMatch.matchNumber}场比赛` @@ -531,16 +631,16 @@ const confirmScore = async (match) => { await addSignUpResult(newRecord); console.log(`轮空玩家 ${p1Data.sign_name} 晋级到第${nextRound}轮`); } - } catch (error) { + } catch (error) { console.error('处理轮空晋级失败:', error); - } + } nextTick(() => drawD3Bracket()); await loadTournamentData(); emit('refreshPlayers'); return; - } - + } + // 验证比分 const s1 = Number(match.score1); const s2 = Number(match.score2); @@ -670,9 +770,9 @@ const drawD3Bracket = () => { const roundMatches = tournament.value.matches .filter(m => m.round === round) .sort((a, b) => a.matchNumber - b.matchNumber); - + console.log(`绘制第${round}轮比赛:`, roundMatches); - + const matchesInRound = roundMatches.length; const roundX = round * (matchWidth + roundGap); const roundStartY = (maxMatchesInRound * (matchHeight + matchGap) - matchesInRound * (matchHeight + matchGap)) / 2; diff --git a/src/router/index.js b/src/router/index.js index e3ab972..8e96794 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -49,13 +49,15 @@ const routes = [ path: 'weapon-match', name: 'WeaponMatch', component: () => import('@/views/weapon/WeaponMatch.vue'), - meta: { requiresAuth: true, requiredPrivilege: ['lv-admin','lv-mod'] } + // meta: { requiresAuth: true, requiredPrivilege: ['lv-admin','lv-mod'] } + meta: { requiresAuth: true} }, { path: 'configEditor', name: 'ConfigEditor', component: () => import('@/views/index/ConfigEditor.vue'), - meta: { requiresAuth: true, requiredPrivilege: ['lv-admin','lv-mod'] } + // meta: { requiresAuth: true, requiredPrivilege: ['lv-admin','lv-mod'] } + meta: { requiresAuth: true} }, { path: 'competition', @@ -102,13 +104,13 @@ const routes = [ path: 'PIC2TGA', name: 'PIC2TGA', component: () => import('@/views/index/PIC2TGA.vue'), - meta: { requiredPrivilege: ['lv-admin','lv-mod','lv-map','lv-competitor'] } + // meta: { requiredPrivilege: ['lv-admin','lv-mod','lv-map','lv-competitor'] } }, { path: 'terrainGenerate', name: 'TerrainGenerate', component: () => import('@/views/index/TerrainGenerate.vue'), - meta: { requiredPrivilege: ['lv-admin','lv-mod','lv-map','lv-competitor'] } + // meta: { requiredPrivilege: ['lv-admin','lv-mod','lv-map','lv-competitor'] } } ] }, diff --git a/src/views/index.vue b/src/views/index.vue index bba370c..611dd92 100644 --- a/src/views/index.vue +++ b/src/views/index.vue @@ -437,12 +437,12 @@ function handlePasswordChangeError(errorMessage) { :message="errorDialogMessage" @close="errorDialogVisible = false" /> - + + + + + +
- -