@nativewrappers/fivem 0.0.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 (421) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +33 -0
  3. package/lib/client/Audio.d.ts +17 -0
  4. package/lib/client/Audio.js +92 -0
  5. package/lib/client/Blip.d.ts +39 -0
  6. package/lib/client/Blip.js +104 -0
  7. package/lib/client/Camera.d.ts +46 -0
  8. package/lib/client/Camera.js +161 -0
  9. package/lib/client/Checkpoint.d.ts +18 -0
  10. package/lib/client/Checkpoint.js +42 -0
  11. package/lib/client/Events.d.ts +11 -0
  12. package/lib/client/Events.js +73 -0
  13. package/lib/client/Game.d.ts +283 -0
  14. package/lib/client/Game.js +451 -0
  15. package/lib/client/GameplayCamera.d.ts +102 -0
  16. package/lib/client/GameplayCamera.js +141 -0
  17. package/lib/client/Model.d.ts +134 -0
  18. package/lib/client/Model.js +198 -0
  19. package/lib/client/NetworkedScene.d.ts +10 -0
  20. package/lib/client/NetworkedScene.js +17 -0
  21. package/lib/client/ParticleEffect.d.ts +80 -0
  22. package/lib/client/ParticleEffect.js +120 -0
  23. package/lib/client/ParticleEffectAsset.d.ts +54 -0
  24. package/lib/client/ParticleEffectAsset.js +104 -0
  25. package/lib/client/Pickup.d.ts +9 -0
  26. package/lib/client/Pickup.js +18 -0
  27. package/lib/client/Raycast.d.ts +49 -0
  28. package/lib/client/Raycast.js +70 -0
  29. package/lib/client/RelationshipGroup.d.ts +49 -0
  30. package/lib/client/RelationshipGroup.js +63 -0
  31. package/lib/client/Rope.d.ts +99 -0
  32. package/lib/client/Rope.js +125 -0
  33. package/lib/client/TaskSequence.d.ts +15 -0
  34. package/lib/client/TaskSequence.js +43 -0
  35. package/lib/client/Tasks.d.ts +66 -0
  36. package/lib/client/Tasks.js +236 -0
  37. package/lib/client/World.d.ts +402 -0
  38. package/lib/client/World.js +726 -0
  39. package/lib/client/cfx/StateBagChangeHandler.d.ts +3 -0
  40. package/lib/client/cfx/StateBagChangeHandler.js +1 -0
  41. package/lib/client/cfx/index.d.ts +7 -0
  42. package/lib/client/cfx/index.js +1 -0
  43. package/lib/client/enums/Alignment.d.ts +5 -0
  44. package/lib/client/enums/Alignment.js +6 -0
  45. package/lib/client/enums/AnimationFlags.d.ts +9 -0
  46. package/lib/client/enums/AnimationFlags.js +10 -0
  47. package/lib/client/enums/AudioFlag.d.ts +37 -0
  48. package/lib/client/enums/AudioFlag.js +38 -0
  49. package/lib/client/enums/BadgeStyle.d.ts +182 -0
  50. package/lib/client/enums/BadgeStyle.js +183 -0
  51. package/lib/client/enums/Blip.d.ts +223 -0
  52. package/lib/client/enums/Blip.js +225 -0
  53. package/lib/client/enums/Bone.d.ts +101 -0
  54. package/lib/client/enums/Bone.js +103 -0
  55. package/lib/client/enums/CameraShake.d.ts +13 -0
  56. package/lib/client/enums/CameraShake.js +14 -0
  57. package/lib/client/enums/CameraTypes.d.ts +7 -0
  58. package/lib/client/enums/CameraTypes.js +8 -0
  59. package/lib/client/enums/CheckboxStyle.d.ts +4 -0
  60. package/lib/client/enums/CheckboxStyle.js +5 -0
  61. package/lib/client/enums/Checkpoint.d.ts +62 -0
  62. package/lib/client/enums/Checkpoint.js +67 -0
  63. package/lib/client/enums/ClassTypes.d.ts +11 -0
  64. package/lib/client/enums/ClassTypes.js +12 -0
  65. package/lib/client/enums/CloudHat.d.ts +26 -0
  66. package/lib/client/enums/CloudHat.js +27 -0
  67. package/lib/client/enums/Control.d.ts +360 -0
  68. package/lib/client/enums/Control.js +361 -0
  69. package/lib/client/enums/CursorSprite.d.ts +14 -0
  70. package/lib/client/enums/CursorSprite.js +15 -0
  71. package/lib/client/enums/Driving.d.ts +32 -0
  72. package/lib/client/enums/Driving.js +34 -0
  73. package/lib/client/enums/ExplosionType.d.ts +44 -0
  74. package/lib/client/enums/ExplosionType.js +45 -0
  75. package/lib/client/enums/FiringPattern.d.ts +19 -0
  76. package/lib/client/enums/FiringPattern.js +20 -0
  77. package/lib/client/enums/Font.d.ts +7 -0
  78. package/lib/client/enums/Font.js +8 -0
  79. package/lib/client/enums/ForceType.d.ts +8 -0
  80. package/lib/client/enums/ForceType.js +9 -0
  81. package/lib/client/enums/Gender.d.ts +4 -0
  82. package/lib/client/enums/Gender.js +5 -0
  83. package/lib/client/enums/HelmetType.d.ts +5 -0
  84. package/lib/client/enums/HelmetType.js +6 -0
  85. package/lib/client/enums/HudColor.d.ts +183 -0
  86. package/lib/client/enums/HudColor.js +184 -0
  87. package/lib/client/enums/HudComponent.d.ts +53 -0
  88. package/lib/client/enums/HudComponent.js +54 -0
  89. package/lib/client/enums/InputMode.d.ts +4 -0
  90. package/lib/client/enums/InputMode.js +5 -0
  91. package/lib/client/enums/IntersectOptions.d.ts +15 -0
  92. package/lib/client/enums/IntersectOptions.js +16 -0
  93. package/lib/client/enums/InvertAxis.d.ts +9 -0
  94. package/lib/client/enums/InvertAxis.js +7 -0
  95. package/lib/client/enums/Language.d.ts +14 -0
  96. package/lib/client/enums/Language.js +15 -0
  97. package/lib/client/enums/LeaveVehicleFlags.d.ts +10 -0
  98. package/lib/client/enums/LeaveVehicleFlags.js +11 -0
  99. package/lib/client/enums/LoadingSpinnerType.d.ts +7 -0
  100. package/lib/client/enums/LoadingSpinnerType.js +8 -0
  101. package/lib/client/enums/MarkerType.d.ts +49 -0
  102. package/lib/client/enums/MarkerType.js +50 -0
  103. package/lib/client/enums/MenuAlignment.d.ts +4 -0
  104. package/lib/client/enums/MenuAlignment.js +5 -0
  105. package/lib/client/enums/NotificationType.d.ts +10 -0
  106. package/lib/client/enums/NotificationType.js +11 -0
  107. package/lib/client/enums/Parachute.d.ts +13 -0
  108. package/lib/client/enums/Parachute.js +15 -0
  109. package/lib/client/enums/PickupType.d.ts +73 -0
  110. package/lib/client/enums/PickupType.js +74 -0
  111. package/lib/client/enums/RadioStation.d.ts +24 -0
  112. package/lib/client/enums/RadioStation.js +25 -0
  113. package/lib/client/enums/RagdollType.d.ts +6 -0
  114. package/lib/client/enums/RagdollType.js +7 -0
  115. package/lib/client/enums/Relationship.d.ts +9 -0
  116. package/lib/client/enums/Relationship.js +10 -0
  117. package/lib/client/enums/RopeType.d.ts +5 -0
  118. package/lib/client/enums/RopeType.js +6 -0
  119. package/lib/client/enums/ScreenEffect.d.ts +83 -0
  120. package/lib/client/enums/ScreenEffect.js +84 -0
  121. package/lib/client/enums/SpeechModifier.d.ts +39 -0
  122. package/lib/client/enums/SpeechModifier.js +40 -0
  123. package/lib/client/enums/Vehicle.d.ts +358 -0
  124. package/lib/client/enums/Vehicle.js +376 -0
  125. package/lib/client/enums/Weather.d.ts +21 -0
  126. package/lib/client/enums/Weather.js +22 -0
  127. package/lib/client/enums/ZoneID.d.ts +94 -0
  128. package/lib/client/enums/ZoneID.js +95 -0
  129. package/lib/client/enums/index.d.ts +42 -0
  130. package/lib/client/enums/index.js +42 -0
  131. package/lib/client/hashes/MaterialHash.d.ts +216 -0
  132. package/lib/client/hashes/MaterialHash.js +217 -0
  133. package/lib/client/hashes/PedHash.d.ts +724 -0
  134. package/lib/client/hashes/PedHash.js +725 -0
  135. package/lib/client/hashes/VehicleHash.d.ts +522 -0
  136. package/lib/client/hashes/VehicleHash.js +523 -0
  137. package/lib/client/hashes/WeaponHash.d.ts +147 -0
  138. package/lib/client/hashes/WeaponHash.js +161 -0
  139. package/lib/client/hashes/WeatherTypeHash.d.ts +21 -0
  140. package/lib/client/hashes/WeatherTypeHash.js +22 -0
  141. package/lib/client/hashes/index.d.ts +5 -0
  142. package/lib/client/hashes/index.js +5 -0
  143. package/lib/client/index.d.ts +24 -0
  144. package/lib/client/index.js +25 -0
  145. package/lib/client/interfaces/Dimensions.d.ts +5 -0
  146. package/lib/client/interfaces/Dimensions.js +1 -0
  147. package/lib/client/models/BaseEntity.d.ts +169 -0
  148. package/lib/client/models/BaseEntity.js +459 -0
  149. package/lib/client/models/Entity.d.ts +9 -0
  150. package/lib/client/models/Entity.js +24 -0
  151. package/lib/client/models/EntityBone.d.ts +12 -0
  152. package/lib/client/models/EntityBone.js +24 -0
  153. package/lib/client/models/EntityBoneCollection.d.ts +11 -0
  154. package/lib/client/models/EntityBoneCollection.js +16 -0
  155. package/lib/client/models/Ped.d.ts +199 -0
  156. package/lib/client/models/Ped.js +685 -0
  157. package/lib/client/models/PedBone.d.ts +6 -0
  158. package/lib/client/models/PedBone.js +9 -0
  159. package/lib/client/models/PedBoneCollection.d.ts +8 -0
  160. package/lib/client/models/PedBoneCollection.js +19 -0
  161. package/lib/client/models/Player.d.ts +63 -0
  162. package/lib/client/models/Player.js +174 -0
  163. package/lib/client/models/Prop.d.ts +11 -0
  164. package/lib/client/models/Prop.js +26 -0
  165. package/lib/client/models/Vehicle.d.ts +171 -0
  166. package/lib/client/models/Vehicle.js +551 -0
  167. package/lib/client/models/VehicleDoor.d.ts +19 -0
  168. package/lib/client/models/VehicleDoor.js +42 -0
  169. package/lib/client/models/VehicleDoorCollection.d.ts +14 -0
  170. package/lib/client/models/VehicleDoorCollection.js +61 -0
  171. package/lib/client/models/VehicleMod.d.ts +16 -0
  172. package/lib/client/models/VehicleMod.js +33 -0
  173. package/lib/client/models/VehicleModCollection.d.ts +61 -0
  174. package/lib/client/models/VehicleModCollection.js +227 -0
  175. package/lib/client/models/VehicleToggleMod.d.ts +14 -0
  176. package/lib/client/models/VehicleToggleMod.js +27 -0
  177. package/lib/client/models/VehicleWheel.d.ts +11 -0
  178. package/lib/client/models/VehicleWheel.js +21 -0
  179. package/lib/client/models/VehicleWheelCollection.d.ts +13 -0
  180. package/lib/client/models/VehicleWheelCollection.js +56 -0
  181. package/lib/client/models/VehicleWindow.d.ts +16 -0
  182. package/lib/client/models/VehicleWindow.js +33 -0
  183. package/lib/client/models/VehicleWindowCollection.d.ts +14 -0
  184. package/lib/client/models/VehicleWindowCollection.js +55 -0
  185. package/lib/client/models/index.d.ts +18 -0
  186. package/lib/client/models/index.js +18 -0
  187. package/lib/client/types/EntityType.d.ts +2 -0
  188. package/lib/client/types/EntityType.js +1 -0
  189. package/lib/client/ui/Container.d.ts +11 -0
  190. package/lib/client/ui/Container.js +28 -0
  191. package/lib/client/ui/Effects.d.ts +8 -0
  192. package/lib/client/ui/Effects.js +106 -0
  193. package/lib/client/ui/Fading.d.ts +41 -0
  194. package/lib/client/ui/Fading.js +69 -0
  195. package/lib/client/ui/Hud.d.ts +16 -0
  196. package/lib/client/ui/Hud.js +39 -0
  197. package/lib/client/ui/InstructionalButtons.d.ts +33 -0
  198. package/lib/client/ui/InstructionalButtons.js +53 -0
  199. package/lib/client/ui/LoadingPrompt.d.ts +27 -0
  200. package/lib/client/ui/LoadingPrompt.js +45 -0
  201. package/lib/client/ui/Notification.d.ts +5 -0
  202. package/lib/client/ui/Notification.js +8 -0
  203. package/lib/client/ui/Rectangle.d.ts +10 -0
  204. package/lib/client/ui/Rectangle.js +37 -0
  205. package/lib/client/ui/Scaleform.d.ts +106 -0
  206. package/lib/client/ui/Scaleform.js +234 -0
  207. package/lib/client/ui/Screen.d.ts +16 -0
  208. package/lib/client/ui/Screen.js +72 -0
  209. package/lib/client/ui/Sprite.d.ts +17 -0
  210. package/lib/client/ui/Sprite.js +53 -0
  211. package/lib/client/ui/Text.d.ts +31 -0
  212. package/lib/client/ui/Text.js +102 -0
  213. package/lib/client/ui/Timerbar.d.ts +44 -0
  214. package/lib/client/ui/Timerbar.js +241 -0
  215. package/lib/client/ui/index.d.ts +15 -0
  216. package/lib/client/ui/index.js +15 -0
  217. package/lib/client/ui/interfaces/IButton.d.ts +5 -0
  218. package/lib/client/ui/interfaces/IButton.js +1 -0
  219. package/lib/client/ui/interfaces/IDrawable.d.ts +7 -0
  220. package/lib/client/ui/interfaces/IDrawable.js +1 -0
  221. package/lib/client/ui/interfaces/index.d.ts +2 -0
  222. package/lib/client/ui/interfaces/index.js +1 -0
  223. package/lib/client/ui/menu/Menu.d.ts +108 -0
  224. package/lib/client/ui/menu/Menu.js +802 -0
  225. package/lib/client/ui/menu/MenuControl.d.ts +6 -0
  226. package/lib/client/ui/menu/MenuControl.js +11 -0
  227. package/lib/client/ui/menu/MenuControls.d.ts +9 -0
  228. package/lib/client/ui/menu/MenuControls.js +11 -0
  229. package/lib/client/ui/menu/MenuSettings.d.ts +20 -0
  230. package/lib/client/ui/menu/MenuSettings.js +51 -0
  231. package/lib/client/ui/menu/index.d.ts +6 -0
  232. package/lib/client/ui/menu/index.js +6 -0
  233. package/lib/client/ui/menu/items/UIMenuCheckboxItem.d.ts +20 -0
  234. package/lib/client/ui/menu/items/UIMenuCheckboxItem.js +57 -0
  235. package/lib/client/ui/menu/items/UIMenuItem.d.ts +78 -0
  236. package/lib/client/ui/menu/items/UIMenuItem.js +1090 -0
  237. package/lib/client/ui/menu/items/UIMenuListItem.d.ts +31 -0
  238. package/lib/client/ui/menu/items/UIMenuListItem.js +110 -0
  239. package/lib/client/ui/menu/items/UIMenuSeparatorItem.d.ts +11 -0
  240. package/lib/client/ui/menu/items/UIMenuSeparatorItem.js +29 -0
  241. package/lib/client/ui/menu/items/UIMenuSliderItem.d.ts +47 -0
  242. package/lib/client/ui/menu/items/UIMenuSliderItem.js +173 -0
  243. package/lib/client/ui/menu/items/index.d.ts +6 -0
  244. package/lib/client/ui/menu/items/index.js +6 -0
  245. package/lib/client/ui/menu/items/panels/AbstractUIMenuPanel.d.ts +17 -0
  246. package/lib/client/ui/menu/items/panels/AbstractUIMenuPanel.js +43 -0
  247. package/lib/client/ui/menu/items/panels/UIMenuColorPanel.d.ts +36 -0
  248. package/lib/client/ui/menu/items/panels/UIMenuColorPanel.js +211 -0
  249. package/lib/client/ui/menu/items/panels/UIMenuGridPanel.d.ts +40 -0
  250. package/lib/client/ui/menu/items/panels/UIMenuGridPanel.js +215 -0
  251. package/lib/client/ui/menu/items/panels/UIMenuPercentagePanel.d.ts +26 -0
  252. package/lib/client/ui/menu/items/panels/UIMenuPercentagePanel.js +115 -0
  253. package/lib/client/ui/menu/items/panels/UIMenuStatisticsPanel.d.ts +16 -0
  254. package/lib/client/ui/menu/items/panels/UIMenuStatisticsPanel.js +77 -0
  255. package/lib/client/ui/menu/items/panels/UIMenuStatisticsPanelItem.d.ts +13 -0
  256. package/lib/client/ui/menu/items/panels/UIMenuStatisticsPanelItem.js +32 -0
  257. package/lib/client/ui/menu/items/panels/index.d.ts +6 -0
  258. package/lib/client/ui/menu/items/panels/index.js +6 -0
  259. package/lib/client/ui/menu/modules/ListItem.d.ts +6 -0
  260. package/lib/client/ui/menu/modules/ListItem.js +8 -0
  261. package/lib/client/ui/menu/modules/index.d.ts +1 -0
  262. package/lib/client/ui/menu/modules/index.js +1 -0
  263. package/lib/client/utils/Animations.d.ts +19 -0
  264. package/lib/client/utils/Animations.js +55 -0
  265. package/lib/client/utils/Color.d.ts +15 -0
  266. package/lib/client/utils/Color.js +22 -0
  267. package/lib/client/utils/Crypto.d.ts +3 -0
  268. package/lib/client/utils/Crypto.js +25 -0
  269. package/lib/client/utils/LiteEvent.d.ts +13 -0
  270. package/lib/client/utils/LiteEvent.js +21 -0
  271. package/lib/client/utils/Maths.d.ts +4 -0
  272. package/lib/client/utils/Maths.js +10 -0
  273. package/lib/client/utils/Point.d.ts +9 -0
  274. package/lib/client/utils/Point.js +28 -0
  275. package/lib/client/utils/PointF.d.ts +12 -0
  276. package/lib/client/utils/PointF.js +11 -0
  277. package/lib/client/utils/Quaternion.d.ts +10 -0
  278. package/lib/client/utils/Quaternion.js +23 -0
  279. package/lib/client/utils/Size.d.ts +5 -0
  280. package/lib/client/utils/Size.js +6 -0
  281. package/lib/client/utils/String.d.ts +6 -0
  282. package/lib/client/utils/String.js +25 -0
  283. package/lib/client/utils/Vector2.d.ts +54 -0
  284. package/lib/client/utils/Vector2.js +106 -0
  285. package/lib/client/utils/Vector3.d.ts +69 -0
  286. package/lib/client/utils/Vector3.js +140 -0
  287. package/lib/client/utils/Vector4.d.ts +62 -0
  288. package/lib/client/utils/Vector4.js +124 -0
  289. package/lib/client/utils/enumValues.d.ts +12 -0
  290. package/lib/client/utils/enumValues.js +14 -0
  291. package/lib/client/utils/getStringFromUInt8Array.d.ts +8 -0
  292. package/lib/client/utils/getStringFromUInt8Array.js +10 -0
  293. package/lib/client/utils/getUInt32FromUint8Array.d.ts +8 -0
  294. package/lib/client/utils/getUInt32FromUint8Array.js +8 -0
  295. package/lib/client/utils/index.d.ts +10 -0
  296. package/lib/client/utils/index.js +10 -0
  297. package/lib/client/weapon/DlcWeaponData.d.ts +43 -0
  298. package/lib/client/weapon/DlcWeaponData.js +44 -0
  299. package/lib/client/weapon/Mk2WeaponHash.d.ts +18 -0
  300. package/lib/client/weapon/Mk2WeaponHash.js +25 -0
  301. package/lib/client/weapon/Weapon.d.ts +169 -0
  302. package/lib/client/weapon/Weapon.js +267 -0
  303. package/lib/client/weapon/WeaponAsset.d.ts +55 -0
  304. package/lib/client/weapon/WeaponAsset.js +83 -0
  305. package/lib/client/weapon/WeaponCollection.d.ts +90 -0
  306. package/lib/client/weapon/WeaponCollection.js +186 -0
  307. package/lib/client/weapon/WeaponDisplayNameByHash.d.ts +6 -0
  308. package/lib/client/weapon/WeaponDisplayNameByHash.js +75 -0
  309. package/lib/client/weapon/WeaponGroup.d.ts +18 -0
  310. package/lib/client/weapon/WeaponGroup.js +19 -0
  311. package/lib/client/weapon/WeaponHudStats.d.ts +27 -0
  312. package/lib/client/weapon/WeaponHudStats.js +38 -0
  313. package/lib/client/weapon/WeaponLivery.d.ts +13 -0
  314. package/lib/client/weapon/WeaponLivery.js +14 -0
  315. package/lib/client/weapon/WeaponLiveryColor.d.ts +34 -0
  316. package/lib/client/weapon/WeaponLiveryColor.js +35 -0
  317. package/lib/client/weapon/WeaponTint.d.ts +42 -0
  318. package/lib/client/weapon/WeaponTint.js +43 -0
  319. package/lib/client/weapon/index.d.ts +8 -0
  320. package/lib/client/weapon/index.js +8 -0
  321. package/lib/client/weaponComponent/ComponentAttachmentPoint.d.ts +18 -0
  322. package/lib/client/weaponComponent/ComponentAttachmentPoint.js +19 -0
  323. package/lib/client/weaponComponent/ComponentAttachmentPointByHash.d.ts +7 -0
  324. package/lib/client/weaponComponent/ComponentAttachmentPointByHash.js +309 -0
  325. package/lib/client/weaponComponent/ComponentDisplayNameByHash.d.ts +6 -0
  326. package/lib/client/weaponComponent/ComponentDisplayNameByHash.js +280 -0
  327. package/lib/client/weaponComponent/DlcWeaponComponentData.d.ts +40 -0
  328. package/lib/client/weaponComponent/DlcWeaponComponentData.js +44 -0
  329. package/lib/client/weaponComponent/InvalidWeaponComponent.d.ts +12 -0
  330. package/lib/client/weaponComponent/InvalidWeaponComponent.js +28 -0
  331. package/lib/client/weaponComponent/WeaponComponent.d.ts +81 -0
  332. package/lib/client/weaponComponent/WeaponComponent.js +119 -0
  333. package/lib/client/weaponComponent/WeaponComponentCollection.d.ts +108 -0
  334. package/lib/client/weaponComponent/WeaponComponentCollection.js +172 -0
  335. package/lib/client/weaponComponent/WeaponComponentHash.d.ts +671 -0
  336. package/lib/client/weaponComponent/WeaponComponentHash.js +887 -0
  337. package/lib/client/weaponComponent/WeaponComponentHashesByWeaponHash.d.ts +8 -0
  338. package/lib/client/weaponComponent/WeaponComponentHashesByWeaponHash.js +823 -0
  339. package/lib/client/weaponComponent/WeaponComponentHudStats.d.ts +27 -0
  340. package/lib/client/weaponComponent/WeaponComponentHudStats.js +34 -0
  341. package/lib/client/weaponComponent/index.d.ts +5 -0
  342. package/lib/client/weaponComponent/index.js +5 -0
  343. package/lib/common/Convar.d.ts +8 -0
  344. package/lib/common/Convar.js +20 -0
  345. package/lib/common/Kvp.d.ts +91 -0
  346. package/lib/common/Kvp.js +161 -0
  347. package/lib/common/Resource.d.ts +14 -0
  348. package/lib/common/Resource.js +35 -0
  349. package/lib/common/index.d.ts +5 -0
  350. package/lib/common/index.js +5 -0
  351. package/lib/common/types.d.ts +6 -0
  352. package/lib/common/types.js +1 -0
  353. package/lib/common/utils/Color.d.ts +10 -0
  354. package/lib/common/utils/Color.js +17 -0
  355. package/lib/common/utils/Maths.d.ts +4 -0
  356. package/lib/common/utils/Maths.js +10 -0
  357. package/lib/common/utils/PointF.d.ts +12 -0
  358. package/lib/common/utils/PointF.js +11 -0
  359. package/lib/common/utils/Quaternion.d.ts +10 -0
  360. package/lib/common/utils/Quaternion.js +23 -0
  361. package/lib/common/utils/Vector2.d.ts +58 -0
  362. package/lib/common/utils/Vector2.js +113 -0
  363. package/lib/common/utils/Vector3.d.ts +73 -0
  364. package/lib/common/utils/Vector3.js +147 -0
  365. package/lib/common/utils/Vector4.d.ts +66 -0
  366. package/lib/common/utils/Vector4.js +131 -0
  367. package/lib/common/utils/cleanPlayerName.d.ts +6 -0
  368. package/lib/common/utils/cleanPlayerName.js +27 -0
  369. package/lib/common/utils/enumValues.d.ts +12 -0
  370. package/lib/common/utils/enumValues.js +14 -0
  371. package/lib/common/utils/getStringFromUInt8Array.d.ts +8 -0
  372. package/lib/common/utils/getStringFromUInt8Array.js +10 -0
  373. package/lib/common/utils/getUInt32FromUint8Array.d.ts +8 -0
  374. package/lib/common/utils/getUInt32FromUint8Array.js +8 -0
  375. package/lib/common/utils/index.d.ts +12 -0
  376. package/lib/common/utils/index.js +12 -0
  377. package/lib/server/Anticheat.d.ts +0 -0
  378. package/lib/server/Anticheat.js +25 -0
  379. package/lib/server/Events.d.ts +35 -0
  380. package/lib/server/Events.js +102 -0
  381. package/lib/server/Game.d.ts +56 -0
  382. package/lib/server/Game.js +86 -0
  383. package/lib/server/cfx/StateBagChangeHandler.d.ts +9 -0
  384. package/lib/server/cfx/StateBagChangeHandler.js +4 -0
  385. package/lib/server/cfx/index.d.ts +7 -0
  386. package/lib/server/cfx/index.js +1 -0
  387. package/lib/server/entities/BaseEntity.d.ts +115 -0
  388. package/lib/server/entities/BaseEntity.js +161 -0
  389. package/lib/server/entities/Entity.d.ts +18 -0
  390. package/lib/server/entities/Entity.js +22 -0
  391. package/lib/server/entities/Ped.d.ts +87 -0
  392. package/lib/server/entities/Ped.js +122 -0
  393. package/lib/server/entities/Player.d.ts +163 -0
  394. package/lib/server/entities/Player.js +235 -0
  395. package/lib/server/entities/Prop.d.ts +32 -0
  396. package/lib/server/entities/Prop.js +42 -0
  397. package/lib/server/entities/Vehicle.d.ts +230 -0
  398. package/lib/server/entities/Vehicle.js +331 -0
  399. package/lib/server/entities/index.d.ts +5 -0
  400. package/lib/server/entities/index.js +5 -0
  401. package/lib/server/enum/ClassTypes.d.ts +11 -0
  402. package/lib/server/enum/ClassTypes.js +12 -0
  403. package/lib/server/enum/PopulationType.d.ts +13 -0
  404. package/lib/server/enum/PopulationType.js +14 -0
  405. package/lib/server/enum/VehicleLockStatus.d.ts +9 -0
  406. package/lib/server/enum/VehicleLockStatus.js +10 -0
  407. package/lib/server/enum/VehicleType.d.ts +10 -0
  408. package/lib/server/enum/VehicleType.js +11 -0
  409. package/lib/server/enum/eEntityType.d.ts +5 -0
  410. package/lib/server/enum/eEntityType.js +6 -0
  411. package/lib/server/enum/index.d.ts +5 -0
  412. package/lib/server/enum/index.js +5 -0
  413. package/lib/server/index.d.ts +7 -0
  414. package/lib/server/index.js +7 -0
  415. package/lib/server/type/Anticheat.d.ts +471 -0
  416. package/lib/server/type/Anticheat.js +160 -0
  417. package/lib/server/type/Hash.d.ts +3 -0
  418. package/lib/server/type/Hash.js +2 -0
  419. package/lib/server/utils/index.d.ts +1 -0
  420. package/lib/server/utils/index.js +1 -0
  421. package/package.json +54 -0
@@ -0,0 +1,802 @@
1
+ import { Container, Hud, MenuControls, MenuSettings, Rectangle, Screen, Sprite, Text, UIMenuSeparatorItem, } from '../';
2
+ import { Audio, CursorSprite, Game, GameplayCamera, InputMode, Wait } from '../../';
3
+ import { Alignment, Control, Font, MenuAlignment } from '../../enums';
4
+ import { Color, Crypto, LiteEvent, Point, Size } from '../../utils';
5
+ import { UIMenuCheckboxItem, UIMenuItem, UIMenuListItem, UIMenuSliderItem } from './items';
6
+ export class Menu {
7
+ constructor(title, subtitle, offset = new Point(), spriteLibrary = 'commonmenu', spriteName = 'interaction_bgd') {
8
+ this.id = Crypto.uuidv4();
9
+ this.visible = false;
10
+ this.items = [];
11
+ this.children = new Map();
12
+ this.menuOpen = new LiteEvent();
13
+ this.menuClose = new LiteEvent();
14
+ this.menuChange = new LiteEvent();
15
+ this.indexChange = new LiteEvent();
16
+ this.listChange = new LiteEvent();
17
+ this.sliderChange = new LiteEvent();
18
+ this.checkboxChange = new LiteEvent();
19
+ this.listSelect = new LiteEvent();
20
+ this.sliderSelect = new LiteEvent();
21
+ this.itemSelect = new LiteEvent();
22
+ this.panelActivated = new LiteEvent();
23
+ this._counterPretext = '';
24
+ this._counterOverride = '';
25
+ this._alignment = MenuAlignment.Left;
26
+ this._navigationDelay = 140;
27
+ this._lastUpDownNavigation = 0;
28
+ this._lastLeftRightNavigation = 0;
29
+ this._activeItem = 1000;
30
+ this._widthOffset = 0;
31
+ this._drawOffset = new Point();
32
+ this._justOpened = true;
33
+ this._mousePressed = false;
34
+ this._minItem = 0;
35
+ this._maxItem = 9;
36
+ this._maxItemsOnScreen = this._maxItem;
37
+ this._controls = new MenuControls();
38
+ this._settings = new MenuSettings();
39
+ this._offset = offset;
40
+ // Create everything
41
+ this._mainMenu = new Container(new Point(), new Size(700, 500), Color.transparent);
42
+ this._logo = new Sprite(spriteLibrary || '', spriteName || '', new Point(this._offset.X, this._offset.Y), new Size(431, 107));
43
+ this._mainMenu.addItem([
44
+ (this._title = new Text(title || '', new Point(431 / 2 + this._offset.X, 20 + this._offset.Y), 1.15, Color.white, 1, Alignment.Centered)),
45
+ (this._subtitleResRectangle = new Rectangle(new Point(this._offset.X, 107 + this._offset.Y), new Size(431, 37), Color.black)),
46
+ (this._subtitle = new Text(subtitle || '', new Point(8 + this._offset.X, 110 + this._offset.Y), 0.35, Color.white, 0, Alignment.Left)),
47
+ ]);
48
+ if (this._subtitle.caption.startsWith('~')) {
49
+ this._counterPretext = this._subtitle.caption.substr(0, 3);
50
+ }
51
+ this._counterText = new Text('', new Point(425 + this._offset.X, 110 + this._offset.Y), 0.35, Color.white, 0, Alignment.Right);
52
+ this._upAndDownSprite = new Sprite('commonmenu', 'shop_arrows_upanddown', new Point(), new Size(50, 50));
53
+ const extraRectanglePos = new Point(this._offset.X);
54
+ const extraRectangleSize = new Size(431, 18);
55
+ const extraRectangleColor = new Color(200, 0, 0, 0);
56
+ this._extraRectangleUp = new Rectangle(extraRectanglePos, extraRectangleSize, extraRectangleColor);
57
+ this._extraRectangleDown = new Rectangle({ ...extraRectanglePos }, { ...extraRectangleSize }, { ...extraRectangleColor });
58
+ this._descriptionBar = new Rectangle(new Point(this._offset.X), new Size(431, 4), Color.black);
59
+ this._descriptionRectangle = new Sprite('commonmenu', 'gradient_bgd', new Point(this._offset.X), new Size(431, 30));
60
+ this._descriptionText = new Text('Description', new Point(this._offset.X + 8), 0.35, Color.white, Font.ChaletLondon, Alignment.Left);
61
+ this._background = new Sprite('commonmenu', 'gradient_bgd', new Point(this._offset.X, 144 + this._offset.Y), new Size(290, 25));
62
+ setTick(() => {
63
+ this._render();
64
+ });
65
+ }
66
+ set Title(text) {
67
+ this._title.caption = text;
68
+ }
69
+ get Title() {
70
+ return this._title.caption;
71
+ }
72
+ get TitleFont() {
73
+ return this._title.font;
74
+ }
75
+ set TitleFont(font) {
76
+ this._title.font = font;
77
+ }
78
+ set Subtitle(text) {
79
+ this._subtitle.caption = text;
80
+ }
81
+ get Subtitle() {
82
+ return this._subtitle.caption;
83
+ }
84
+ set SubtitleFont(font) {
85
+ this._subtitle.font = font;
86
+ }
87
+ get SubtitleFont() {
88
+ return this._subtitle.font;
89
+ }
90
+ set SubtitleForeColor(color) {
91
+ this._subtitle.color = color;
92
+ }
93
+ get SubtitleForeColor() {
94
+ return this._subtitle.color;
95
+ }
96
+ set SubtitleBackColor(color) {
97
+ this._subtitleResRectangle.color = color;
98
+ }
99
+ get SubtitleBackColor() {
100
+ return this._subtitleResRectangle.color;
101
+ }
102
+ get CurrentItem() {
103
+ return this.items[this._activeItem % this.items.length];
104
+ }
105
+ set CurrentItem(value) {
106
+ const index = this.items.findIndex(i => i.id === value.id);
107
+ if (index !== -1) {
108
+ this.CurrentSelection = index;
109
+ }
110
+ }
111
+ get CurrentSelection() {
112
+ return this._activeItem % this.items.length;
113
+ }
114
+ set CurrentSelection(v) {
115
+ this.CurrentItem.selected = false;
116
+ this._activeItem = 1000 - (1000 % this.items.length) + v;
117
+ const currentSelection = this.CurrentSelection;
118
+ if (currentSelection > this._maxItem) {
119
+ this._maxItem = currentSelection;
120
+ this._minItem = currentSelection - this._maxItemsOnScreen;
121
+ }
122
+ else if (currentSelection < this._minItem) {
123
+ this._maxItem = this._maxItemsOnScreen + currentSelection;
124
+ this._minItem = currentSelection;
125
+ }
126
+ }
127
+ get Alignment() {
128
+ return this._alignment;
129
+ }
130
+ set Alignment(alignment) {
131
+ this._alignment = alignment;
132
+ }
133
+ get WidthOffset() {
134
+ return this._widthOffset;
135
+ }
136
+ set WidthOffset(widthOffset) {
137
+ this._widthOffset = widthOffset;
138
+ const width = 431 + widthOffset;
139
+ if (this._logo) {
140
+ this._logo.size.width = width;
141
+ }
142
+ this._mainMenu.items[0].pos.X = width / 2 + this._offset.X;
143
+ if (this._counterText) {
144
+ this._counterText.pos.X = 425 + this._offset.X + widthOffset;
145
+ }
146
+ if (this._subtitleResRectangle) {
147
+ this._subtitleResRectangle.size.width = width;
148
+ }
149
+ this._extraRectangleUp.size.width = width;
150
+ this._extraRectangleDown.size.width = width;
151
+ this._upAndDownSprite.pos.X = 190 + this._offset.X + widthOffset / 2;
152
+ this._descriptionBar.size.width = width;
153
+ this._descriptionRectangle.size.width = width;
154
+ this.items.forEach(item => {
155
+ item.formatDescription();
156
+ });
157
+ }
158
+ get DrawOffset() {
159
+ return this._drawOffset;
160
+ }
161
+ get Controls() {
162
+ return this._controls;
163
+ }
164
+ get Settings() {
165
+ return this._settings;
166
+ }
167
+ addNewSubMenu(text, description, inherit = true) {
168
+ let menu;
169
+ if (inherit) {
170
+ menu = new Menu(this._title.caption, text, this._offset, this._logo.TextureDict, this._logo.textureName);
171
+ menu.Alignment = this.Alignment;
172
+ menu.WidthOffset = this.WidthOffset;
173
+ menu._settings = this._settings;
174
+ menu.TitleFont = this.TitleFont;
175
+ menu.SubtitleFont = this.SubtitleFont;
176
+ }
177
+ else {
178
+ menu = new Menu(this._title.caption, text);
179
+ }
180
+ const item = new UIMenuItem(text, description);
181
+ this.addItem(item);
182
+ this.bindMenuToItem(menu, item);
183
+ return menu;
184
+ }
185
+ addSubMenu(subMenuToAdd, text, description, inherit = true) {
186
+ if (inherit) {
187
+ subMenuToAdd.Alignment = this.Alignment;
188
+ subMenuToAdd.WidthOffset = this.WidthOffset;
189
+ subMenuToAdd._settings = this._settings;
190
+ subMenuToAdd.TitleFont = this.TitleFont;
191
+ subMenuToAdd.SubtitleFont = this.SubtitleFont;
192
+ }
193
+ const item = new UIMenuItem(text, description);
194
+ this.addItem(item);
195
+ this.bindMenuToItem(subMenuToAdd, item);
196
+ return subMenuToAdd;
197
+ }
198
+ addItem(items) {
199
+ if (!Array.isArray(items)) {
200
+ items = [items];
201
+ }
202
+ items.forEach(item => {
203
+ item.offset = this._offset;
204
+ item.parent = this;
205
+ item.formatDescription();
206
+ });
207
+ this.items.push(...items);
208
+ this.refreshIndex();
209
+ }
210
+ removeItem(itemOrIndex) {
211
+ if (typeof itemOrIndex === 'number') {
212
+ this.items = this.items.filter((i, index) => index !== itemOrIndex);
213
+ }
214
+ else {
215
+ this.items = this.items.filter(i => i.id !== itemOrIndex.id);
216
+ }
217
+ this.refreshIndex();
218
+ }
219
+ bindMenuToItem(menuToBind, itemToBindTo) {
220
+ menuToBind.parentMenu = this;
221
+ menuToBind.parentItem = itemToBindTo;
222
+ this.children.set(itemToBindTo.id, menuToBind);
223
+ }
224
+ releaseMenuFromItem(releaseFrom) {
225
+ if (!this.children.has(releaseFrom.id)) {
226
+ return false;
227
+ }
228
+ const menu = this.children.get(releaseFrom.id);
229
+ if (menu instanceof Menu) {
230
+ menu.parentItem = undefined;
231
+ menu.parentMenu = undefined;
232
+ }
233
+ this.children.delete(releaseFrom.id);
234
+ return true;
235
+ }
236
+ refreshIndex() {
237
+ if (this.items.length === 0) {
238
+ this._activeItem = 1000;
239
+ this._maxItem = this._maxItemsOnScreen;
240
+ this._minItem = 0;
241
+ return;
242
+ }
243
+ for (const item of this.items) {
244
+ item.selected = false;
245
+ }
246
+ this._activeItem = 1000 - (1000 % this.items.length);
247
+ this._maxItem = this._maxItemsOnScreen;
248
+ this._minItem = 0;
249
+ if (this.CurrentItem instanceof UIMenuSeparatorItem &&
250
+ this._isThereAnyItemExcludingSeparators()) {
251
+ this.goDown();
252
+ }
253
+ }
254
+ clear() {
255
+ this.items = [];
256
+ this._recalculateUpAndDown();
257
+ this._recalculateDescriptionPosition();
258
+ }
259
+ open() {
260
+ this._playSoundAndReleaseId(this.Settings.audio.back, this.Settings.audio.library);
261
+ this.visible = true;
262
+ this._justOpened = true;
263
+ if (!this.parentMenu && this.Settings.resetCursorOnOpen) {
264
+ Hud.CursorPosition = new Point(0.5, 0.5);
265
+ Hud.CursorSprite = CursorSprite.Normal;
266
+ }
267
+ this.menuOpen.emit();
268
+ }
269
+ close() {
270
+ this._playSoundAndReleaseId(this.Settings.audio.back, this.Settings.audio.library);
271
+ this.visible = false;
272
+ this.refreshIndex();
273
+ this.menuClose.emit();
274
+ }
275
+ goLeft() {
276
+ const item = this.CurrentItem;
277
+ if (item instanceof UIMenuListItem) {
278
+ if (!item.Items.length) {
279
+ return;
280
+ }
281
+ item.Index -= 1;
282
+ this._playSoundAndReleaseId(this.Settings.audio.leftRight, this.Settings.audio.library);
283
+ this.listChange.emit(item, item.Index, item.SelectedItem);
284
+ item.listChanged.emit(item.Index, item.SelectedItem);
285
+ }
286
+ else if (item instanceof UIMenuSliderItem) {
287
+ if (!item.Items.length) {
288
+ return;
289
+ }
290
+ item.Index -= 1;
291
+ this._playSoundAndReleaseId(this.Settings.audio.leftRight, this.Settings.audio.library);
292
+ this.sliderChange.emit(item, item.Index, item.indexToItem(item.Index));
293
+ item.sliderChanged.emit(item.Index, item.indexToItem(item.Index));
294
+ }
295
+ }
296
+ goRight() {
297
+ const item = this.CurrentItem;
298
+ if (item instanceof UIMenuListItem) {
299
+ if (item.Items.length === 0) {
300
+ return;
301
+ }
302
+ item.Index += 1;
303
+ this._playSoundAndReleaseId(this.Settings.audio.leftRight, this.Settings.audio.library);
304
+ this.listChange.emit(item, item.Index, item.SelectedItem);
305
+ item.listChanged.emit(item.Index, item.SelectedItem);
306
+ }
307
+ else if (item instanceof UIMenuSliderItem) {
308
+ item.Index += 1;
309
+ this._playSoundAndReleaseId(this.Settings.audio.leftRight, this.Settings.audio.library);
310
+ this.sliderChange.emit(item, item.Index, item.indexToItem(item.Index));
311
+ item.sliderChanged.emit(item.Index, item.indexToItem(item.Index));
312
+ }
313
+ }
314
+ selectItem() {
315
+ const item = this.CurrentItem;
316
+ if (!item.enabled) {
317
+ this._playSoundAndReleaseId(this.Settings.audio.error, this.Settings.audio.library);
318
+ return;
319
+ }
320
+ this._playSoundAndReleaseId(this.Settings.audio.select, this.Settings.audio.library);
321
+ if (item instanceof UIMenuCheckboxItem) {
322
+ item.Checked = !item.Checked;
323
+ this.checkboxChange.emit(item, item.Checked);
324
+ item.checkboxChanged.emit(item.Checked);
325
+ }
326
+ else if (item instanceof UIMenuListItem) {
327
+ this.listSelect.emit(item, item.Index, item.SelectedItem);
328
+ item.listSelected.emit(item.Index, item.SelectedItem);
329
+ }
330
+ else if (item instanceof UIMenuSliderItem) {
331
+ this.sliderSelect.emit(item, item.Index, item.indexToItem(item.Index));
332
+ item.sliderSelected.emit(item.Index, item.indexToItem(item.Index));
333
+ }
334
+ else {
335
+ this.itemSelect.emit(item, this.CurrentSelection);
336
+ item.activated.emit();
337
+ if (this.children.has(item.id)) {
338
+ const subMenu = this.children.get(item.id);
339
+ this.visible = false;
340
+ if (subMenu instanceof Menu) {
341
+ subMenu.visible = true;
342
+ subMenu._justOpened = true;
343
+ subMenu.menuOpen.emit();
344
+ }
345
+ this.menuChange.emit(subMenu, true);
346
+ }
347
+ }
348
+ item.fireEvent();
349
+ }
350
+ isMouseInBounds(pos, size, drawOffset = true) {
351
+ const resolution = Menu.screenResolution;
352
+ const cX = (GetControlNormal(0, Control.CursorX) * resolution.width) / resolution.width;
353
+ const cY = (GetControlNormal(0, Control.CursorY) * resolution.height) / resolution.height;
354
+ let x = pos.X / resolution.width;
355
+ let y = pos.Y / resolution.height;
356
+ const w = size.width / resolution.width;
357
+ const h = size.height / resolution.height;
358
+ if (drawOffset) {
359
+ x += this._drawOffset.X;
360
+ y += this._drawOffset.Y;
361
+ }
362
+ return cX >= x && cX <= x + w && cY > y && cY < y + h;
363
+ }
364
+ goUp() {
365
+ this.CurrentItem.selected = false;
366
+ if (this.items.length > this._maxItemsOnScreen + 1) {
367
+ if (this.CurrentSelection <= this._minItem) {
368
+ if (this.CurrentSelection === 0) {
369
+ this._minItem = this.items.length - this._maxItemsOnScreen - 1;
370
+ this._maxItem = this.items.length - 1;
371
+ this._activeItem = 1000 - (1000 % this.items.length);
372
+ this._activeItem += this.items.length - 1;
373
+ }
374
+ else {
375
+ this._minItem--;
376
+ this._maxItem--;
377
+ this._activeItem--;
378
+ }
379
+ }
380
+ else {
381
+ this._activeItem--;
382
+ }
383
+ }
384
+ else {
385
+ this._activeItem--;
386
+ }
387
+ // Skip separator items
388
+ if (this.CurrentItem instanceof UIMenuSeparatorItem &&
389
+ this._isThereAnyItemExcludingSeparators()) {
390
+ this.goUp();
391
+ }
392
+ else {
393
+ this.CurrentItem.selected = true;
394
+ this._playSoundAndReleaseId(this.Settings.audio.upDown, this.Settings.audio.library);
395
+ this.indexChange.emit(this.CurrentSelection);
396
+ }
397
+ }
398
+ goDown() {
399
+ this.CurrentItem.selected = false;
400
+ if (this.items.length > this._maxItemsOnScreen + 1) {
401
+ if (this.CurrentSelection >= this._maxItem) {
402
+ if (this.CurrentSelection === this.items.length - 1) {
403
+ this._minItem = 0;
404
+ this._maxItem = this._maxItemsOnScreen;
405
+ this._activeItem = 1000 - (1000 % this.items.length);
406
+ }
407
+ else {
408
+ this._minItem++;
409
+ this._maxItem++;
410
+ this._activeItem++;
411
+ }
412
+ }
413
+ else {
414
+ this._activeItem++;
415
+ }
416
+ }
417
+ else {
418
+ this._activeItem++;
419
+ }
420
+ // Skip separator items
421
+ if (this.CurrentItem instanceof UIMenuSeparatorItem &&
422
+ this._isThereAnyItemExcludingSeparators()) {
423
+ this.goDown();
424
+ }
425
+ else {
426
+ this.CurrentItem.selected = true;
427
+ this._playSoundAndReleaseId(this.Settings.audio.upDown, this.Settings.audio.library);
428
+ this.indexChange.emit(this.CurrentSelection);
429
+ }
430
+ }
431
+ goBack() {
432
+ this._playSoundAndReleaseId(this.Settings.audio.back, this.Settings.audio.library);
433
+ this.visible = false;
434
+ if (this.parentMenu != null) {
435
+ this.parentMenu.visible = true;
436
+ this.parentMenu._justOpened = true;
437
+ this.parentMenu.menuOpen.emit();
438
+ this.menuChange.emit(this.parentMenu, false);
439
+ }
440
+ this.menuClose.emit();
441
+ }
442
+ _processMouse() {
443
+ if (!this.visible ||
444
+ this._justOpened ||
445
+ !this.items.length ||
446
+ Game.CurrentInputMode === InputMode.GamePad ||
447
+ !this.Settings.mouseControlsEnabled) {
448
+ Game.enableControlThisFrame(0, Control.LookUp);
449
+ Game.enableControlThisFrame(0, Control.LookDown);
450
+ Game.enableControlThisFrame(0, Control.Attack);
451
+ Game.enableControlThisFrame(0, Control.Aim);
452
+ return;
453
+ }
454
+ Hud.showCursorThisFrame();
455
+ if (this.Settings.mouseEdgeEnabled) {
456
+ if (this.isMouseInBounds(new Point(), new Size(30, Menu.screenHeight), false)) {
457
+ GameplayCamera.RelativeHeading += 1;
458
+ Hud.CursorSprite = CursorSprite.LeftArrow;
459
+ }
460
+ else if (this.isMouseInBounds(new Point(Menu.screenWidth - 30), new Size(30, Menu.screenHeight), false)) {
461
+ GameplayCamera.RelativeHeading -= 1;
462
+ Hud.CursorSprite = CursorSprite.RightArrow;
463
+ }
464
+ else {
465
+ Hud.CursorSprite = CursorSprite.Normal;
466
+ }
467
+ }
468
+ if (this._mousePressed) {
469
+ return;
470
+ }
471
+ let hoveredItem, hoveredItemIndex;
472
+ const limit = this.items.length > this._maxItemsOnScreen + 1 ? this._maxItem : this.items.length - 1;
473
+ for (let i = this._minItem; i <= limit; i++) {
474
+ const item = this.items[i];
475
+ if (item instanceof UIMenuSeparatorItem) {
476
+ continue;
477
+ }
478
+ if (!hoveredItem && item.IsMouseInBounds) {
479
+ item.hovered = true;
480
+ hoveredItem = item;
481
+ hoveredItemIndex = i;
482
+ }
483
+ else {
484
+ item.hovered = false;
485
+ }
486
+ }
487
+ if (hoveredItem && Game.isDisabledControlJustPressed(0, Control.Attack)) {
488
+ (async () => {
489
+ this._mousePressed = true;
490
+ if (hoveredItem.selected) {
491
+ if (hoveredItem.enabled) {
492
+ if (hoveredItem instanceof UIMenuListItem || hoveredItem instanceof UIMenuSliderItem) {
493
+ if (hoveredItem.IsMouseInBoundsOfLeftArrow) {
494
+ this.goLeft();
495
+ }
496
+ else if (hoveredItem.IsMouseInBoundsOfRightArrow) {
497
+ this.goRight();
498
+ }
499
+ else {
500
+ this.selectItem();
501
+ }
502
+ }
503
+ else {
504
+ this.selectItem();
505
+ }
506
+ }
507
+ else {
508
+ this._playSoundAndReleaseId(this.Settings.audio.error, this.Settings.audio.library);
509
+ }
510
+ }
511
+ else {
512
+ this._playSoundAndReleaseId(this.Settings.audio.error, this.Settings.audio.library);
513
+ this.CurrentSelection = hoveredItemIndex ?? 0;
514
+ this.indexChange.emit(this.CurrentSelection);
515
+ }
516
+ await Wait(this._navigationDelay);
517
+ while (Game.isDisabledControlPressed(0, Control.Attack) && hoveredItem.IsMouseInBounds) {
518
+ if (hoveredItem.selected) {
519
+ if (hoveredItem.enabled) {
520
+ if (hoveredItem instanceof UIMenuListItem ||
521
+ hoveredItem instanceof UIMenuSliderItem) {
522
+ if (hoveredItem.IsMouseInBoundsOfLeftArrow) {
523
+ this.goLeft();
524
+ }
525
+ else if (hoveredItem.IsMouseInBoundsOfRightArrow) {
526
+ this.goRight();
527
+ }
528
+ }
529
+ }
530
+ else {
531
+ this._playSoundAndReleaseId(this.Settings.audio.error, this.Settings.audio.library);
532
+ }
533
+ }
534
+ else {
535
+ this._playSoundAndReleaseId(this.Settings.audio.error, this.Settings.audio.library);
536
+ this.CurrentSelection = hoveredItemIndex ?? 0;
537
+ this.indexChange.emit(this.CurrentSelection);
538
+ }
539
+ await Wait(125);
540
+ }
541
+ this._mousePressed = false;
542
+ })();
543
+ }
544
+ if (this.items.length <= this._maxItemsOnScreen + 1 || this._mousePressed) {
545
+ return;
546
+ }
547
+ if (this.isMouseInBounds(this._extraRectangleUp.pos, this._extraRectangleUp.size)) {
548
+ this._extraRectangleUp.color = Color.fromRgb(30, 30, 30);
549
+ if (Game.isDisabledControlJustPressed(0, Control.Attack)) {
550
+ (async () => {
551
+ this._mousePressed = true;
552
+ this.goUp();
553
+ await Wait(this._navigationDelay);
554
+ while (Game.isDisabledControlPressed(0, Control.Attack)) {
555
+ this.goUp();
556
+ await Wait(125);
557
+ }
558
+ this._mousePressed = false;
559
+ })();
560
+ }
561
+ }
562
+ else {
563
+ this._extraRectangleUp.color = new Color(200, 0, 0, 0);
564
+ }
565
+ if (this._mousePressed) {
566
+ return;
567
+ }
568
+ if (this.isMouseInBounds(this._extraRectangleDown.pos, this._extraRectangleDown.size)) {
569
+ this._extraRectangleDown.color = Color.fromRgb(30, 30, 30);
570
+ if (Game.isDisabledControlJustPressed(0, Control.Attack)) {
571
+ (async () => {
572
+ this._mousePressed = true;
573
+ this.goDown();
574
+ await Wait(this._navigationDelay);
575
+ while (Game.isDisabledControlPressed(0, Control.Attack)) {
576
+ this.goDown();
577
+ await Wait(125);
578
+ }
579
+ this._mousePressed = false;
580
+ })();
581
+ }
582
+ }
583
+ else {
584
+ this._extraRectangleDown.color = new Color(200, 0, 0, 0);
585
+ }
586
+ }
587
+ _processControl() {
588
+ if (!this.visible) {
589
+ return;
590
+ }
591
+ if (this._justOpened) {
592
+ this._justOpened = false;
593
+ return;
594
+ }
595
+ // Back
596
+ if (this.Controls.back.Enabled && Game.isDisabledControlJustReleased(0, Control.PhoneCancel)) {
597
+ this.goBack();
598
+ }
599
+ if (this.items.length === 0) {
600
+ return;
601
+ }
602
+ // Up
603
+ if (this.Controls.up.Enabled &&
604
+ (Game.isDisabledControlPressed(0, Control.PhoneUp) ||
605
+ Game.isDisabledControlPressed(0, Control.CursorScrollUp)) &&
606
+ this._lastUpDownNavigation + this._navigationDelay < Date.now()) {
607
+ this._lastUpDownNavigation = Date.now();
608
+ this.goUp();
609
+ }
610
+ // Down
611
+ if (this.Controls.down.Enabled &&
612
+ (Game.isDisabledControlPressed(0, Control.PhoneDown) ||
613
+ Game.isDisabledControlPressed(0, Control.CursorScrollDown)) &&
614
+ this._lastUpDownNavigation + this._navigationDelay < Date.now()) {
615
+ this._lastUpDownNavigation = Date.now();
616
+ this.goDown();
617
+ }
618
+ // Left
619
+ if (this.Controls.left.Enabled &&
620
+ Game.isDisabledControlPressed(0, Control.PhoneLeft) &&
621
+ this._lastLeftRightNavigation + this._navigationDelay < Date.now()) {
622
+ this._lastLeftRightNavigation = Date.now();
623
+ this.goLeft();
624
+ }
625
+ // Right
626
+ if (this.Controls.right.Enabled &&
627
+ Game.isDisabledControlPressed(0, Control.PhoneRight) &&
628
+ this._lastLeftRightNavigation + this._navigationDelay < Date.now()) {
629
+ this._lastLeftRightNavigation = Date.now();
630
+ this.goRight();
631
+ }
632
+ // Select
633
+ if (this.Controls.select.Enabled &&
634
+ Game.isDisabledControlJustPressed(0, Control.FrontendAccept)) {
635
+ this.selectItem();
636
+ }
637
+ }
638
+ _isThereAnyItemExcludingSeparators() {
639
+ return !!this.items.filter(item => !(item instanceof UIMenuSeparatorItem)).length;
640
+ }
641
+ _playSoundAndReleaseId(sound, set) {
642
+ const soundId = Audio.playSoundFrontEnd(sound, set);
643
+ Audio.releaseSound(soundId);
644
+ }
645
+ _disEnableControls() {
646
+ Game.disableAllControlsThisFrame(InputMode.GamePad);
647
+ for (const control of this._settings.enabledControls[Game.CurrentInputMode]) {
648
+ Game.enableControlThisFrame(0, control);
649
+ }
650
+ }
651
+ _recalculateUpAndDown() {
652
+ const y = this._offset.Y;
653
+ this._extraRectangleUp.pos.Y = 144 + 38 * (this._maxItemsOnScreen + 1) + y;
654
+ this._extraRectangleDown.pos.Y = 144 + 18 + 38 * (this._maxItemsOnScreen + 1) + y;
655
+ this._upAndDownSprite.pos.Y = 147 + 37 * (this._maxItemsOnScreen + 1) + y;
656
+ }
657
+ _recalculateDescriptionPosition() {
658
+ let y = 149 + this._offset.Y;
659
+ let count = this.items.length;
660
+ if (count > this._maxItemsOnScreen + 1) {
661
+ count = this._maxItemsOnScreen + 2;
662
+ }
663
+ y += 38 * count;
664
+ this._descriptionBar.pos.Y = y;
665
+ this._descriptionRectangle.pos.Y = y;
666
+ this._descriptionText.pos.Y = y + 6;
667
+ }
668
+ _calculateItemHeight() {
669
+ const y = 149 + this._offset.Y;
670
+ let count = this.items.length;
671
+ if (count > this._maxItemsOnScreen + 1) {
672
+ count = this._maxItemsOnScreen + 2;
673
+ }
674
+ return y + 38 * count;
675
+ }
676
+ _calculatePanelPosition(hasDescription) {
677
+ let height = 0;
678
+ if (hasDescription) {
679
+ height += this._descriptionRectangle.size.height + 5;
680
+ }
681
+ return this._calculateItemHeight() + height;
682
+ }
683
+ _render() {
684
+ if (!this.visible || Game.IsPaused) {
685
+ return;
686
+ }
687
+ if (this._justOpened) {
688
+ if (this._logo != null && !this._logo.IsTextureDictionaryLoaded) {
689
+ this._logo.loadTextureDictionary();
690
+ }
691
+ if (!this._background.IsTextureDictionaryLoaded) {
692
+ this._background.loadTextureDictionary();
693
+ }
694
+ if (!this._descriptionRectangle.IsTextureDictionaryLoaded) {
695
+ this._descriptionRectangle.loadTextureDictionary();
696
+ }
697
+ if (!this._upAndDownSprite.IsTextureDictionaryLoaded) {
698
+ this._upAndDownSprite.loadTextureDictionary();
699
+ }
700
+ }
701
+ SetScriptGfxAlign(this._alignment, 84);
702
+ const menuWidth = (431 + this._widthOffset) / Menu.screenWidth;
703
+ if (this.Settings.scaleWithSafezone) {
704
+ SetScriptGfxAlignParams(0, 0, menuWidth, 0);
705
+ const pos = GetScriptGfxPosition(0, 0);
706
+ this._drawOffset.X = pos[0];
707
+ this._drawOffset.Y = pos[1];
708
+ }
709
+ else {
710
+ const sSize = (1 - GetSafeZoneSize()) / 2;
711
+ if (this._alignment === MenuAlignment.Right) {
712
+ SetScriptGfxAlignParams(sSize, -sSize, menuWidth, 0);
713
+ const pos = GetScriptGfxPosition(0, 0);
714
+ this._drawOffset.X = pos[0];
715
+ this._drawOffset.Y = pos[1];
716
+ }
717
+ else {
718
+ SetScriptGfxAlignParams(-sSize, -sSize, menuWidth, 0);
719
+ const pos = GetScriptGfxPosition(0, 0);
720
+ this._drawOffset.X = pos[0];
721
+ this._drawOffset.Y = pos[1];
722
+ }
723
+ }
724
+ this._mainMenu.draw(undefined, Menu.screenResolution);
725
+ this._processControl();
726
+ this._processMouse();
727
+ if (this.Settings.controlDisablingEnabled) {
728
+ this._disEnableControls();
729
+ }
730
+ this._background.size =
731
+ this.items.length > this._maxItemsOnScreen + 1
732
+ ? new Size(431 + this._widthOffset, 38 * (this._maxItemsOnScreen + 1))
733
+ : new Size(431 + this._widthOffset, 38 * this.items.length);
734
+ this._background.draw(Menu.screenResolution);
735
+ if (this.items.length > 0) {
736
+ let hasDescription = false;
737
+ if (this.CurrentItem.Description && this.CurrentItem.Description !== '')
738
+ hasDescription = true;
739
+ this.CurrentItem.selected = true;
740
+ if (hasDescription) {
741
+ this._recalculateDescriptionPosition();
742
+ this._descriptionText.caption = this.CurrentItem.FormattedDescription;
743
+ const numLines = this._descriptionText.caption.split('\n').length;
744
+ this._descriptionRectangle.size = new Size(431 + this._widthOffset, numLines * 25 + 15);
745
+ this._descriptionBar.draw(undefined, Menu.screenResolution);
746
+ this._descriptionRectangle.draw(Menu.screenResolution);
747
+ this._descriptionText.draw(undefined, Menu.screenResolution);
748
+ }
749
+ if (this.CurrentItem.Panels && this.CurrentItem.Panels.length) {
750
+ let offset = this._calculatePanelPosition(hasDescription);
751
+ for (let i = 0; i < this.CurrentItem.Panels.length; i++) {
752
+ if (i > 0) {
753
+ offset += this.CurrentItem.Panels[i - 1].Height + 5;
754
+ }
755
+ this.CurrentItem.Panels[i].setVerticalPosition(offset);
756
+ this.CurrentItem.Panels[i].draw();
757
+ }
758
+ }
759
+ }
760
+ if (this.items.length <= this._maxItemsOnScreen + 1) {
761
+ let count = 0;
762
+ for (const menuItem of this.items) {
763
+ menuItem.setVerticalPosition(count * 38);
764
+ menuItem.draw();
765
+ count += 1;
766
+ }
767
+ if (this._counterText && this._counterOverride) {
768
+ this._counterText.caption = this._counterPretext + this._counterOverride;
769
+ this._counterText.draw(undefined, Menu.screenResolution);
770
+ }
771
+ }
772
+ else {
773
+ let count = 0;
774
+ for (let index = this._minItem; index <= this._maxItem; index++) {
775
+ const item = this.items[index];
776
+ item.setVerticalPosition(count * 38);
777
+ item.draw();
778
+ count++;
779
+ }
780
+ this._recalculateUpAndDown();
781
+ this._extraRectangleUp.draw(undefined, Menu.screenResolution);
782
+ this._extraRectangleDown.draw(undefined, Menu.screenResolution);
783
+ this._upAndDownSprite.draw(Menu.screenResolution);
784
+ if (this._counterText) {
785
+ if (!this._counterOverride) {
786
+ const cap = `${this.CurrentSelection + 1} / ${this.items.length}`;
787
+ this._counterText.caption = this._counterPretext + cap;
788
+ }
789
+ else {
790
+ this._counterText.caption = this._counterPretext + this._counterOverride;
791
+ }
792
+ this._counterText.draw(undefined, Menu.screenResolution);
793
+ }
794
+ }
795
+ this._logo.draw(Menu.screenResolution);
796
+ ResetScriptGfxAlign();
797
+ }
798
+ }
799
+ Menu.screenAspectRatio = IsDuplicityVersion() ? 0 : Screen.AspectRatio;
800
+ Menu.screenHeight = 1080;
801
+ Menu.screenWidth = Menu.screenHeight * Menu.screenAspectRatio;
802
+ Menu.screenResolution = new Size(Menu.screenWidth, Menu.screenHeight);