actionconstructor.c 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368
  1. class ActionConstructor
  2. {
  3. bool ConstructActions( out array<ref ActionBase> actionsArray, out map<typename, ActionBase> actionNameActionMap )
  4. {
  5. TTypenameArray action_array_names = new TTypenameArray;
  6. RegisterActions(action_array_names);
  7. Sort(action_array_names,action_array_names.Count());
  8. actionsArray = new array<ref ActionBase>;
  9. actionNameActionMap = new map<typename, ActionBase>;
  10. ActionBase new_action;
  11. for(int i = 0; i < action_array_names.Count(); i++)
  12. {
  13. new_action = ActionBase.Cast(action_array_names[i].Spawn());
  14. if(new_action)
  15. {
  16. new_action.CreateConditionComponents();
  17. new_action.SetID(actionsArray.Count());
  18. actionsArray.Insert(new_action);
  19. actionNameActionMap.Insert(action_array_names[i], new_action);
  20. }
  21. }
  22. return true;
  23. }
  24. void RegisterActions(TTypenameArray actions)
  25. {
  26. // SingleUse Actions
  27. actions.Insert(ActionOpen);
  28. actions.Insert(ActionClose);
  29. actions.Insert(ActionConsumeSingle);
  30. actions.Insert(ActionForceConsumeSingle);
  31. actions.Insert(ActionMeasureTemperatureSelf);
  32. actions.Insert(ActionMeasureTemperatureTarget);
  33. actions.Insert(ActionDisinfectSelf);
  34. actions.Insert(ActionDisinfectTarget);
  35. actions.Insert(ActionPlugIn);
  36. actions.Insert(ActionTogglePlaceObject);
  37. actions.Insert(ActionTogglePlaceObjectDigging);
  38. actions.Insert(ActionTurnOnWhileInHands);
  39. actions.Insert(ActionTurnOffWhileInHands);
  40. actions.Insert(ActionPlantSeed);
  41. actions.Insert(ActionAttachSeeds);
  42. actions.Insert(ActionDisinfectPlantBit);
  43. actions.Insert(ActionTurnOnHeatpack);
  44. actions.Insert(ActionTurnOnTransmitter);
  45. actions.Insert(ActionTurnOffTransmitter);
  46. actions.Insert(ActionWashHandsItemContinuous);
  47. actions.Insert(ActionPlaceFireplaceIndoor);
  48. actions.Insert(ActionPlaceOvenIndoor);
  49. actions.Insert(ActionCreateIndoorFireplace);
  50. actions.Insert(ActionCreateGreenhouseGardenPlot);
  51. actions.Insert(ActionCreateIndoorOven);
  52. actions.Insert(ActionAttach);
  53. actions.Insert(ActionAttachOnProxy);
  54. actions.Insert(ActionAttachOnTrap);
  55. actions.Insert(ActionPlugTargetIntoThis);
  56. actions.Insert(ActionEmptySeedsPack);
  57. actions.Insert(ActionInjectSelf);
  58. actions.Insert(ActionInjectTarget);
  59. actions.Insert(ActionInjectEpinephrineSelf);
  60. actions.Insert(ActionInjectEpinephrineTarget);
  61. actions.Insert(ActionInjectMorphineSelf);
  62. actions.Insert(ActionInjectMorphineTarget);
  63. actions.Insert(ActionAttachOnSelection);
  64. actions.Insert(ActionTurnOnWeaponFlashlight);
  65. actions.Insert(ActionTurnOffWeaponFlashlight);
  66. actions.Insert(ActionNextCombinationLockDial);
  67. actions.Insert(ActionAttachToConstruction);
  68. actions.Insert(ActionClapBearTrapWithThisItem);
  69. actions.Insert(ActionDisarmMine);
  70. actions.Insert(ActionPlaceFireplaceIntoBarrel);
  71. actions.Insert(ActionStopEngine);
  72. actions.Insert(ActionStopEngineBoat);
  73. actions.Insert(ActionUnfoldMap);
  74. actions.Insert(ActionFoldMap);
  75. actions.Insert(ActionDropItem);
  76. actions.Insert(ActionDropItemSimple);
  77. actions.Insert(ActionSwitchSeats);
  78. actions.Insert(ActionTurnOnHeadtorch);
  79. actions.Insert(ActionTurnOffHeadtorch);
  80. actions.Insert(ActionTurnOnHelmetFlashlight);
  81. actions.Insert(ActionTurnOffHelmetFlashlight);
  82. actions.Insert(ActionToggleNVG);
  83. actions.Insert(ActionAttachOnTentProxy);
  84. actions.Insert(ActionTriggerRemotely);
  85. actions.Insert(ActionDisarmExplosive);
  86. actions.Insert(ActionDisarmExplosiveWithRemoteDetonator);
  87. actions.Insert(ActionDisarmExplosiveWithRemoteDetonatorUnpaired);
  88. actions.Insert(ActionEatPillFromBottle);
  89. actions.Insert(ActionEatTabletFromWrapper);
  90. // Continuous use actions
  91. actions.Insert(ActionWorldCraft);
  92. actions.Insert(ActionCraftImprovisedHandsCover);
  93. actions.Insert(ActionCraftImprovisedHeadCover);
  94. actions.Insert(ActionCraftImprovisedFeetCover);
  95. actions.Insert(ActionCraftImprovisedFaceCover);
  96. actions.Insert(ActionCraftImprovisedTorsoCover);
  97. actions.Insert(ActionCraftImprovisedLegsCover);
  98. actions.Insert(ActionCraftImprovisedEyePatch);
  99. actions.Insert(ActionCraftRopeBelt);
  100. actions.Insert(ActionDeCraftRopeBelt);
  101. actions.Insert(ActionCraftBoneKnife);
  102. actions.Insert(ActionCraftArmband);
  103. actions.Insert(ActionCraftBoneKnifeEnv);
  104. actions.Insert(ActionCraftStoneKnifeEnv);
  105. actions.Insert(ActionSkinning);
  106. actions.Insert(ActionPlaceObject);
  107. actions.Insert(ActionDeployObject);
  108. actions.Insert(ActionDeployHuntingTrap);
  109. actions.Insert(ActionMineTree);
  110. actions.Insert(ActionMineBush);
  111. actions.Insert(ActionMineRock);
  112. actions.Insert(ActionMineRock1H);
  113. actions.Insert(ActionDigGardenPlot);
  114. actions.Insert(ActionDismantleGardenPlot);
  115. actions.Insert(ActionWaterPlant);
  116. actions.Insert(ActionFertilizeSlot);
  117. actions.Insert(ActionDisinfectPlant);
  118. actions.Insert(ActionFillObject);
  119. actions.Insert(ActionDefibrilateSelf);
  120. actions.Insert(ActionDefibrilateTarget);
  121. actions.Insert(ActionTestBloodSelf);
  122. actions.Insert(ActionTestBloodTarget);
  123. actions.Insert(ActionGiveBloodSelf);
  124. actions.Insert(ActionGiveBloodTarget);
  125. actions.Insert(ActionGiveSalineSelf);
  126. actions.Insert(ActionGiveSalineTarget);
  127. actions.Insert(ActionCollectBloodSelf);
  128. actions.Insert(ActionCollectBloodTarget);
  129. actions.Insert(ActionCollectSampleSelf);
  130. actions.Insert(ActionCollectSampleTarget);
  131. actions.Insert(ActionCoverHeadSelf);
  132. actions.Insert(ActionUncoverHeadSelf);
  133. actions.Insert(ActionCoverHeadTarget);
  134. actions.Insert(ActionShave);
  135. actions.Insert(ActionSplintSelf);
  136. actions.Insert(ActionSplintTarget);
  137. actions.Insert(ActionForceDrink);
  138. actions.Insert(ActionForceFeed);
  139. actions.Insert(ActionForceFeedSmall);
  140. actions.Insert(ActionEatBig);
  141. actions.Insert(ActionEatMeat);
  142. actions.Insert(ActionEatFruit);
  143. actions.Insert(ActionDrink);
  144. actions.Insert(ActionDrinkCookingPot);
  145. actions.Insert(ActionBandageSelf);
  146. actions.Insert(ActionBandageTarget);
  147. actions.Insert(ActionRestrainTarget);
  148. actions.Insert(ActionRestrainSelf);
  149. actions.Insert(ActionUnrestrainTarget);
  150. actions.Insert(ActionUnrestrainSelf);
  151. actions.Insert(ActionFillBottleBase);
  152. actions.Insert(ActionFillBottleSnow);
  153. actions.Insert(ActionUpgradeTorchFromGasPump);
  154. actions.Insert(ActionRefuelTorch);
  155. actions.Insert(ActionTuneFrequency);
  156. actions.Insert(ActionTuneRadioStation);
  157. actions.Insert(ActionIgniteFireplaceByAir);
  158. actions.Insert(ActionLightItemOnFire);
  159. actions.Insert(ActionLightItemOnFireWithBlowtorch);
  160. actions.Insert(ActionExtinguishFireplaceByLiquid);
  161. actions.Insert(ActionExtinguishFireplaceByExtinguisher);
  162. actions.Insert(ActionSewSelf);
  163. actions.Insert(ActionSewTarget);
  164. actions.Insert(ActionBuryAshes);
  165. actions.Insert(ActionCookOnStick);
  166. actions.Insert(ActionFillGeneratorTank);
  167. actions.Insert(ActionSawPlanks);
  168. actions.Insert(ActionBuryBody);
  169. actions.Insert(ActionEatCan);
  170. actions.Insert(ActionEatSmallCan);
  171. actions.Insert(ActionForceFeedCan);
  172. actions.Insert(ActionWaterGardenSlot);
  173. actions.Insert(ActionWringClothes);
  174. actions.Insert(ActionLoadMagazine);
  175. actions.Insert(ActionEmptyMagazine);
  176. actions.Insert(ActionBuildPart);
  177. actions.Insert(ActionActionBuildPartNoTool);
  178. actions.Insert(ActionDismantlePart);
  179. actions.Insert(ActionDestroyPart);
  180. actions.Insert(ActionCPR);
  181. actions.Insert(ActionDrinkPondContinuous);
  182. actions.Insert(ActionEatSnowContinuous);
  183. actions.Insert(ActionDrinkThroughContinuous);
  184. actions.Insert(ActionEat);
  185. actions.Insert(ActionEatSmall);
  186. actions.Insert(ActionMineTreeBark);
  187. actions.Insert(ActionDigWorms);
  188. actions.Insert(ActionShaveTarget);
  189. actions.Insert(ActionDrinkWellContinuous);
  190. actions.Insert(ActionUncoverHeadTarget);
  191. actions.Insert(ActionLockDoors);
  192. actions.Insert(ActionUnlockDoors);
  193. actions.Insert(ActionUnpackBox);
  194. actions.Insert(ActionWashHandsWater);
  195. actions.Insert(ActionWashHandsSnow);
  196. actions.Insert(ActionWashHandsWell);
  197. actions.Insert(ActionDrinkCan);
  198. actions.Insert(ActionBuildOven);
  199. actions.Insert(ActionDismantleOven);
  200. actions.Insert(ActionBuildStoneCircle);
  201. actions.Insert(ActionDismantleStoneCircle);
  202. actions.Insert(ActionFillFuel);
  203. actions.Insert(ActionDrainLiquid);
  204. actions.Insert(ActionPourLiquid);
  205. actions.Insert(ActionStartEngine);
  206. actions.Insert(ActionStartEngineBoat);
  207. actions.Insert(ActionRaiseMegaphone);
  208. actions.Insert(ActionActivateTrap);
  209. actions.Insert(ActionEmptyBottleBase);
  210. actions.Insert(ActionEmptyCookingPot);
  211. actions.Insert(ActionViewOptics);
  212. actions.Insert(ActionToggleNVMode);
  213. actions.Insert(ActionViewBinoculars);
  214. actions.Insert(ActionFoldBaseBuildingObject);
  215. actions.Insert(ActionMountBarbedWire);
  216. actions.Insert(ActionUnmountBarbedWire);
  217. actions.Insert(ActionDialCombinationLock);
  218. actions.Insert(ActionDialCombinationLockOnTarget);
  219. actions.Insert(ActionFillCoolant);
  220. actions.Insert(ActionFillOil);
  221. actions.Insert(ActionGagSelf);
  222. actions.Insert(ActionGagTarget);
  223. actions.Insert(ActionUngagSelf);
  224. actions.Insert(ActionUngagTarget);
  225. actions.Insert(ActionDigInStash);
  226. actions.Insert(ActionDigOutStash);
  227. actions.Insert(ActionMineBushByHand);
  228. actions.Insert(ActionBreakLongWoodenStick);
  229. actions.Insert(ActionFishingNew);
  230. actions.Insert(ActionRepairTent);
  231. actions.Insert(ActionRepairTentPart);
  232. actions.Insert(ActionRepairPart);
  233. actions.Insert(ActionRepairCarPart);
  234. actions.Insert(ActionRepairCarPartWithBlowtorch);
  235. actions.Insert(ActionRepairCarChassis);
  236. actions.Insert(ActionRepairBoatChassis);
  237. actions.Insert(ActionRepairCarChassisWithBlowtorch);
  238. actions.Insert(ActionRepairCarEngineWithBlowtorch);
  239. actions.Insert(ActionRepairBoatEngine);
  240. actions.Insert(ActionRepairShelter);
  241. actions.Insert(ActionRepairItemWithBlowtorch);
  242. actions.Insert(ActionLockAttachment);
  243. actions.Insert(ActionUnpackGift);
  244. actions.Insert(ActionPackGift);
  245. actions.Insert(ActionAttachExplosivesTrigger);
  246. actions.Insert(ActionArmExplosive);
  247. actions.Insert(ActionTurnValve);
  248. actions.Insert(ActionTurnValveUndergroundReservoir);
  249. actions.Insert(ActionEatCereal);
  250. actions.Insert(ActionUnlockShippingContainer);
  251. // Interact actions
  252. actions.Insert(ActionPullOutPlug);
  253. actions.Insert(ActionUnplugThisByCord);
  254. actions.Insert(ActionTurnOnWhileOnGround);
  255. actions.Insert(ActionTurnOffWhileOnGround);
  256. actions.Insert(ActionTurnOnPowerGenerator);
  257. actions.Insert(ActionTurnOffPowerGenerator);
  258. actions.Insert(ActionTurnOnSpotlight);
  259. actions.Insert(ActionTurnOffSpotlight);
  260. actions.Insert(ActionRemoveSeed);
  261. actions.Insert(ActionRemovePlant);
  262. actions.Insert(ActionHarvestCrops);
  263. actions.Insert(ActionFoldObject);
  264. actions.Insert(ActionRepositionPluggedItem);
  265. actions.Insert(ActionTurnOnTransmitterOnGround);
  266. actions.Insert(ActionTurnOffTransmitterOnGround);
  267. actions.Insert(ActionTuneFrequencyOnGround);
  268. actions.Insert(ActionToggleTentOpen);
  269. actions.Insert(ActionPackTent);
  270. actions.Insert(ActionOpenBarrel);
  271. actions.Insert(ActionCloseBarrel);
  272. actions.Insert(ActionOpenBarrelHoles);
  273. actions.Insert(ActionCloseBarrelHoles);
  274. actions.Insert(ActionOpenDoors);
  275. actions.Insert(ActionCloseDoors);
  276. actions.Insert(ActionLockedDoors);
  277. actions.Insert(ActionEnterLadder);
  278. actions.Insert(ActionExitLadder);
  279. actions.Insert(ActionGetInTransport);
  280. actions.Insert(ActionTakeItem);
  281. actions.Insert(ActionDetachPowerSourceFromPanel);
  282. actions.Insert(ActionSwapItemToHands);
  283. actions.Insert(ActionTakeItemToHands);
  284. actions.Insert(ActionOpenCarDoors);
  285. actions.Insert(ActionCloseCarDoors);
  286. actions.Insert(ActionOpenCarDoorsOutside);
  287. actions.Insert(ActionCloseCarDoorsOutside);
  288. actions.Insert(ActionGetOutTransport);
  289. actions.Insert(ActionAnimateSeats);
  290. actions.Insert(ActionSidePlateInteract);
  291. actions.Insert(ActionDetach);
  292. actions.Insert(ActionOpenFence);
  293. actions.Insert(ActionCloseFence);
  294. actions.Insert(ActionNextCombinationLockDialOnTarget);
  295. actions.Insert(ActionCheckPulseTarget);
  296. actions.Insert(ActionUnpin);
  297. actions.Insert(ActionPin);
  298. actions.Insert(ActionRaiseFlag);
  299. actions.Insert(ActionLowerFlag);
  300. actions.Insert(ActionDeconstructShelter);
  301. actions.Insert(ActionBuildShelter);
  302. actions.Insert(ActionDetachFromTarget);
  303. actions.Insert(ActionDetachFromTarget_SpecificSlot_WoodenLogs);
  304. actions.Insert(ActionDetachFromTarget_SpecificSlot_WoodenPlanks);
  305. actions.Insert(ActionDetachFromTarget_SpecificSlot_MetalSheets);
  306. actions.Insert(ActionDetachFromTarget_SpecificSlotsCategory_Barrel);
  307. actions.Insert(ActionDetachFromTarget_SpecificSlotsCategory_WoodenCrate);
  308. actions.Insert(ActionTakeArrow);
  309. actions.Insert(ActionTakeArrowToHands);
  310. actions.Insert(ActionOperatePanelPowerStation);
  311. //vehicle actions
  312. actions.Insert(ActionSwitchLights);
  313. actions.Insert(ActionCarHornShort);
  314. actions.Insert(ActionCarHornLong);
  315. actions.Insert(ActionPushCar);
  316. actions.Insert(ActionPushBoat);
  317. #ifdef DIAG_DEVELOPER
  318. //Instant action - debug
  319. actions.Insert(ActionDebug);
  320. #endif
  321. //Weapon
  322. actions.Insert(FirearmActionAttachMagazine);
  323. actions.Insert(FirearmActionLoadMultiBullet);
  324. actions.Insert(FirearmActionLoadBullet);
  325. actions.Insert(ActionLoadMagazineQuick);
  326. actions.Insert(FirearmActionAttachMagazineQuick);
  327. actions.Insert(FirearmActionMechanicManipulate);
  328. actions.Insert(FirearmActionUnjam);
  329. actions.Insert(FirearmActionDetachMagazine);
  330. actions.Insert(FirearmActionLoadBulletQuick);
  331. actions.Insert(FirearmActionLoadMultiBulletQuick);
  332. actions.Insert(FirearmActionLoadMultiBulletRadial);
  333. actions.Insert(ActionPullBodyFromTransport);
  334. actions.Insert(ActionSetAlarmClock);
  335. actions.Insert(ActionTurnOnAlarmClock);
  336. actions.Insert(ActionTurnOffAlarmClock);
  337. actions.Insert(ActionAttachWithSwitch);
  338. actions.Insert(ActionSetKitchenTimer);
  339. actions.Insert(ActionResetKitchenTimer);
  340. actions.Insert(ActionUseUndergroundPanel);
  341. actions.Insert(ActionUseUndergroundLever);
  342. actions.Insert(ActionUnrestrainTargetHands);
  343. actions.Insert(ActionCraftBolts);
  344. actions.Insert(ActionCraftBoltsFeather);
  345. actions.Insert(ActionDeCraftWitchHoodCoif);
  346. actions.Insert(ActionDeCraftDrysackBag);
  347. actions.Insert(ActionDummyContinuousRelease);
  348. }
  349. };