@supalosa/chronodivide-bot 0.2.2 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/.prettierrc +5 -5
  2. package/TODO.md +18 -0
  3. package/dist/bot/bot.js +4 -4
  4. package/dist/bot/bot.js.map +1 -1
  5. package/dist/bot/logic/awareness.js +8 -8
  6. package/dist/bot/logic/awareness.js.map +1 -1
  7. package/dist/bot/logic/building/ArtilleryUnit.js +30 -9
  8. package/dist/bot/logic/building/antiGroundStaticDefence.js +2 -2
  9. package/dist/bot/logic/building/antiGroundStaticDefence.js.map +1 -1
  10. package/dist/bot/logic/building/artilleryUnit.js.map +1 -0
  11. package/dist/bot/logic/building/basicAirUnit.js +3 -2
  12. package/dist/bot/logic/building/basicAirUnit.js.map +1 -1
  13. package/dist/bot/logic/building/basicBuilding.js +1 -1
  14. package/dist/bot/logic/building/basicBuilding.js.map +1 -1
  15. package/dist/bot/logic/building/basicGroundUnit.js +4 -3
  16. package/dist/bot/logic/building/basicGroundUnit.js.map +1 -1
  17. package/dist/bot/logic/building/building.js +11 -55
  18. package/dist/bot/logic/building/buildingRules.js +162 -0
  19. package/dist/bot/logic/building/buildingRules.js.map +1 -0
  20. package/dist/bot/logic/building/harvester.js.map +1 -1
  21. package/dist/bot/logic/building/massedAntiGroundUnit.js +20 -0
  22. package/dist/bot/logic/building/powerPlant.js +1 -1
  23. package/dist/bot/logic/building/powerPlant.js.map +1 -1
  24. package/dist/bot/logic/building/queueController.js +1 -1
  25. package/dist/bot/logic/building/queueController.js.map +1 -1
  26. package/dist/bot/logic/building/queues.js +19 -0
  27. package/dist/bot/logic/building/resourceCollectionBuilding.js +5 -3
  28. package/dist/bot/logic/building/resourceCollectionBuilding.js.map +1 -1
  29. package/dist/bot/logic/common/scout.js +49 -32
  30. package/dist/bot/logic/common/scout.js.map +1 -1
  31. package/dist/bot/logic/common/utils.js +50 -1
  32. package/dist/bot/logic/common/utils.js.map +1 -1
  33. package/dist/bot/logic/knowledge.js +1 -0
  34. package/dist/bot/logic/map/map.js +17 -19
  35. package/dist/bot/logic/map/map.js.map +1 -1
  36. package/dist/bot/logic/map/sector.js +10 -13
  37. package/dist/bot/logic/map/sector.js.map +1 -1
  38. package/dist/bot/logic/mission/basicMission.js +26 -0
  39. package/dist/bot/logic/mission/expansionMission.js +32 -0
  40. package/dist/bot/logic/mission/missionFactories.js +2 -0
  41. package/dist/bot/logic/mission/missionFactories.js.map +1 -1
  42. package/dist/bot/logic/mission/missions/attackMission.js +4 -4
  43. package/dist/bot/logic/mission/missions/attackMission.js.map +1 -1
  44. package/dist/bot/logic/mission/missions/defenceMission.js +2 -1
  45. package/dist/bot/logic/mission/missions/defenceMission.js.map +1 -1
  46. package/dist/bot/logic/mission/missions/engineerMission.js +34 -0
  47. package/dist/bot/logic/mission/missions/engineerMission.js.map +1 -0
  48. package/dist/bot/logic/mission/missions/retreatMission.js.map +1 -1
  49. package/dist/bot/logic/squad/behaviours/attackSquad.js +56 -63
  50. package/dist/bot/logic/squad/behaviours/combatSquad.js +18 -19
  51. package/dist/bot/logic/squad/behaviours/combatSquad.js.map +1 -1
  52. package/dist/bot/logic/squad/behaviours/common.js +19 -2
  53. package/dist/bot/logic/squad/behaviours/common.js.map +1 -1
  54. package/dist/bot/logic/squad/behaviours/defenceSquad.js +2 -15
  55. package/dist/bot/logic/squad/behaviours/engineerSquad.js +36 -0
  56. package/dist/bot/logic/squad/behaviours/engineerSquad.js.map +1 -0
  57. package/dist/bot/logic/squad/behaviours/retreatSquad.js.map +1 -1
  58. package/dist/bot/logic/squad/behaviours/scoutingSquad.js +21 -17
  59. package/dist/bot/logic/squad/behaviours/scoutingSquad.js.map +1 -1
  60. package/dist/bot/logic/squad/behaviours/squadExpansion.js +31 -0
  61. package/dist/bot/logic/squad/behaviours/squadScouters.js +8 -0
  62. package/dist/bot/logic/squad/squad.js +5 -8
  63. package/dist/bot/logic/squad/squad.js.map +1 -1
  64. package/dist/bot/logic/squad/squadBehaviour.js.map +1 -1
  65. package/dist/bot/logic/squad/squadController.js +2 -3
  66. package/dist/bot/logic/squad/squadController.js.map +1 -1
  67. package/dist/bot/logic/threat/threatCalculator.js +4 -3
  68. package/dist/bot/logic/threat/threatCalculator.js.map +1 -1
  69. package/dist/exampleBot.js +6 -6
  70. package/dist/exampleBot.js.map +1 -1
  71. package/package.json +5 -9
  72. package/src/bot/bot.ts +8 -10
  73. package/src/bot/logic/awareness.ts +13 -17
  74. package/src/bot/logic/building/antiGroundStaticDefence.ts +13 -9
  75. package/src/bot/logic/building/artilleryUnit.ts +65 -0
  76. package/src/bot/logic/building/basicAirUnit.ts +10 -8
  77. package/src/bot/logic/building/basicBuilding.ts +1 -1
  78. package/src/bot/logic/building/basicGroundUnit.ts +4 -4
  79. package/src/bot/logic/building/{building.ts → buildingRules.ts} +94 -48
  80. package/src/bot/logic/building/harvester.ts +7 -4
  81. package/src/bot/logic/building/powerPlant.ts +1 -1
  82. package/src/bot/logic/building/queueController.ts +1 -1
  83. package/src/bot/logic/building/resourceCollectionBuilding.ts +8 -12
  84. package/src/bot/logic/common/scout.ts +83 -38
  85. package/src/bot/logic/common/utils.ts +65 -1
  86. package/src/bot/logic/map/map.ts +27 -31
  87. package/src/bot/logic/map/sector.ts +17 -21
  88. package/src/bot/logic/mission/missionFactories.ts +2 -0
  89. package/src/bot/logic/mission/missions/attackMission.ts +27 -27
  90. package/src/bot/logic/mission/missions/defenceMission.ts +3 -3
  91. package/src/bot/logic/mission/missions/engineerMission.ts +61 -0
  92. package/src/bot/logic/mission/missions/retreatMission.ts +2 -2
  93. package/src/bot/logic/squad/behaviours/combatSquad.ts +24 -26
  94. package/src/bot/logic/squad/behaviours/common.ts +33 -3
  95. package/src/bot/logic/squad/behaviours/engineerSquad.ts +53 -0
  96. package/src/bot/logic/squad/behaviours/retreatSquad.ts +2 -2
  97. package/src/bot/logic/squad/behaviours/scoutingSquad.ts +26 -28
  98. package/src/bot/logic/squad/squad.ts +8 -13
  99. package/src/bot/logic/squad/squadBehaviour.ts +9 -10
  100. package/src/bot/logic/squad/squadController.ts +2 -5
  101. package/src/bot/logic/threat/threat.ts +15 -15
  102. package/src/bot/logic/threat/threatCalculator.ts +4 -3
  103. package/src/exampleBot.ts +6 -6
  104. package/dist/bot/logic/awarenessImpl.js +0 -132
  105. package/dist/bot/logic/awarenessImpl.js.map +0 -1
  106. package/dist/bot/logic/building/ArtilleryUnit.js.map +0 -1
  107. package/dist/bot/logic/building/building.js.map +0 -1
  108. package/src/bot/logic/building/ArtilleryUnit.ts +0 -43
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildingRules.js","sourceRoot":"","sources":["../../../../src/bot/logic/building/buildingRules.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"harvester.js","sourceRoot":"","sources":["../../../../src/bot/logic/building/harvester.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,6BAA6B,GAAG,CAAC,CAAC;AAExC,MAAM,OAAO,SAAU,SAAQ,eAAe;IAC1C,YAAY,YAAoB,EAAE,UAAkB,EAAU,SAAiB;QAC3E,KAAK,CAAC,YAAY,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QADoB,cAAS,GAAT,SAAS,CAAQ;IAE/E,CAAC;IAED,iEAAiE;IACjE,WAAW,CACP,IAAa,EACb,UAAsB,EACtB,WAAwB,EACxB,WAAgC;QAEhC,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;QAC3F,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;QAE5F,MAAM,KAAK,GAAG,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAElD,OAAO,IAAI,CAAC,YAAY,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,6BAA6B,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IAC9G,CAAC;CACJ"}
1
+ {"version":3,"file":"harvester.js","sourceRoot":"","sources":["../../../../src/bot/logic/building/harvester.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,6BAA6B,GAAG,CAAC,CAAC;AAExC,MAAM,OAAO,SAAU,SAAQ,eAAe;IAC1C,YACI,YAAoB,EACpB,UAAkB,EACV,SAAiB;QAEzB,KAAK,CAAC,YAAY,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAF9B,cAAS,GAAT,SAAS,CAAQ;IAG7B,CAAC;IAED,iEAAiE;IACjE,WAAW,CACP,IAAa,EACb,UAAsB,EACtB,WAAwB,EACxB,WAAgC;QAEhC,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;QAC3F,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;QAE5F,MAAM,KAAK,GAAG,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAElD,OAAO,IAAI,CAAC,YAAY,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,6BAA6B,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IAC9G,CAAC;CACJ"}
@@ -0,0 +1,20 @@
1
+ import { numBuildingsOwnedOfType } from "./building.js";
2
+ export class MassedAntiGroundUnit {
3
+ constructor(basePriority, baseAmount) {
4
+ this.basePriority = basePriority;
5
+ this.baseAmount = baseAmount;
6
+ }
7
+ getPlacementLocation(game, playerData, technoRules) {
8
+ return undefined;
9
+ }
10
+ getPriority(game, playerData, technoRules, threatCache) {
11
+ // If the enemy's ground power is increasing we should try to keep up.
12
+ if (threatCache) {
13
+ if (threatCache.totalAvailableAntiGroundFirepower * threatCache.certainty > threatCache.totalAvailableAntiGroundFirepower) {
14
+ return this.basePriority * (threatCache.totalAvailableAntiGroundFirepower / Math.max(1, threatCache.totalAvailableAntiGroundFirepower));
15
+ }
16
+ }
17
+ const numOwned = numBuildingsOwnedOfType(game, playerData, technoRules);
18
+ return this.basePriority * (1.0 - (numOwned / this.baseAmount));
19
+ }
20
+ }
@@ -1,4 +1,4 @@
1
- import { getDefaultPlacementLocation } from "./building.js";
1
+ import { getDefaultPlacementLocation } from "./buildingRules.js";
2
2
  export class PowerPlant {
3
3
  getPlacementLocation(game, playerData, technoRules) {
4
4
  return getDefaultPlacementLocation(game, playerData, playerData.startLocation, technoRules);
@@ -1 +1 @@
1
- {"version":3,"file":"powerPlant.js","sourceRoot":"","sources":["../../../../src/bot/logic/building/powerPlant.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAG7E,MAAM,OAAO,UAAU;IACnB,oBAAoB,CAChB,IAAa,EACb,UAAsB,EACtB,WAAwB;QAExB,OAAO,2BAA2B,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAChG,CAAC;IAED,WAAW,CAAC,IAAa,EAAE,UAAsB,EAAE,WAAwB;QACvE,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE;YACjD,OAAO,GAAG,CAAC;SACd;aAAM,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE;YAChF,OAAO,EAAE,CAAC;SACb;aAAM;YACH,OAAO,CAAC,CAAC;SACZ;IACL,CAAC;IAED,WAAW,CACP,IAAa,EACb,UAAsB,EACtB,WAAwB,EACxB,WAAgC;QAEhC,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
1
+ {"version":3,"file":"powerPlant.js","sourceRoot":"","sources":["../../../../src/bot/logic/building/powerPlant.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAGlF,MAAM,OAAO,UAAU;IACnB,oBAAoB,CAChB,IAAa,EACb,UAAsB,EACtB,WAAwB;QAExB,OAAO,2BAA2B,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAChG,CAAC;IAED,WAAW,CAAC,IAAa,EAAE,UAAsB,EAAE,WAAwB;QACvE,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE;YACjD,OAAO,GAAG,CAAC;SACd;aAAM,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE;YAChF,OAAO,EAAE,CAAC;SACb;aAAM;YACH,OAAO,CAAC,CAAC;SACZ;IACL,CAAC;IAED,WAAW,CACP,IAAa,EACb,UAAsB,EACtB,WAAwB,EACxB,WAAgC;QAEhC,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
@@ -1,5 +1,5 @@
1
1
  import { QueueStatus, QueueType, } from "@chronodivide/game-api";
2
- import { BUILDING_NAME_TO_RULES, DEFAULT_BUILDING_PRIORITY, getDefaultPlacementLocation, } from "./building.js";
2
+ import { BUILDING_NAME_TO_RULES, DEFAULT_BUILDING_PRIORITY, getDefaultPlacementLocation, } from "./buildingRules.js";
3
3
  export const QUEUES = [
4
4
  QueueType.Structures,
5
5
  QueueType.Armory,
@@ -1 +1 @@
1
- {"version":3,"file":"queueController.js","sourceRoot":"","sources":["../../../../src/bot/logic/building/queueController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queueController.js","sourceRoot":"","sources":["../../../../src/bot/logic/building/queueController.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { QueueType } from "@chronodivide/game-api";
2
+ export const queueTypeToName = (queue) => {
3
+ switch (queue) {
4
+ case QueueType.Structures:
5
+ return "Structures";
6
+ case QueueType.Armory:
7
+ return "Armory";
8
+ case QueueType.Infantry:
9
+ return "Infantry";
10
+ case QueueType.Vehicles:
11
+ return "Vehicles";
12
+ case QueueType.Aircrafts:
13
+ return "Aircrafts";
14
+ case QueueType.Ships:
15
+ return "Ships";
16
+ default:
17
+ return "Unknown";
18
+ }
19
+ };
@@ -1,5 +1,7 @@
1
+ import { GameMath } from "@chronodivide/game-api";
1
2
  import { BasicBuilding } from "./basicBuilding.js";
2
- import { getDefaultPlacementLocation, } from "./building.js";
3
+ import { getDefaultPlacementLocation } from "./buildingRules.js";
4
+ import { Vector2 } from "three";
3
5
  export class ResourceCollectionBuilding extends BasicBuilding {
4
6
  constructor(basePriority, maxNeeded, onlyBuildWhenFloatingCreditsAmount) {
5
7
  super(basePriority, maxNeeded, onlyBuildWhenFloatingCreditsAmount);
@@ -13,7 +15,7 @@ export class ResourceCollectionBuilding extends BasicBuilding {
13
15
  for (let i = 0; i < allTileResourceData.length; ++i) {
14
16
  let tileResourceData = allTileResourceData[i];
15
17
  if (tileResourceData.spawnsOre) {
16
- let dist = Math.sqrt((selectedLocation.x - tileResourceData.tile.rx) ** 2 +
18
+ let dist = GameMath.sqrt((selectedLocation.x - tileResourceData.tile.rx) ** 2 +
17
19
  (selectedLocation.y - tileResourceData.tile.ry) ** 2);
18
20
  if (closeOreDist == undefined || dist < closeOreDist) {
19
21
  closeOreDist = dist;
@@ -22,7 +24,7 @@ export class ResourceCollectionBuilding extends BasicBuilding {
22
24
  }
23
25
  }
24
26
  if (closeOre) {
25
- selectedLocation = { x: closeOre.rx, y: closeOre.ry };
27
+ selectedLocation = new Vector2(closeOre.rx, closeOre.ry);
26
28
  }
27
29
  return getDefaultPlacementLocation(game, playerData, selectedLocation, technoRules);
28
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"resourceCollectionBuilding.js","sourceRoot":"","sources":["../../../../src/bot/logic/building/resourceCollectionBuilding.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAEH,2BAA2B,GAG9B,MAAM,eAAe,CAAC;AAEvB,MAAM,OAAO,0BAA2B,SAAQ,aAAa;IACzD,YAAY,YAAoB,EAAE,SAAiB,EAAE,kCAA2C;QAC5F,KAAK,CAAC,YAAY,EAAE,SAAS,EAAE,kCAAkC,CAAC,CAAC;IACvE,CAAC;IAED,oBAAoB,CAChB,IAAa,EACb,UAAsB,EACtB,WAAwB;QAExB,gCAAgC;QAChC,IAAI,gBAAgB,GAAG,UAAU,CAAC,aAAa,CAAC;QAEhD,IAAI,QAA0B,CAAC;QAC/B,IAAI,YAAgC,CAAC;QACrC,IAAI,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC;QAChE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YACjD,IAAI,gBAAgB,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,gBAAgB,CAAC,SAAS,EAAE;gBAC5B,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAChB,CAAC,gBAAgB,CAAC,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;oBAChD,CAAC,gBAAgB,CAAC,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAC3D,CAAC;gBACF,IAAI,YAAY,IAAI,SAAS,IAAI,IAAI,GAAG,YAAY,EAAE;oBAClD,YAAY,GAAG,IAAI,CAAC;oBACpB,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC;iBACpC;aACJ;SACJ;QACD,IAAI,QAAQ,EAAE;YACV,gBAAgB,GAAG,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;SACzD;QACD,OAAO,2BAA2B,CAAC,IAAI,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;IACxF,CAAC;IAED,kEAAkE;IAClE,WAAW,CACP,IAAa,EACb,UAAsB,EACtB,WAAwB,EACxB,WAAgC;QAEhC,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;QAC5F,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;CACJ"}
1
+ {"version":3,"file":"resourceCollectionBuilding.js","sourceRoot":"","sources":["../../../../src/bot/logic/building/resourceCollectionBuilding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,QAAQ,EAAiC,MAAM,wBAAwB,CAAC;AAE1F,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,MAAM,OAAO,0BAA2B,SAAQ,aAAa;IACzD,YAAY,YAAoB,EAAE,SAAiB,EAAE,kCAA2C;QAC5F,KAAK,CAAC,YAAY,EAAE,SAAS,EAAE,kCAAkC,CAAC,CAAC;IACvE,CAAC;IAED,oBAAoB,CAChB,IAAa,EACb,UAAsB,EACtB,WAAwB;QAExB,gCAAgC;QAChC,IAAI,gBAAgB,GAAG,UAAU,CAAC,aAAa,CAAC;QAEhD,IAAI,QAA0B,CAAC;QAC/B,IAAI,YAAgC,CAAC;QACrC,IAAI,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC;QAChE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YACjD,IAAI,gBAAgB,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,gBAAgB,CAAC,SAAS,EAAE;gBAC5B,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,CACpB,CAAC,gBAAgB,CAAC,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;oBAChD,CAAC,gBAAgB,CAAC,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAC3D,CAAC;gBACF,IAAI,YAAY,IAAI,SAAS,IAAI,IAAI,GAAG,YAAY,EAAE;oBAClD,YAAY,GAAG,IAAI,CAAC;oBACpB,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC;iBACpC;aACJ;SACJ;QACD,IAAI,QAAQ,EAAE;YACV,gBAAgB,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;SAC5D;QACD,OAAO,2BAA2B,CAAC,IAAI,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;IACxF,CAAC;IAED,kEAAkE;IAClE,WAAW,CACP,IAAa,EACb,UAAsB,EACtB,WAAwB,EACxB,WAAgC;QAEhC,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;QAC5F,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;CACJ"}
@@ -1,3 +1,4 @@
1
+ import { GameMath } from "@chronodivide/game-api";
1
2
  import { PriorityQueue } from "@datastructures-js/priority-queue";
2
3
  export const getUnseenStartingLocations = (gameApi, playerData) => {
3
4
  const unseenStartingLocations = gameApi.mapApi.getStartingLocations().filter((startingLocation) => {
@@ -9,10 +10,11 @@ export const getUnseenStartingLocations = (gameApi, playerData) => {
9
10
  });
10
11
  return unseenStartingLocations;
11
12
  };
12
- class PrioritisedScoutTarget {
13
- constructor(priority, target) {
13
+ export class PrioritisedScoutTarget {
14
+ constructor(priority, target, permanent = false) {
15
+ this.permanent = permanent;
14
16
  if (target.hasOwnProperty("x") && target.hasOwnProperty("y")) {
15
- this._targetPoint2D = target;
17
+ this._targetPoint = target;
16
18
  }
17
19
  else if (target.hasOwnProperty("sectorStartPoint")) {
18
20
  this._targetSector = target;
@@ -25,57 +27,47 @@ class PrioritisedScoutTarget {
25
27
  get priority() {
26
28
  return this._priority;
27
29
  }
28
- asPoint2D() {
29
- return this._targetPoint2D ?? this._targetSector?.sectorStartPoint ?? null;
30
+ asVector2() {
31
+ return this._targetPoint ?? this._targetSector?.sectorStartPoint ?? null;
30
32
  }
31
33
  get targetSector() {
32
34
  return this._targetSector;
33
35
  }
36
+ get isPermanent() {
37
+ return this.permanent;
38
+ }
34
39
  }
35
40
  const ENEMY_SPAWN_POINT_PRIORITY = 100;
36
41
  // Amount of sectors around the starting sector to try to scout.
37
- const NEARBY_SECTOR_RADIUS = 2;
42
+ const NEARBY_SECTOR_STARTING_RADIUS = 2;
38
43
  const NEARBY_SECTOR_BASE_PRIORITY = 1000;
44
+ // Amount of ticks per 'radius' to expand for scouting.
45
+ const SCOUTING_RADIUS_EXPANSION_TICKS = 9000; // 10 minutes
39
46
  export class ScoutingManager {
40
47
  constructor(logger) {
41
48
  this.logger = logger;
49
+ this.queuedRadius = NEARBY_SECTOR_STARTING_RADIUS;
42
50
  // Order by descending priority.
43
51
  this.scoutingQueue = new PriorityQueue((a, b) => b.priority - a.priority);
44
52
  }
45
- onGameStart(gameApi, playerData, sectorCache) {
46
- // Queue hostile starting locations with high priority.
47
- gameApi.mapApi
48
- .getStartingLocations()
49
- .filter((startingLocation) => {
50
- if (startingLocation == playerData.startLocation) {
51
- return false;
52
- }
53
- let tile = gameApi.mapApi.getTile(startingLocation.x, startingLocation.y);
54
- return tile ? !gameApi.mapApi.isVisibleTile(tile, playerData.name) : false;
55
- })
56
- .map((tile) => new PrioritisedScoutTarget(ENEMY_SPAWN_POINT_PRIORITY, tile))
57
- .forEach((target) => {
58
- this.logger(`Adding ${target.asPoint2D()?.x},${target.asPoint2D()?.y} to initial scouting queue`);
59
- this.scoutingQueue.enqueue(target);
60
- });
61
- // Queue nearby sectors.
62
- const { x: startX, y: startY } = playerData.startLocation;
63
- const { x: sectorsX, y: sectorsY } = sectorCache.getSectorBounds();
53
+ addRadiusToScout(gameApi, centerPoint, sectorCache, radius, startingPriority) {
54
+ const { x: startX, y: startY } = centerPoint;
55
+ const { width: sectorsX, height: sectorsY } = sectorCache.getSectorBounds();
64
56
  const startingSector = sectorCache.getSectorCoordinatesForWorldPosition(startX, startY);
65
57
  if (!startingSector) {
66
58
  return;
67
59
  }
68
- for (let x = Math.max(0, startingSector.sectorX - NEARBY_SECTOR_RADIUS); x <= Math.min(sectorsX, startingSector.sectorX + NEARBY_SECTOR_RADIUS); ++x) {
69
- for (let y = Math.max(0, startingSector.sectorY - NEARBY_SECTOR_RADIUS); y <= Math.min(sectorsY, startingSector.sectorY + NEARBY_SECTOR_RADIUS); ++y) {
60
+ for (let x = Math.max(0, startingSector.sectorX - radius); x < Math.min(sectorsX, startingSector.sectorX + radius); ++x) {
61
+ for (let y = Math.max(0, startingSector.sectorY - radius); y < Math.min(sectorsY, startingSector.sectorY + radius); ++y) {
70
62
  if (x === startingSector?.sectorX && y === startingSector?.sectorY) {
71
63
  continue;
72
64
  }
73
65
  // Make it scout closer sectors first.
74
- const distanceFactor = Math.pow(x - startingSector.sectorX, 2) + Math.pow(y - startingSector.sectorY, 2);
66
+ const distanceFactor = GameMath.pow(x - startingSector.sectorX, 2) + GameMath.pow(y - startingSector.sectorY, 2);
75
67
  const sector = sectorCache.getSector(x, y);
76
68
  if (sector) {
77
- const maybeTarget = new PrioritisedScoutTarget(NEARBY_SECTOR_BASE_PRIORITY - distanceFactor, sector);
78
- const maybePoint = maybeTarget.asPoint2D();
69
+ const maybeTarget = new PrioritisedScoutTarget(startingPriority - distanceFactor, sector);
70
+ const maybePoint = maybeTarget.asVector2();
79
71
  if (maybePoint && gameApi.mapApi.getTile(maybePoint.x, maybePoint.y)) {
80
72
  this.scoutingQueue.enqueue(maybeTarget);
81
73
  }
@@ -83,12 +75,31 @@ export class ScoutingManager {
83
75
  }
84
76
  }
85
77
  }
86
- onAiUpdate(gameApi, playerData) {
78
+ onGameStart(gameApi, playerData, sectorCache) {
79
+ // Queue hostile starting locations with high priority and as permanent scouting candidates.
80
+ gameApi.mapApi
81
+ .getStartingLocations()
82
+ .filter((startingLocation) => {
83
+ if (startingLocation == playerData.startLocation) {
84
+ return false;
85
+ }
86
+ let tile = gameApi.mapApi.getTile(startingLocation.x, startingLocation.y);
87
+ return tile ? !gameApi.mapApi.isVisibleTile(tile, playerData.name) : false;
88
+ })
89
+ .map((tile) => new PrioritisedScoutTarget(ENEMY_SPAWN_POINT_PRIORITY, tile, true))
90
+ .forEach((target) => {
91
+ this.logger(`Adding ${target.asVector2()?.x},${target.asVector2()?.y} to initial scouting queue`);
92
+ this.scoutingQueue.enqueue(target);
93
+ });
94
+ // Queue sectors near the spawn point.
95
+ this.addRadiusToScout(gameApi, playerData.startLocation, sectorCache, NEARBY_SECTOR_STARTING_RADIUS, NEARBY_SECTOR_BASE_PRIORITY);
96
+ }
97
+ onAiUpdate(gameApi, playerData, sectorCache) {
87
98
  const currentHead = this.scoutingQueue.front();
88
99
  if (!currentHead) {
89
100
  return;
90
101
  }
91
- const head = currentHead.asPoint2D();
102
+ const head = currentHead.asVector2();
92
103
  if (!head) {
93
104
  this.scoutingQueue.dequeue();
94
105
  return;
@@ -99,6 +110,12 @@ export class ScoutingManager {
99
110
  this.logger(`head point is visible, dequeueing`);
100
111
  this.scoutingQueue.dequeue();
101
112
  }
113
+ const requiredRadius = Math.floor(gameApi.getCurrentTick() / SCOUTING_RADIUS_EXPANSION_TICKS);
114
+ if (requiredRadius > this.queuedRadius) {
115
+ this.logger(`expanding scouting radius from ${this.queuedRadius} to ${requiredRadius}`);
116
+ this.addRadiusToScout(gameApi, playerData.startLocation, sectorCache, requiredRadius, NEARBY_SECTOR_BASE_PRIORITY);
117
+ this.queuedRadius = requiredRadius;
118
+ }
102
119
  }
103
120
  getNewScoutTarget() {
104
121
  return this.scoutingQueue.dequeue();
@@ -1 +1 @@
1
- {"version":3,"file":"scout.js","sourceRoot":"","sources":["../../../../src/bot/logic/common/scout.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAElE,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,OAAgB,EAAE,UAAsB,EAAE,EAAE;IACnF,MAAM,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,EAAE;QAC9F,IAAI,gBAAgB,IAAI,UAAU,CAAC,aAAa,EAAE;YAC9C,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC/E,CAAC,CAAC,CAAC;IACH,OAAO,uBAAuB,CAAC;AACnC,CAAC,CAAC;AAEF,MAAM,sBAAsB;IAKxB,YAAY,QAAgB,EAAE,MAAwB;QAClD,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;YAC1D,IAAI,CAAC,cAAc,GAAG,MAAiB,CAAC;SAC3C;aAAM,IAAI,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE;YAClD,IAAI,CAAC,aAAa,GAAG,MAAgB,CAAC;SACzC;aAAM;YACH,MAAM,IAAI,SAAS,CAAC,oCAAoC,MAAM,EAAE,CAAC,CAAC;SACrE;QACD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC9B,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,aAAa,EAAE,gBAAgB,IAAI,IAAI,CAAC;IAC/E,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;CACJ;AAED,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAEvC,gEAAgE;AAChE,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,MAAM,2BAA2B,GAAG,IAAI,CAAC;AAEzC,MAAM,OAAO,eAAe;IAGxB,YAAoB,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;QACnC,gCAAgC;QAChC,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,CAAC,CAAyB,EAAE,CAAyB,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC9H,CAAC;IAED,WAAW,CAAC,OAAgB,EAAE,UAAsB,EAAE,WAAwB;QAC1E,uDAAuD;QACvD,OAAO,CAAC,MAAM;aACT,oBAAoB,EAAE;aACtB,MAAM,CAAC,CAAC,gBAAgB,EAAE,EAAE;YACzB,IAAI,gBAAgB,IAAI,UAAU,CAAC,aAAa,EAAE;gBAC9C,OAAO,KAAK,CAAC;aAChB;YACD,IAAI,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAC1E,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC/E,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,sBAAsB,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;aAC3E,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,UAAU,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,4BAA4B,CAAC,CAAC;YAClG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEP,wBAAwB;QACxB,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,aAAa,CAAC;QAC1D,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC;QACnE,MAAM,cAAc,GAAG,WAAW,CAAC,oCAAoC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAExF,IAAI,CAAC,cAAc,EAAE;YACjB,OAAO;SACV;QAED,KACI,IAAI,CAAC,GAAW,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,OAAO,GAAG,oBAAoB,CAAC,EAC1E,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,OAAO,GAAG,oBAAoB,CAAC,EACtE,EAAE,CAAC,EACL;YACE,KACI,IAAI,CAAC,GAAW,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,OAAO,GAAG,oBAAoB,CAAC,EAC1E,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,OAAO,GAAG,oBAAoB,CAAC,EACtE,EAAE,CAAC,EACL;gBACE,IAAI,CAAC,KAAK,cAAc,EAAE,OAAO,IAAI,CAAC,KAAK,cAAc,EAAE,OAAO,EAAE;oBAChE,SAAS;iBACZ;gBACD,sCAAsC;gBACtC,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBACzG,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3C,IAAI,MAAM,EAAE;oBACR,MAAM,WAAW,GAAG,IAAI,sBAAsB,CAAC,2BAA2B,GAAG,cAAc,EAAE,MAAM,CAAC,CAAC;oBACrG,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC;oBAC3C,IAAI,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE;wBAClE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;qBAC3C;iBACJ;aACJ;SACJ;IACL,CAAC;IAED,UAAU,CAAC,OAAgB,EAAE,UAAsB;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC/C,IAAI,CAAC,WAAW,EAAE;YACd,OAAO;SACV;QACD,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,EAAE;YACP,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAC7B,OAAO;SACV;QACD,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;QACtB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1C,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE;YAC7D,IAAI,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;YACjD,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;SAChC;IACL,CAAC;IAED,iBAAiB;QACb,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;IACxC,CAAC;IAED,eAAe;QACX,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;IACzC,CAAC;CACJ"}
1
+ {"version":3,"file":"scout.js","sourceRoot":"","sources":["../../../../src/bot/logic/common/scout.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,51 @@
1
- export {};
1
+ // Thanks use-strict!
2
+ export function formatTimeDuration(timeSeconds, skipZeroHours = false) {
3
+ let h = Math.floor(timeSeconds / 3600);
4
+ timeSeconds -= h * 3600;
5
+ let m = Math.floor(timeSeconds / 60);
6
+ timeSeconds -= m * 60;
7
+ let s = Math.floor(timeSeconds);
8
+ return [...(h || !skipZeroHours ? [h] : []), pad(m, "00"), pad(s, "00")].join(":");
9
+ }
10
+ export function pad(n, format = "0000") {
11
+ let str = "" + n;
12
+ return format.substring(0, format.length - str.length) + str;
13
+ }
14
+ export function maxBy(array, predicate) {
15
+ if (array.length === 0) {
16
+ return null;
17
+ }
18
+ let maxIdx = 0;
19
+ let maxVal = predicate(array[0]);
20
+ for (let i = 1; i < array.length; ++i) {
21
+ const newVal = predicate(array[i]);
22
+ if (maxVal === null || (newVal !== null && newVal > maxVal)) {
23
+ maxIdx = i;
24
+ maxVal = newVal;
25
+ }
26
+ }
27
+ return array[maxIdx];
28
+ }
29
+ export function uniqBy(array, predicate) {
30
+ return Object.values(array.reduce((prev, newVal) => {
31
+ const val = predicate(newVal);
32
+ if (!prev[val]) {
33
+ prev[val] = newVal;
34
+ }
35
+ return prev;
36
+ }, {}));
37
+ }
38
+ export function countBy(array, predicate) {
39
+ return array.reduce((prev, newVal) => {
40
+ const val = predicate(newVal);
41
+ if (val === undefined) {
42
+ return prev;
43
+ }
44
+ if (!prev[val]) {
45
+ prev[val] = 0;
46
+ }
47
+ prev[val] = prev[val] + 1;
48
+ return prev;
49
+ }, {});
50
+ }
2
51
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/bot/logic/common/utils.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/bot/logic/common/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -1,15 +1,6 @@
1
- import _ from "lodash";
2
- const MAX_WIDTH_AND_HEIGHT = 500;
3
- // Expensive one-time call to determine the size of the map.
4
- // The result is a point just outside the bounds of the map.
1
+ import { GameMath, Vector2 } from "@chronodivide/game-api";
5
2
  export function determineMapBounds(mapApi) {
6
- // Probably want to ask for an API change to get this.
7
- // Note that the maps is not always a rectangle!
8
- const zeroTile = { rx: 0, ry: 0 };
9
- const allTiles = mapApi.getTilesInRect(zeroTile, { width: MAX_WIDTH_AND_HEIGHT, height: MAX_WIDTH_AND_HEIGHT });
10
- const maxX = _.maxBy(allTiles, (tile) => tile.rx)?.rx;
11
- const maxY = _.maxBy(allTiles, (tile) => tile.ry)?.ry;
12
- return { x: maxX, y: maxY };
3
+ return mapApi.getRealMapSize();
13
4
  }
14
5
  export function calculateAreaVisibility(mapApi, playerData, startPoint, endPoint) {
15
6
  let validTiles = 0, visibleTiles = 0;
@@ -28,20 +19,27 @@ export function calculateAreaVisibility(mapApi, playerData, startPoint, endPoint
28
19
  return result;
29
20
  }
30
21
  export function getPointTowardsOtherPoint(gameApi, startLocation, endLocation, minRadius, maxRadius, randomAngle) {
22
+ // TODO: Use proper vector maths here.
31
23
  let radius = minRadius + Math.round(gameApi.generateRandom() * (maxRadius - minRadius));
32
- let directionToSpawn = Math.atan2(endLocation.y - startLocation.y, endLocation.x - startLocation.x);
33
- let randomisedDirection = directionToSpawn - (randomAngle * (Math.PI / 12) + 2 * randomAngle * gameApi.generateRandom() * (Math.PI / 12));
34
- let candidatePointX = Math.round(startLocation.x + Math.cos(randomisedDirection) * radius);
35
- let candidatePointY = Math.round(startLocation.y + Math.sin(randomisedDirection) * radius);
36
- return { x: candidatePointX, y: candidatePointY };
24
+ let directionToEndLocation = GameMath.atan2(endLocation.y - startLocation.y, endLocation.x - startLocation.x);
25
+ let randomisedDirection = directionToEndLocation -
26
+ (randomAngle * (Math.PI / 12) + 2 * randomAngle * gameApi.generateRandom() * (Math.PI / 12));
27
+ let candidatePointX = Math.round(startLocation.x + GameMath.cos(randomisedDirection) * radius);
28
+ let candidatePointY = Math.round(startLocation.y + GameMath.sin(randomisedDirection) * radius);
29
+ return new Vector2(candidatePointX, candidatePointY);
37
30
  }
38
31
  export function getDistanceBetweenPoints(startLocation, endLocation) {
39
- return Math.sqrt((startLocation.x - endLocation.x) ** 2 + (startLocation.y - endLocation.y) ** 2);
32
+ // TODO: Remove this now we have Vector2s.
33
+ return startLocation.distanceTo(endLocation);
34
+ }
35
+ export function getDistanceBetweenTileAndPoint(tile, vector) {
36
+ // TODO: Remove this now we have Vector2s.
37
+ return new Vector2(tile.rx, tile.ry).distanceTo(vector);
40
38
  }
41
39
  export function getDistanceBetweenUnits(unit1, unit2) {
42
- return getDistanceBetweenPoints({ x: unit1.tile.rx, y: unit1.tile.ry }, { x: unit2.tile.rx, y: unit2.tile.ry });
40
+ return new Vector2(unit1.tile.rx, unit1.tile.ry).distanceTo(new Vector2(unit2.tile.rx, unit2.tile.ry));
43
41
  }
44
42
  export function getDistanceBetween(unit, point) {
45
- return getDistanceBetweenPoints({ x: unit.tile.rx, y: unit.tile.ry }, point);
43
+ return getDistanceBetweenPoints(new Vector2(unit.tile.rx, unit.tile.ry), point);
46
44
  }
47
45
  //# sourceMappingURL=map.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"map.js","sourceRoot":"","sources":["../../../../src/bot/logic/map/map.ts"],"names":[],"mappings":"AACA,OAAO,CAAC,MAAM,QAAQ,CAAC;AAEvB,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAEjC,4DAA4D;AAC5D,4DAA4D;AAC5D,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC7C,sDAAsD;IACtD,gDAAgD;IAChD,MAAM,QAAQ,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAU,CAAC;IAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAEhH,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAG,CAAC;IACvD,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAG,CAAC;IAEvD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,uBAAuB,CACnC,MAAc,EACd,UAAsB,EACtB,UAAmB,EACnB,QAAiB;IAEjB,IAAI,UAAU,GAAW,CAAC,EACtB,YAAY,GAAW,CAAC,CAAC;IAC7B,KAAK,IAAI,EAAE,GAAG,UAAU,CAAC,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;QAC/C,KAAK,IAAI,EAAE,GAAG,UAAU,CAAC,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;YAC/C,IAAI,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAClC,IAAI,IAAI,EAAE;gBACN,EAAE,UAAU,CAAC;gBACb,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE;oBAC7C,EAAE,YAAY,CAAC;iBAClB;aACJ;SACJ;KACJ;IACD,IAAI,MAAM,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;IAC1C,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,yBAAyB,CACrC,OAAgB,EAChB,aAAsB,EACtB,WAAoB,EACpB,SAAiB,EACjB,SAAiB,EACjB,WAAmB;IAEnB,IAAI,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC;IACxF,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACpG,IAAI,mBAAmB,GACnB,gBAAgB,GAAG,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACpH,IAAI,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAC,CAAC;IAC3F,IAAI,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAC,CAAC;IAC3F,OAAO,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,aAAsB,EAAE,WAAoB;IACjF,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtG,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAe,EAAE,KAAe;IACpE,OAAO,wBAAwB,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACpH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAc,EAAE,KAAc;IAC7D,OAAO,wBAAwB,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;AACjF,CAAC"}
1
+ {"version":3,"file":"map.js","sourceRoot":"","sources":["../../../../src/bot/logic/map/map.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  // A sector is a uniform-sized segment of the map.
2
+ import { Vector2 } from "@chronodivide/game-api";
2
3
  import { calculateAreaVisibility } from "./map.js";
3
4
  export const SECTOR_SIZE = 8;
4
5
  export class Sector {
@@ -28,13 +29,15 @@ export class SectorCache {
28
29
  constructor(mapApi, mapBounds) {
29
30
  this.sectors = [];
30
31
  this.mapBounds = mapBounds;
31
- this.sectorsX = Math.ceil(mapBounds.x / SECTOR_SIZE);
32
- this.sectorsY = Math.ceil(mapBounds.y / SECTOR_SIZE);
32
+ this.sectorsX = Math.ceil(mapBounds.width / SECTOR_SIZE);
33
+ this.sectorsY = Math.ceil(mapBounds.height / SECTOR_SIZE);
33
34
  this.sectors = new Array(this.sectorsX);
34
35
  for (let xx = 0; xx < this.sectorsX; ++xx) {
35
36
  this.sectors[xx] = new Array(this.sectorsY);
36
37
  for (let yy = 0; yy < this.sectorsY; ++yy) {
37
- this.sectors[xx][yy] = new Sector({ x: xx * SECTOR_SIZE, y: yy * SECTOR_SIZE }, mapApi.getTile(xx * SECTOR_SIZE, yy * SECTOR_SIZE), undefined, undefined);
38
+ const tileX = xx * SECTOR_SIZE;
39
+ const tileY = yy * SECTOR_SIZE;
40
+ this.sectors[xx][yy] = new Sector(new Vector2(tileX, tileY), mapApi.getTile(tileX, tileY), undefined, undefined);
38
41
  }
39
42
  }
40
43
  }
@@ -58,10 +61,7 @@ export class SectorCache {
58
61
  if (sector) {
59
62
  sector.sectorVisibilityLastCheckTick = currentGameTick;
60
63
  let sp = sector.sectorStartPoint;
61
- let ep = {
62
- x: sector.sectorStartPoint.x + SECTOR_SIZE,
63
- y: sector.sectorStartPoint.y + SECTOR_SIZE,
64
- };
64
+ let ep = new Vector2(sp.x + SECTOR_SIZE, sp.y + SECTOR_SIZE);
65
65
  let visibility = calculateAreaVisibility(mapApi, playerData, sp, ep);
66
66
  if (visibility.validTiles > 0) {
67
67
  sector.sectorVisibilityPct = visibility.visibleTiles / visibility.validTiles;
@@ -116,18 +116,15 @@ export class SectorCache {
116
116
  return this.sectors[sectorX][sectorY];
117
117
  }
118
118
  getSectorBounds() {
119
- return {
120
- x: this.sectorsX,
121
- y: this.sectorsY,
122
- };
119
+ return { width: this.sectorsX, height: this.sectorsY };
123
120
  }
124
121
  getSectorCoordinatesForWorldPosition(x, y) {
125
- if (x < 0 || x >= this.mapBounds.x || y < 0 || y >= this.mapBounds.y) {
122
+ if (x < 0 || x >= this.mapBounds.width || y < 0 || y >= this.mapBounds.height) {
126
123
  return undefined;
127
124
  }
128
125
  return {
129
126
  sectorX: Math.floor(x / SECTOR_SIZE),
130
- sectorY: Math.floor(y / SECTOR_SIZE)
127
+ sectorY: Math.floor(y / SECTOR_SIZE),
131
128
  };
132
129
  }
133
130
  getSectorForWorldPosition(x, y) {
@@ -1 +1 @@
1
- {"version":3,"file":"sector.js","sourceRoot":"","sources":["../../../../src/bot/logic/map/sector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sector.js","sourceRoot":"","sources":["../../../../src/bot/logic/map/sector.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAElD,OAAO,EAAkC,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAEnD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAE7B,MAAM,OAAO,MAAM;IAKf,YACW,gBAAyB,EACzB,eAAiC,EACjC,mBAAuC,EACvC,6BAAiD;QAHjD,qBAAgB,GAAhB,gBAAgB,CAAS;QACzB,oBAAe,GAAf,eAAe,CAAkB;QACjC,wBAAmB,GAAnB,mBAAmB,CAAoB;QACvC,kCAA6B,GAA7B,6BAA6B,CAAoB;QAExD,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;IACnC,CAAC;IAEM,kBAAkB,CAAC,WAAmB;QACzC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC;IAC5C,CAAC;IAED,8FAA8F;IACvF,wBAAwB,CAAC,WAAmB,EAAE,QAAgB,EAAE,KAAa;QAChF,IAAI,KAAK,IAAI,IAAI,CAAC,qBAAqB,EAAE;YACrC,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,IAAI,CAAC,oBAAoB,IAAI,WAAW,GAAG,IAAI,CAAC,oBAAoB,GAAG,QAAQ,EAAE;YACjF,OAAO,KAAK,CAAC;SAChB;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAED,MAAM,OAAO,WAAW;IAQpB,YAAY,MAAc,EAAE,SAAe;QAPnC,YAAO,GAAe,EAAE,CAAC;QAQ7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC;QAC1D,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE;YACvC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5C,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE;gBACvC,MAAM,KAAK,GAAG,EAAE,GAAG,WAAW,CAAC;gBAC/B,MAAM,KAAK,GAAG,EAAE,GAAG,WAAW,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,MAAM,CAC7B,IAAI,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EACzB,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAC5B,SAAS,EACT,SAAS,CACZ,CAAC;aACL;SACJ;IACL,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAEM,aAAa,CAAC,eAAuB,EAAE,kBAA0B,EAAE,MAAc,EAAE,UAAsB;QAC5G,IAAI,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,IAAI,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,IAAI,gBAAgB,GAAG,CAAC,CAAC;QAEzB,OAAO,gBAAgB,GAAG,kBAAkB,EAAE;YAC1C,IAAI,WAAW,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAC9B,WAAW,GAAG,CAAC,CAAC;gBAChB,EAAE,WAAW,CAAC;aACjB;YACD,IAAI,WAAW,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAC9B,WAAW,GAAG,CAAC,CAAC;gBAChB,WAAW,GAAG,CAAC,CAAC;aACnB;YACD,IAAI,MAAM,GAAuB,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAC1E,IAAI,MAAM,EAAE;gBACR,MAAM,CAAC,6BAA6B,GAAG,eAAe,CAAC;gBACvD,IAAI,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC;gBACjC,IAAI,EAAE,GAAG,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,WAAW,EAAE,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;gBAC7D,IAAI,UAAU,GAAG,uBAAuB,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACrE,IAAI,UAAU,CAAC,UAAU,GAAG,CAAC,EAAE;oBAC3B,MAAM,CAAC,mBAAmB,GAAG,UAAU,CAAC,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC;iBAChF;qBAAM;oBACH,MAAM,CAAC,mBAAmB,GAAG,SAAS,CAAC;iBAC1C;aACJ;YACD,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC;YACtC,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC;YACtC,EAAE,WAAW,CAAC;YACd,EAAE,gBAAgB,CAAC;SACtB;IACL,CAAC;IAED,wCAAwC;IACjC,oBAAoB,CAAC,2BAAmC;QAC3D,IAAI,OAAO,GAAG,CAAC,EACX,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE;YACvC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE;gBACvC,IAAI,MAAM,GAAW,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC1C,IACI,MAAM;oBACN,MAAM,CAAC,6BAA6B;oBACpC,MAAM,CAAC,6BAA6B,IAAI,2BAA2B,EACrE;oBACE,EAAE,OAAO,CAAC;iBACb;gBACD,EAAE,KAAK,CAAC;aACX;SACJ;QACD,OAAO,OAAO,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED;;OAEG;IACI,oBAAoB;QACvB,IAAI,OAAO,GAAG,CAAC,EACX,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE;YACvC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE;gBACvC,IAAI,MAAM,GAAW,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBAE1C,wBAAwB;gBACxB,IAAI,MAAM,CAAC,mBAAmB,IAAI,SAAS,EAAE;oBACzC,OAAO,IAAI,MAAM,CAAC,mBAAmB,CAAC;oBACtC,KAAK,IAAI,GAAG,CAAC;iBAChB;aACJ;SACJ;QACD,OAAO,OAAO,GAAG,KAAK,CAAC;IAC3B,CAAC;IAEM,SAAS,CAAC,OAAe,EAAE,OAAe;QAC7C,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;YACpF,OAAO,SAAS,CAAC;SACpB;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAEM,eAAe;QAClB,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3D,CAAC;IAEM,oCAAoC,CAAC,CAAS,EAAE,CAAS;QAC5D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YAC3E,OAAO,SAAS,CAAC;SACpB;QACD,OAAO;YACH,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,WAAW,CAAC;YACpC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,WAAW,CAAC;SACvC,CAAC;IACN,CAAC;IAEM,yBAAyB,CAAC,CAAS,EAAE,CAAS;QACjD,MAAM,iBAAiB,GAAG,IAAI,CAAC,oCAAoC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,iBAAiB,EAAE;YACpB,OAAO,SAAS,CAAC;SACpB;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAClF,CAAC;CACJ"}
@@ -0,0 +1,26 @@
1
+ // A basic mission requests specific units.
2
+ export class BasicMission {
3
+ constructor(uniqueName, priority = 1, squads = []) {
4
+ this.uniqueName = uniqueName;
5
+ this.priority = priority;
6
+ this.squads = squads;
7
+ }
8
+ getUniqueName() {
9
+ return this.uniqueName;
10
+ }
11
+ isActive() {
12
+ return true;
13
+ }
14
+ removeSquad(squad) {
15
+ this.squads = this.squads.filter((s) => s != squad);
16
+ }
17
+ addSquad(squad) {
18
+ if (!this.squads.find((s) => s == squad)) {
19
+ this.squads.push(squad);
20
+ }
21
+ }
22
+ getSquads() {
23
+ return this.squads;
24
+ }
25
+ onSquadAdded(gameApi, playerData, threatData) { }
26
+ }