gdcore-tools 2.0.0-gd-v5.5.224-autobuild → 2.0.0-gd-v5.5.226-autobuild

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 (202) hide show
  1. package/dist/Runtime/CustomRuntimeObject.js +1 -1
  2. package/dist/Runtime/CustomRuntimeObject.js.map +2 -2
  3. package/dist/Runtime/CustomRuntimeObject2D.js.map +2 -2
  4. package/dist/Runtime/Extensions/3D/A_RuntimeObject3D.js.map +2 -2
  5. package/dist/Runtime/Extensions/3D/Base3DBehavior.js.map +2 -2
  6. package/dist/Runtime/Extensions/3D/Cube3DRuntimeObject.js +1 -1
  7. package/dist/Runtime/Extensions/3D/Cube3DRuntimeObject.js.map +2 -2
  8. package/dist/Runtime/Extensions/3D/Cube3DRuntimeObjectPixiRenderer.js +1 -1
  9. package/dist/Runtime/Extensions/3D/Cube3DRuntimeObjectPixiRenderer.js.map +2 -2
  10. package/dist/Runtime/Extensions/3D/CustomRuntimeObject3D.js.map +2 -2
  11. package/dist/Runtime/Extensions/3D/CustomRuntimeObject3DRenderer.js +1 -1
  12. package/dist/Runtime/Extensions/3D/CustomRuntimeObject3DRenderer.js.map +2 -2
  13. package/dist/Runtime/Extensions/3D/JsExtension.js +219 -108
  14. package/dist/Runtime/Extensions/3D/Model3DRuntimeObject.js +1 -1
  15. package/dist/Runtime/Extensions/3D/Model3DRuntimeObject.js.map +2 -2
  16. package/dist/Runtime/Extensions/3D/Model3DRuntimeObject3DRenderer.js +1 -1
  17. package/dist/Runtime/Extensions/3D/Model3DRuntimeObject3DRenderer.js.map +2 -2
  18. package/dist/Runtime/Extensions/AdMob/JsExtension.js +63 -1
  19. package/dist/Runtime/Extensions/AdMob/admobtools.js +1 -1
  20. package/dist/Runtime/Extensions/AdMob/admobtools.js.map +2 -2
  21. package/dist/Runtime/Extensions/AdvancedWindow/electron-advancedwindowtools.js.map +2 -2
  22. package/dist/Runtime/Extensions/AnchorBehavior/anchorruntimebehavior.js +1 -1
  23. package/dist/Runtime/Extensions/AnchorBehavior/anchorruntimebehavior.js.map +2 -2
  24. package/dist/Runtime/Extensions/BBText/JsExtension.js +10 -9
  25. package/dist/Runtime/Extensions/BBText/bbtextruntimeobject.js.map +2 -2
  26. package/dist/Runtime/Extensions/BitmapText/JsExtension.js +4 -6
  27. package/dist/Runtime/Extensions/BitmapText/bitmaptextruntimeobject-pixi-renderer.js.map +2 -2
  28. package/dist/Runtime/Extensions/BitmapText/bitmaptextruntimeobject.js.map +2 -2
  29. package/dist/Runtime/Extensions/DialogueTree/dialoguetools.js.map +2 -2
  30. package/dist/Runtime/Extensions/DraggableBehavior/draggableruntimebehavior.js.map +2 -2
  31. package/dist/Runtime/Extensions/Effects/adjustment-pixi-filter.js.map +2 -2
  32. package/dist/Runtime/Extensions/Effects/advanced-bloom-pixi-filter.js.map +2 -2
  33. package/dist/Runtime/Extensions/Effects/ascii-pixi-filter.js.map +2 -2
  34. package/dist/Runtime/Extensions/Effects/bevel-pixi-filter.js.map +2 -2
  35. package/dist/Runtime/Extensions/Effects/black-and-white-pixi-filter.js.map +2 -2
  36. package/dist/Runtime/Extensions/Effects/blending-mode-pixi-filter.js.map +2 -2
  37. package/dist/Runtime/Extensions/Effects/brightness-pixi-filter.js.map +2 -2
  38. package/dist/Runtime/Extensions/Effects/bulge-pinch-pixi-filter.js.map +2 -2
  39. package/dist/Runtime/Extensions/Effects/color-map-pixi-filter.js.map +2 -2
  40. package/dist/Runtime/Extensions/Effects/color-replace-pixi-filter.js.map +2 -2
  41. package/dist/Runtime/Extensions/Effects/crt-pixi-filter.js.map +2 -2
  42. package/dist/Runtime/Extensions/Effects/displacement-pixi-filter.js.map +2 -2
  43. package/dist/Runtime/Extensions/Effects/dot-pixi-filter.js.map +2 -2
  44. package/dist/Runtime/Extensions/Effects/drop-shadow-pixi-filter.js.map +2 -2
  45. package/dist/Runtime/Extensions/Effects/glitch-pixi-filter.js.map +2 -2
  46. package/dist/Runtime/Extensions/Effects/glow-pixi-filter.js.map +2 -2
  47. package/dist/Runtime/Extensions/Effects/godray-pixi-filter.js.map +2 -2
  48. package/dist/Runtime/Extensions/Effects/kawase-blur-pixi-filter.js.map +2 -2
  49. package/dist/Runtime/Extensions/Effects/noise-pixi-filter.js.map +2 -2
  50. package/dist/Runtime/Extensions/Effects/old-film-pixi-filter.js.map +2 -2
  51. package/dist/Runtime/Extensions/Effects/outline-pixi-filter.js.map +2 -2
  52. package/dist/Runtime/Extensions/Effects/pixelate-pixi-filter.js.map +2 -2
  53. package/dist/Runtime/Extensions/Effects/pixi-filters/types/drop-shadow/types.d.ts +10 -4
  54. package/dist/Runtime/Extensions/Effects/radial-blur-pixi-filter.js.map +2 -2
  55. package/dist/Runtime/Extensions/Effects/reflection-pixi-filter.js.map +2 -2
  56. package/dist/Runtime/Extensions/Effects/rgb-split-pixi-filter.js.map +2 -2
  57. package/dist/Runtime/Extensions/Effects/sepia-pixi-filter.js.map +2 -2
  58. package/dist/Runtime/Extensions/Effects/shockwave-pixi-filter.js.map +2 -2
  59. package/dist/Runtime/Extensions/Effects/tilt-shift-pixi-filter.js.map +2 -2
  60. package/dist/Runtime/Extensions/Effects/twist-pixi-filter.js.map +2 -2
  61. package/dist/Runtime/Extensions/Effects/zoom-blur-pixi-filter.js.map +2 -2
  62. package/dist/Runtime/Extensions/ExampleJsExtension/dummyeffect.js.map +2 -2
  63. package/dist/Runtime/Extensions/FacebookInstantGames/facebookinstantgamestools.js.map +2 -2
  64. package/dist/Runtime/Extensions/Firebase/A_firebasejs/firebase.d.ts +5 -4
  65. package/dist/Runtime/Extensions/Firebase/B_firebasetools/D_cloudfirestoretools.js.map +2 -2
  66. package/dist/Runtime/Extensions/Firebase/B_firebasetools/D_remoteconfigtools.js.map +2 -2
  67. package/dist/Runtime/Extensions/Firebase/JsExtension.js +21 -21
  68. package/dist/Runtime/Extensions/JsExtensionTypes.d.ts +1 -0
  69. package/dist/Runtime/Extensions/Leaderboards/leaderboardstools.js.map +2 -2
  70. package/dist/Runtime/Extensions/Lighting/JsExtension.js +2 -2
  71. package/dist/Runtime/Extensions/Lighting/lightobstacleruntimebehavior.js.map +2 -2
  72. package/dist/Runtime/Extensions/Lighting/lightruntimeobject-pixi-renderer.js.map +2 -2
  73. package/dist/Runtime/Extensions/Lighting/lightruntimeobject.js.map +2 -2
  74. package/dist/Runtime/Extensions/LinkedObjects/linkedobjects.js.map +2 -2
  75. package/dist/Runtime/Extensions/Multiplayer/JsExtension.js +122 -0
  76. package/dist/Runtime/Extensions/Multiplayer/messageManager.js.map +2 -2
  77. package/dist/Runtime/Extensions/Multiplayer/multiplayerVariablesManager.js.map +2 -2
  78. package/dist/Runtime/Extensions/Multiplayer/multiplayercomponents.js +1 -1
  79. package/dist/Runtime/Extensions/Multiplayer/multiplayercomponents.js.map +2 -2
  80. package/dist/Runtime/Extensions/Multiplayer/multiplayerobjectruntimebehavior.js.map +2 -2
  81. package/dist/Runtime/Extensions/Multiplayer/multiplayertools.js +1 -1
  82. package/dist/Runtime/Extensions/Multiplayer/multiplayertools.js.map +2 -2
  83. package/dist/Runtime/Extensions/Multiplayer/peerJsHelper.js +1 -1
  84. package/dist/Runtime/Extensions/Multiplayer/peerJsHelper.js.map +2 -2
  85. package/dist/Runtime/Extensions/Multiplayer/peerjs.d.ts +8 -10
  86. package/dist/Runtime/Extensions/P2P/peerjs.d.ts +8 -10
  87. package/dist/Runtime/Extensions/PanelSpriteObject/panelspriteruntimeobject-pixi-renderer.js.map +2 -2
  88. package/dist/Runtime/Extensions/PanelSpriteObject/panelspriteruntimeobject.js.map +2 -2
  89. package/dist/Runtime/Extensions/ParticleSystem/particleemitterobject-pixi-renderer.js.map +2 -2
  90. package/dist/Runtime/Extensions/ParticleSystem/particleemitterobject.js.map +2 -2
  91. package/dist/Runtime/Extensions/ParticleSystem/pixi-particles-pixi-renderer.d.ts +2 -1
  92. package/dist/Runtime/Extensions/PathfindingBehavior/pathfindingobstacleruntimebehavior.js.map +2 -2
  93. package/dist/Runtime/Extensions/PathfindingBehavior/pathfindingruntimebehavior.js.map +2 -2
  94. package/dist/Runtime/Extensions/Physics2Behavior/JsExtension.js +106 -106
  95. package/dist/Runtime/Extensions/Physics2Behavior/box2d.d.ts +13 -7
  96. package/dist/Runtime/Extensions/Physics2Behavior/physics2runtimebehavior.js.map +2 -2
  97. package/dist/Runtime/Extensions/Physics3DBehavior/Physics3DRuntimeBehavior.js.map +2 -2
  98. package/dist/Runtime/Extensions/Physics3DBehavior/PhysicsCharacter3DRuntimeBehavior.js +1 -1
  99. package/dist/Runtime/Extensions/Physics3DBehavior/PhysicsCharacter3DRuntimeBehavior.js.map +2 -2
  100. package/dist/Runtime/Extensions/PhysicsBehavior/physicsruntimebehavior.js.map +2 -2
  101. package/dist/Runtime/Extensions/PlatformBehavior/platformerobjectruntimebehavior.js.map +2 -2
  102. package/dist/Runtime/Extensions/PlatformBehavior/platformruntimebehavior.js.map +2 -2
  103. package/dist/Runtime/Extensions/PlayerAuthentication/playerauthenticationcomponents.js.map +1 -1
  104. package/dist/Runtime/Extensions/PlayerAuthentication/playerauthenticationtools.js +1 -1
  105. package/dist/Runtime/Extensions/PlayerAuthentication/playerauthenticationtools.js.map +2 -2
  106. package/dist/Runtime/Extensions/PrimitiveDrawing/shapepainterruntimeobject-pixi-renderer.js.map +2 -2
  107. package/dist/Runtime/Extensions/PrimitiveDrawing/shapepainterruntimeobject.js.map +2 -2
  108. package/dist/Runtime/Extensions/SpatialSound/spatialsoundtools.js +1 -1
  109. package/dist/Runtime/Extensions/SpatialSound/spatialsoundtools.js.map +2 -2
  110. package/dist/Runtime/Extensions/Spine/JsExtension.js +5 -4
  111. package/dist/Runtime/Extensions/Spine/managers/pixi-spine-atlas-manager.js +1 -1
  112. package/dist/Runtime/Extensions/Spine/managers/pixi-spine-atlas-manager.js.map +2 -2
  113. package/dist/Runtime/Extensions/Spine/managers/pixi-spine-manager.js +1 -1
  114. package/dist/Runtime/Extensions/Spine/managers/pixi-spine-manager.js.map +2 -2
  115. package/dist/Runtime/Extensions/Spine/spineruntimeobject-pixi-renderer.js +1 -1
  116. package/dist/Runtime/Extensions/Spine/spineruntimeobject-pixi-renderer.js.map +2 -2
  117. package/dist/Runtime/Extensions/Spine/spineruntimeobject.js.map +2 -2
  118. package/dist/Runtime/Extensions/Steamworks/JsExtension.js +12 -12
  119. package/dist/Runtime/Extensions/Steamworks/Z_steamworksinputtools.js.map +2 -2
  120. package/dist/Runtime/Extensions/Steamworks/steamworkstools.js.map +2 -2
  121. package/dist/Runtime/Extensions/TextEntryObject/textentryruntimeobject-pixi-renderer.js.map +2 -2
  122. package/dist/Runtime/Extensions/TextInput/textinputruntimeobject-pixi-renderer.js +1 -1
  123. package/dist/Runtime/Extensions/TextInput/textinputruntimeobject-pixi-renderer.js.map +2 -2
  124. package/dist/Runtime/Extensions/TextInput/textinputruntimeobject.js.map +2 -2
  125. package/dist/Runtime/Extensions/TextObject/textruntimeobject-pixi-renderer.js.map +2 -2
  126. package/dist/Runtime/Extensions/TextObject/textruntimeobject.js.map +2 -2
  127. package/dist/Runtime/Extensions/TileMap/JsExtension.js +20 -18
  128. package/dist/Runtime/Extensions/TileMap/TileMapRuntimeManager.js.map +2 -2
  129. package/dist/Runtime/Extensions/TileMap/collision/TransformedTileMap.js.map +2 -2
  130. package/dist/Runtime/Extensions/TileMap/helper/dts/model/TileMapModel.d.ts +1 -3
  131. package/dist/Runtime/Extensions/TileMap/simpletilemapruntimeobject.js.map +2 -2
  132. package/dist/Runtime/Extensions/TileMap/tilemapcollisionmaskruntimeobject.js.map +2 -2
  133. package/dist/Runtime/Extensions/TileMap/tilemapruntimeobject-pixi-renderer.js.map +1 -1
  134. package/dist/Runtime/Extensions/TileMap/tilemapruntimeobject.js.map +2 -2
  135. package/dist/Runtime/Extensions/TiledSpriteObject/tiledspriteruntimeobject-pixi-renderer.js.map +2 -2
  136. package/dist/Runtime/Extensions/TiledSpriteObject/tiledspriteruntimeobject.js.map +2 -2
  137. package/dist/Runtime/Extensions/TopDownMovementBehavior/topdownmovementruntimebehavior.js.map +2 -2
  138. package/dist/Runtime/Extensions/TweenBehavior/tweenruntimebehavior.js.map +1 -1
  139. package/dist/Runtime/Extensions/Video/JsExtension.js +2 -1
  140. package/dist/Runtime/Extensions/Video/videoruntimeobject-pixi-renderer.js.map +2 -2
  141. package/dist/Runtime/Extensions/Video/videoruntimeobject.js.map +2 -2
  142. package/dist/Runtime/InAppTutorialMessage.js +6 -0
  143. package/dist/Runtime/InAppTutorialMessage.js.map +7 -0
  144. package/dist/Runtime/Model3DManager.js.map +2 -2
  145. package/dist/Runtime/ResourceLoader.js.map +2 -2
  146. package/dist/Runtime/RuntimeCustomObjectLayer.js +1 -1
  147. package/dist/Runtime/RuntimeCustomObjectLayer.js.map +2 -2
  148. package/dist/Runtime/RuntimeInstanceContainer.js.map +1 -1
  149. package/dist/Runtime/RuntimeLayer.js.map +2 -2
  150. package/dist/Runtime/SpriteAnimator.js.map +2 -2
  151. package/dist/Runtime/affinetransformation.js.map +1 -1
  152. package/dist/Runtime/debugger-client/abstract-debugger-client.js.map +2 -2
  153. package/dist/Runtime/debugger-client/hot-reloader.js +2 -2
  154. package/dist/Runtime/debugger-client/hot-reloader.js.map +2 -2
  155. package/dist/Runtime/debugger-client/websocket-debugger-client.js +1 -1
  156. package/dist/Runtime/debugger-client/websocket-debugger-client.js.map +2 -2
  157. package/dist/Runtime/events-tools/networktools.js +1 -1
  158. package/dist/Runtime/events-tools/networktools.js.map +2 -2
  159. package/dist/Runtime/fontfaceobserver-font-manager/fontfaceobserver-font-manager.js.map +2 -2
  160. package/dist/Runtime/gd.js.map +2 -2
  161. package/dist/Runtime/howler-sound-manager/howler-sound-manager.js +1 -1
  162. package/dist/Runtime/howler-sound-manager/howler-sound-manager.js.map +2 -2
  163. package/dist/Runtime/inputmanager.js.map +2 -2
  164. package/dist/Runtime/jsonmanager.js.map +2 -2
  165. package/dist/Runtime/layer.js.map +2 -2
  166. package/dist/Runtime/libs/nanomarkdown.js +5 -0
  167. package/dist/Runtime/libs/nanomarkdown.js.map +7 -0
  168. package/dist/Runtime/object-capabilities/AnimatableBehavior.js.map +2 -2
  169. package/dist/Runtime/object-capabilities/EffectBehavior.js.map +2 -2
  170. package/dist/Runtime/object-capabilities/FlippableBehavior.js.map +2 -2
  171. package/dist/Runtime/object-capabilities/OpacityBehavior.js.map +2 -2
  172. package/dist/Runtime/object-capabilities/ResizableBehavior.js.map +2 -2
  173. package/dist/Runtime/object-capabilities/ScalableBehavior.js.map +2 -2
  174. package/dist/Runtime/object-capabilities/TextContainerBehavior.js.map +2 -2
  175. package/dist/Runtime/pixi-renderers/CustomRuntimeObject2DPixiRenderer.js.map +2 -2
  176. package/dist/Runtime/pixi-renderers/DebuggerPixiRenderer.js.map +2 -2
  177. package/dist/Runtime/pixi-renderers/layer-pixi-renderer.js.map +2 -2
  178. package/dist/Runtime/pixi-renderers/loadingscreen-pixi-renderer.js.map +2 -2
  179. package/dist/Runtime/pixi-renderers/pixi-bitmapfont-manager.js.map +2 -2
  180. package/dist/Runtime/pixi-renderers/pixi-filters-tools.js.map +2 -2
  181. package/dist/Runtime/pixi-renderers/pixi-image-manager.js +1 -1
  182. package/dist/Runtime/pixi-renderers/pixi-image-manager.js.map +2 -2
  183. package/dist/Runtime/pixi-renderers/pixi.js +123 -177
  184. package/dist/Runtime/pixi-renderers/runtimegame-pixi-renderer.js +1 -1
  185. package/dist/Runtime/pixi-renderers/runtimegame-pixi-renderer.js.map +2 -2
  186. package/dist/Runtime/pixi-renderers/runtimescene-pixi-renderer.js.map +2 -2
  187. package/dist/Runtime/pixi-renderers/spriteruntimeobject-pixi-renderer.js.map +2 -2
  188. package/dist/Runtime/profiler.js.map +2 -2
  189. package/dist/Runtime/runtimegame.js +1 -1
  190. package/dist/Runtime/runtimegame.js.map +2 -2
  191. package/dist/Runtime/runtimeobject.js +1 -1
  192. package/dist/Runtime/runtimeobject.js.map +2 -2
  193. package/dist/Runtime/runtimescene.js.map +2 -2
  194. package/dist/Runtime/runtimewatermark.js.map +2 -2
  195. package/dist/Runtime/scenestack.js.map +2 -2
  196. package/dist/Runtime/spriteruntimeobject.js.map +2 -2
  197. package/dist/Runtime/variable.js.map +2 -2
  198. package/dist/Runtime/variablescontainer.js.map +2 -2
  199. package/dist/lib/libGD.cjs +1 -1
  200. package/dist/lib/libGD.wasm +0 -0
  201. package/gd.d.ts +5 -2
  202. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../GDevelop/Extensions/Spine/spineruntimeobject.ts"],
4
- "sourcesContent": ["namespace gdjs {\n type SpineAnimation = { name: string; source: string; loop: boolean };\n\n export type SpineObjectDataType = {\n content: {\n opacity: float;\n scale: float;\n timeScale: float;\n spineResourceName: string;\n animations: SpineAnimation[];\n };\n };\n export type SpineObjectData = ObjectData & SpineObjectDataType;\n\n export type SpineNetworkSyncDataType = {\n opa: float;\n wid: float;\n hei: float;\n scaX: float;\n scaY: float;\n flipX: boolean;\n flipY: boolean;\n ani: number;\n anmd: number;\n anp: boolean;\n anss: float;\n anet: number;\n };\n\n export type SpineNetworkSyncData = ObjectNetworkSyncData &\n SpineNetworkSyncDataType;\n\n export class SpineRuntimeObject\n extends gdjs.RuntimeObject\n implements\n gdjs.Resizable,\n gdjs.Scalable,\n gdjs.Animatable,\n gdjs.OpacityHandler {\n private _opacity: float = 255;\n private _scaleX: number = 1;\n private _scaleY: number = 1;\n _originalScale: number;\n private _flippedX: boolean = false;\n private _flippedY: boolean = false;\n private _animations: SpineAnimation[];\n private _currentAnimationIndex = -1;\n private _animationSpeedScale: float = 1;\n private _animationPaused: boolean = false;\n private _isPausedFrameDirty = false;\n /** The duration in second for the smooth transition between 2 animations */\n private _animationMixingDuration: number;\n private _renderer: gdjs.SpineRuntimeObjectPixiRenderer;\n\n readonly spineResourceName: string;\n\n /**\n * @param instanceContainer The container the object belongs to.\n * @param objectData The object data used to initialize the object\n */\n constructor(\n instanceContainer: gdjs.RuntimeInstanceContainer,\n objectData: SpineObjectData\n ) {\n super(instanceContainer, objectData);\n\n this._animations = objectData.content.animations;\n this._originalScale = objectData.content.scale;\n this.spineResourceName = objectData.content.spineResourceName;\n this._animationMixingDuration = 0;\n this._renderer = new gdjs.SpineRuntimeObjectRenderer(\n this,\n instanceContainer\n );\n this.setAnimationIndex(0);\n this._renderer.updateAnimation(0);\n\n // *ALWAYS* call `this.onCreated()` at the very end of your object constructor.\n this.onCreated();\n }\n\n update(instanceContainer: gdjs.RuntimeInstanceContainer): void {\n if (this._animationPaused) {\n if (this._isPausedFrameDirty) {\n this._renderer.updateAnimation(0);\n this.invalidateHitboxes();\n this._isPausedFrameDirty = false;\n }\n return;\n }\n const elapsedTime = this.getElapsedTime() / 1000;\n this._renderer.updateAnimation(elapsedTime * this._animationSpeedScale);\n this.invalidateHitboxes();\n }\n\n getRendererObject(): pixi_spine.Spine | PIXI.Container {\n return this._renderer.getRendererObject();\n }\n\n updateFromObjectData(\n oldObjectData: SpineObjectData,\n newObjectData: SpineObjectData\n ): boolean {\n super.updateFromObjectData(oldObjectData, newObjectData);\n\n if (oldObjectData.content.scale !== newObjectData.content.scale) {\n this._originalScale = newObjectData.content.scale;\n this._renderer.updateScale();\n this.invalidateHitboxes();\n }\n\n return true;\n }\n\n getNetworkSyncData(): SpineNetworkSyncData {\n return {\n ...super.getNetworkSyncData(),\n opa: this._opacity,\n wid: this.getWidth(),\n hei: this.getHeight(),\n scaX: this.getScaleX(),\n scaY: this.getScaleY(),\n flipX: this.isFlippedX(),\n flipY: this.isFlippedY(),\n ani: this.getAnimationIndex(),\n anmd: this.getAnimationMixingDuration(),\n anp: this.isAnimationPaused(),\n anss: this.getAnimationSpeedScale(),\n anet: this.getAnimationElapsedTime(),\n };\n }\n\n updateFromNetworkSyncData(syncData: SpineNetworkSyncData): void {\n super.updateFromNetworkSyncData(syncData);\n\n if (syncData.opa !== undefined && syncData.opa !== this._opacity) {\n this.setOpacity(syncData.opa);\n }\n if (syncData.wid !== undefined && syncData.wid !== this.getWidth()) {\n this.setWidth(syncData.wid);\n }\n if (syncData.hei !== undefined && syncData.hei !== this.getHeight()) {\n this.setHeight(syncData.hei);\n }\n if (syncData.scaX !== undefined && syncData.scaX !== this.getScaleX()) {\n this.setScaleX(syncData.scaX);\n }\n if (syncData.scaY !== undefined && syncData.scaY !== this.getScaleY()) {\n this.setScaleY(syncData.scaY);\n }\n if (\n syncData.flipX !== undefined &&\n syncData.flipX !== this.isFlippedX()\n ) {\n this.flipX(syncData.flipX);\n }\n if (\n syncData.flipY !== undefined &&\n syncData.flipY !== this.isFlippedY()\n ) {\n this.flipY(syncData.flipY);\n }\n if (\n syncData.ani !== undefined &&\n syncData.ani !== this.getAnimationIndex()\n ) {\n this.setAnimationIndex(syncData.ani);\n }\n if (\n syncData.anmd !== undefined &&\n syncData.anmd !== this.getAnimationMixingDuration()\n ) {\n this.setAnimationMixingDuration(syncData.anmd);\n }\n if (\n syncData.anp !== undefined &&\n syncData.anp !== this.isAnimationPaused()\n ) {\n syncData.anp ? this.pauseAnimation() : this.resumeAnimation();\n }\n if (\n syncData.anss !== undefined &&\n syncData.anss !== this.getAnimationSpeedScale()\n ) {\n this.setAnimationSpeedScale(syncData.anss);\n }\n if (\n syncData.anet !== undefined &&\n syncData.anet !== this.getAnimationElapsedTime()\n ) {\n this.setAnimationElapsedTime(syncData.anet);\n }\n }\n\n extraInitializationFromInitialInstance(\n initialInstanceData: InstanceData\n ): void {\n const animationData = initialInstanceData.numberProperties.find(\n (data) => data.name === 'animation'\n );\n const animationIndex = animationData\n ? animationData.value\n : this._currentAnimationIndex;\n\n this.setAnimationIndexWithMixing(animationIndex, 0);\n\n if (initialInstanceData.customSize) {\n this.setSize(initialInstanceData.width, initialInstanceData.height);\n this.invalidateHitboxes();\n }\n if (initialInstanceData.opacity !== undefined) {\n this.setOpacity(initialInstanceData.opacity);\n }\n if (initialInstanceData.flippedX) {\n this.flipX(initialInstanceData.flippedX);\n }\n if (initialInstanceData.flippedY) {\n this.flipY(initialInstanceData.flippedY);\n }\n }\n\n getDrawableX(): number {\n const originOffset = this._renderer.getOriginOffset();\n\n return this.getX() + originOffset.x;\n }\n\n getDrawableY(): number {\n const originOffset = this._renderer.getOriginOffset();\n\n return this.getY() + originOffset.y;\n }\n\n getCenterX(): float {\n const originOffset = this._renderer.getOriginOffset();\n return -originOffset.x;\n }\n\n getCenterY(): float {\n const originOffset = this._renderer.getOriginOffset();\n return -originOffset.y;\n }\n\n onDestroyed(): void {\n super.onDestroyed();\n this._renderer.onDestroy();\n }\n\n setX(x: float): void {\n super.setX(x);\n this._renderer.updatePosition();\n }\n\n setY(y: float): void {\n super.setY(y);\n this._renderer.updatePosition();\n }\n\n setAngle(angle: float): void {\n super.setAngle(angle);\n this._renderer.updateAngle();\n }\n\n setOpacity(opacity: float): void {\n this._opacity = Math.max(0, Math.min(255, opacity));\n this._renderer.updateOpacity();\n }\n\n getOpacity(): float {\n return this._opacity;\n }\n\n getWidth(): float {\n return this._renderer.getWidth();\n }\n\n getHeight(): float {\n return this._renderer.getHeight();\n }\n\n setWidth(newWidth: float): void {\n const unscaledWidth = this._renderer.getUnscaledWidth();\n if (unscaledWidth !== 0) {\n this.setScaleX(newWidth / unscaledWidth);\n }\n }\n\n setHeight(newHeight: float): void {\n const unscaledHeight = this._renderer.getUnscaledHeight();\n if (unscaledHeight !== 0) {\n this.setScaleY(newHeight / unscaledHeight);\n }\n }\n\n setSize(newWidth: number, newHeight: number): void {\n this.setWidth(newWidth);\n this.setHeight(newHeight);\n }\n\n setScale(newScale: float): void {\n if (newScale < 0) {\n newScale = 0;\n }\n if (\n newScale === Math.abs(this._scaleX) &&\n newScale === Math.abs(this._scaleY)\n ) {\n return;\n }\n this._scaleX = newScale * (this._flippedX ? -1 : 1);\n this._scaleY = newScale * (this._flippedY ? -1 : 1);\n this._renderer.updateScale();\n this.invalidateHitboxes();\n }\n\n setScaleX(newScale: float): void {\n if (newScale < 0) {\n newScale = 0;\n }\n if (newScale === Math.abs(this._scaleX)) {\n return;\n }\n this._scaleX = newScale * (this._flippedX ? -1 : 1);\n this._renderer.updateScale();\n this.invalidateHitboxes();\n }\n\n setScaleY(newScale: float): void {\n if (newScale < 0) {\n newScale = 0;\n }\n if (newScale === Math.abs(this._scaleY)) {\n return;\n }\n this._scaleY = newScale * (this._flippedY ? -1 : 1);\n this._renderer.updateScale();\n this.invalidateHitboxes();\n }\n\n /**\n * Get the scale of the object (or the geometric mean of the X and Y scale in case they are different).\n *\n * @return the scale of the object (or the geometric mean of the X and Y scale in case they are different).\n */\n getScale(): float {\n const scaleX = Math.abs(this._scaleX);\n const scaleY = Math.abs(this._scaleY);\n return scaleX === scaleY ? scaleX : Math.sqrt(scaleX * scaleY);\n }\n\n getScaleY(): float {\n return Math.abs(this._scaleY);\n }\n\n getScaleX(): float {\n return Math.abs(this._scaleX);\n }\n\n isFlippedX(): boolean {\n return this._flippedX;\n }\n\n isFlippedY(): boolean {\n return this._flippedY;\n }\n\n flipX(enable: boolean) {\n if (enable !== this._flippedX) {\n this._scaleX *= -1;\n this._flippedX = enable;\n this.invalidateHitboxes();\n this._renderer.updateScale();\n }\n }\n\n flipY(enable: boolean) {\n if (enable !== this._flippedY) {\n this._scaleY *= -1;\n this._flippedY = enable;\n this.invalidateHitboxes();\n this._renderer.updateScale();\n }\n }\n\n setAnimationIndex(animationIndex: number): void {\n this.setAnimationIndexWithMixing(\n animationIndex,\n this._animationMixingDuration\n );\n }\n\n setAnimationIndexWithMixing(\n animationIndex: number,\n mixingDuration: number\n ): void {\n if (\n this._animations.length === 0 ||\n this._currentAnimationIndex === animationIndex ||\n !this.isAnimationIndex(animationIndex)\n ) {\n return;\n }\n const previousAnimation = this._animations[this._currentAnimationIndex];\n const newAnimation = this._animations[animationIndex];\n this._currentAnimationIndex = animationIndex;\n\n if (previousAnimation) {\n this._renderer.setMixing(\n previousAnimation.source,\n newAnimation.source,\n mixingDuration\n );\n }\n this._renderer.setAnimation(newAnimation.source, newAnimation.loop);\n this._isPausedFrameDirty = true;\n }\n\n setAnimationName(animationName: string): void {\n this.setAnimationNameWithMixing(\n animationName,\n this._animationMixingDuration\n );\n }\n\n setAnimationNameWithMixing(\n animationName: string,\n mixingDuration: number\n ): void {\n this.setAnimationIndexWithMixing(\n this.getAnimationIndexFor(animationName),\n mixingDuration\n );\n }\n\n getAnimationIndexFor(animationName: string): number {\n return this._animations.findIndex(\n (animation) => animation.name === animationName\n );\n }\n\n /**\n * Return the duration in second for the smooth transition between 2 animations.\n */\n getAnimationMixingDuration(): number {\n return this._animationMixingDuration;\n }\n\n /**\n * Change the duration in second for the smooth transition between 2 animations.\n */\n setAnimationMixingDuration(animationMixingDuration: number): void {\n this._animationMixingDuration = animationMixingDuration;\n }\n\n getAnimationIndex(): number {\n return this._currentAnimationIndex;\n }\n\n getAnimationName(): string {\n return this.isAnimationIndex(this._currentAnimationIndex)\n ? this._animations[this._currentAnimationIndex].name\n : '';\n }\n\n isAnimationIndex(animationIndex: number): boolean {\n return (\n Number.isInteger(animationIndex) &&\n animationIndex >= 0 &&\n animationIndex < this._animations.length\n );\n }\n\n hasAnimationEnded(): boolean {\n return this._renderer.isAnimationComplete();\n }\n\n isAnimationPaused() {\n return this._animationPaused;\n }\n\n pauseAnimation() {\n this._animationPaused = true;\n }\n\n resumeAnimation() {\n this._animationPaused = false;\n }\n\n getAnimationSpeedScale() {\n return this._animationSpeedScale;\n }\n\n setAnimationSpeedScale(ratio: float): void {\n this._animationSpeedScale = ratio;\n }\n\n getAnimationElapsedTime(): number {\n if (this._animations.length === 0) {\n return 0;\n }\n return this._renderer.getAnimationElapsedTime();\n }\n\n setAnimationElapsedTime(time: number): void {\n if (this._animations.length === 0) {\n return;\n }\n this._renderer.setAnimationElapsedTime(time);\n this._isPausedFrameDirty = true;\n }\n\n getPointAttachmentX(attachmentName: string, slotName?: string): number {\n return this._renderer.getPointAttachmentPosition(attachmentName, slotName)\n .x;\n }\n\n getPointAttachmentY(attachmentName: string, slotName?: string): number {\n return this._renderer.getPointAttachmentPosition(attachmentName, slotName)\n .y;\n }\n\n getAnimationDuration(): number {\n if (this._animations.length === 0) {\n return 0;\n }\n return this._renderer.getAnimationDuration(\n this._animations[this._currentAnimationIndex].source\n );\n }\n }\n\n gdjs.registerObject('SpineObject::SpineObject', gdjs.SpineRuntimeObject);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["namespace gdjs {\n type SpineAnimation = { name: string; source: string; loop: boolean };\n\n export type SpineObjectDataType = {\n content: {\n opacity: float;\n scale: float;\n timeScale: float;\n spineResourceName: string;\n animations: SpineAnimation[];\n };\n };\n export type SpineObjectData = ObjectData & SpineObjectDataType;\n\n export type SpineNetworkSyncDataType = {\n opa: float;\n wid: float;\n hei: float;\n scaX: float;\n scaY: float;\n flipX: boolean;\n flipY: boolean;\n ani: number;\n anmd: number;\n anp: boolean;\n anss: float;\n anet: number;\n };\n\n export type SpineNetworkSyncData = ObjectNetworkSyncData &\n SpineNetworkSyncDataType;\n\n export class SpineRuntimeObject\n extends gdjs.RuntimeObject\n implements\n gdjs.Resizable,\n gdjs.Scalable,\n gdjs.Animatable,\n gdjs.OpacityHandler\n {\n private _opacity: float = 255;\n private _scaleX: number = 1;\n private _scaleY: number = 1;\n _originalScale: number;\n private _flippedX: boolean = false;\n private _flippedY: boolean = false;\n private _animations: SpineAnimation[];\n private _currentAnimationIndex = -1;\n private _animationSpeedScale: float = 1;\n private _animationPaused: boolean = false;\n private _isPausedFrameDirty = false;\n /** The duration in second for the smooth transition between 2 animations */\n private _animationMixingDuration: number;\n private _renderer: gdjs.SpineRuntimeObjectPixiRenderer;\n\n readonly spineResourceName: string;\n\n /**\n * @param instanceContainer The container the object belongs to.\n * @param objectData The object data used to initialize the object\n */\n constructor(\n instanceContainer: gdjs.RuntimeInstanceContainer,\n objectData: SpineObjectData\n ) {\n super(instanceContainer, objectData);\n\n this._animations = objectData.content.animations;\n this._originalScale = objectData.content.scale;\n this.spineResourceName = objectData.content.spineResourceName;\n this._animationMixingDuration = 0;\n this._renderer = new gdjs.SpineRuntimeObjectRenderer(\n this,\n instanceContainer\n );\n this.setAnimationIndex(0);\n this._renderer.updateAnimation(0);\n\n // *ALWAYS* call `this.onCreated()` at the very end of your object constructor.\n this.onCreated();\n }\n\n update(instanceContainer: gdjs.RuntimeInstanceContainer): void {\n if (this._animationPaused) {\n if (this._isPausedFrameDirty) {\n this._renderer.updateAnimation(0);\n this.invalidateHitboxes();\n this._isPausedFrameDirty = false;\n }\n return;\n }\n const elapsedTime = this.getElapsedTime() / 1000;\n this._renderer.updateAnimation(elapsedTime * this._animationSpeedScale);\n this.invalidateHitboxes();\n }\n\n getRendererObject(): pixi_spine.Spine | PIXI.Container {\n return this._renderer.getRendererObject();\n }\n\n updateFromObjectData(\n oldObjectData: SpineObjectData,\n newObjectData: SpineObjectData\n ): boolean {\n super.updateFromObjectData(oldObjectData, newObjectData);\n\n if (oldObjectData.content.scale !== newObjectData.content.scale) {\n this._originalScale = newObjectData.content.scale;\n this._renderer.updateScale();\n this.invalidateHitboxes();\n }\n\n return true;\n }\n\n getNetworkSyncData(): SpineNetworkSyncData {\n return {\n ...super.getNetworkSyncData(),\n opa: this._opacity,\n wid: this.getWidth(),\n hei: this.getHeight(),\n scaX: this.getScaleX(),\n scaY: this.getScaleY(),\n flipX: this.isFlippedX(),\n flipY: this.isFlippedY(),\n ani: this.getAnimationIndex(),\n anmd: this.getAnimationMixingDuration(),\n anp: this.isAnimationPaused(),\n anss: this.getAnimationSpeedScale(),\n anet: this.getAnimationElapsedTime(),\n };\n }\n\n updateFromNetworkSyncData(syncData: SpineNetworkSyncData): void {\n super.updateFromNetworkSyncData(syncData);\n\n if (syncData.opa !== undefined && syncData.opa !== this._opacity) {\n this.setOpacity(syncData.opa);\n }\n if (syncData.wid !== undefined && syncData.wid !== this.getWidth()) {\n this.setWidth(syncData.wid);\n }\n if (syncData.hei !== undefined && syncData.hei !== this.getHeight()) {\n this.setHeight(syncData.hei);\n }\n if (syncData.scaX !== undefined && syncData.scaX !== this.getScaleX()) {\n this.setScaleX(syncData.scaX);\n }\n if (syncData.scaY !== undefined && syncData.scaY !== this.getScaleY()) {\n this.setScaleY(syncData.scaY);\n }\n if (\n syncData.flipX !== undefined &&\n syncData.flipX !== this.isFlippedX()\n ) {\n this.flipX(syncData.flipX);\n }\n if (\n syncData.flipY !== undefined &&\n syncData.flipY !== this.isFlippedY()\n ) {\n this.flipY(syncData.flipY);\n }\n if (\n syncData.ani !== undefined &&\n syncData.ani !== this.getAnimationIndex()\n ) {\n this.setAnimationIndex(syncData.ani);\n }\n if (\n syncData.anmd !== undefined &&\n syncData.anmd !== this.getAnimationMixingDuration()\n ) {\n this.setAnimationMixingDuration(syncData.anmd);\n }\n if (\n syncData.anp !== undefined &&\n syncData.anp !== this.isAnimationPaused()\n ) {\n syncData.anp ? this.pauseAnimation() : this.resumeAnimation();\n }\n if (\n syncData.anss !== undefined &&\n syncData.anss !== this.getAnimationSpeedScale()\n ) {\n this.setAnimationSpeedScale(syncData.anss);\n }\n if (\n syncData.anet !== undefined &&\n syncData.anet !== this.getAnimationElapsedTime()\n ) {\n this.setAnimationElapsedTime(syncData.anet);\n }\n }\n\n extraInitializationFromInitialInstance(\n initialInstanceData: InstanceData\n ): void {\n const animationData = initialInstanceData.numberProperties.find(\n (data) => data.name === 'animation'\n );\n const animationIndex = animationData\n ? animationData.value\n : this._currentAnimationIndex;\n\n this.setAnimationIndexWithMixing(animationIndex, 0);\n\n if (initialInstanceData.customSize) {\n this.setSize(initialInstanceData.width, initialInstanceData.height);\n this.invalidateHitboxes();\n }\n if (initialInstanceData.opacity !== undefined) {\n this.setOpacity(initialInstanceData.opacity);\n }\n if (initialInstanceData.flippedX) {\n this.flipX(initialInstanceData.flippedX);\n }\n if (initialInstanceData.flippedY) {\n this.flipY(initialInstanceData.flippedY);\n }\n }\n\n getDrawableX(): number {\n const originOffset = this._renderer.getOriginOffset();\n\n return this.getX() + originOffset.x;\n }\n\n getDrawableY(): number {\n const originOffset = this._renderer.getOriginOffset();\n\n return this.getY() + originOffset.y;\n }\n\n getCenterX(): float {\n const originOffset = this._renderer.getOriginOffset();\n return -originOffset.x;\n }\n\n getCenterY(): float {\n const originOffset = this._renderer.getOriginOffset();\n return -originOffset.y;\n }\n\n onDestroyed(): void {\n super.onDestroyed();\n this._renderer.onDestroy();\n }\n\n setX(x: float): void {\n super.setX(x);\n this._renderer.updatePosition();\n }\n\n setY(y: float): void {\n super.setY(y);\n this._renderer.updatePosition();\n }\n\n setAngle(angle: float): void {\n super.setAngle(angle);\n this._renderer.updateAngle();\n }\n\n setOpacity(opacity: float): void {\n this._opacity = Math.max(0, Math.min(255, opacity));\n this._renderer.updateOpacity();\n }\n\n getOpacity(): float {\n return this._opacity;\n }\n\n getWidth(): float {\n return this._renderer.getWidth();\n }\n\n getHeight(): float {\n return this._renderer.getHeight();\n }\n\n setWidth(newWidth: float): void {\n const unscaledWidth = this._renderer.getUnscaledWidth();\n if (unscaledWidth !== 0) {\n this.setScaleX(newWidth / unscaledWidth);\n }\n }\n\n setHeight(newHeight: float): void {\n const unscaledHeight = this._renderer.getUnscaledHeight();\n if (unscaledHeight !== 0) {\n this.setScaleY(newHeight / unscaledHeight);\n }\n }\n\n setSize(newWidth: number, newHeight: number): void {\n this.setWidth(newWidth);\n this.setHeight(newHeight);\n }\n\n setScale(newScale: float): void {\n if (newScale < 0) {\n newScale = 0;\n }\n if (\n newScale === Math.abs(this._scaleX) &&\n newScale === Math.abs(this._scaleY)\n ) {\n return;\n }\n this._scaleX = newScale * (this._flippedX ? -1 : 1);\n this._scaleY = newScale * (this._flippedY ? -1 : 1);\n this._renderer.updateScale();\n this.invalidateHitboxes();\n }\n\n setScaleX(newScale: float): void {\n if (newScale < 0) {\n newScale = 0;\n }\n if (newScale === Math.abs(this._scaleX)) {\n return;\n }\n this._scaleX = newScale * (this._flippedX ? -1 : 1);\n this._renderer.updateScale();\n this.invalidateHitboxes();\n }\n\n setScaleY(newScale: float): void {\n if (newScale < 0) {\n newScale = 0;\n }\n if (newScale === Math.abs(this._scaleY)) {\n return;\n }\n this._scaleY = newScale * (this._flippedY ? -1 : 1);\n this._renderer.updateScale();\n this.invalidateHitboxes();\n }\n\n /**\n * Get the scale of the object (or the geometric mean of the X and Y scale in case they are different).\n *\n * @return the scale of the object (or the geometric mean of the X and Y scale in case they are different).\n */\n getScale(): float {\n const scaleX = Math.abs(this._scaleX);\n const scaleY = Math.abs(this._scaleY);\n return scaleX === scaleY ? scaleX : Math.sqrt(scaleX * scaleY);\n }\n\n getScaleY(): float {\n return Math.abs(this._scaleY);\n }\n\n getScaleX(): float {\n return Math.abs(this._scaleX);\n }\n\n isFlippedX(): boolean {\n return this._flippedX;\n }\n\n isFlippedY(): boolean {\n return this._flippedY;\n }\n\n flipX(enable: boolean) {\n if (enable !== this._flippedX) {\n this._scaleX *= -1;\n this._flippedX = enable;\n this.invalidateHitboxes();\n this._renderer.updateScale();\n }\n }\n\n flipY(enable: boolean) {\n if (enable !== this._flippedY) {\n this._scaleY *= -1;\n this._flippedY = enable;\n this.invalidateHitboxes();\n this._renderer.updateScale();\n }\n }\n\n setAnimationIndex(animationIndex: number): void {\n this.setAnimationIndexWithMixing(\n animationIndex,\n this._animationMixingDuration\n );\n }\n\n setAnimationIndexWithMixing(\n animationIndex: number,\n mixingDuration: number\n ): void {\n if (\n this._animations.length === 0 ||\n this._currentAnimationIndex === animationIndex ||\n !this.isAnimationIndex(animationIndex)\n ) {\n return;\n }\n const previousAnimation = this._animations[this._currentAnimationIndex];\n const newAnimation = this._animations[animationIndex];\n this._currentAnimationIndex = animationIndex;\n\n if (previousAnimation) {\n this._renderer.setMixing(\n previousAnimation.source,\n newAnimation.source,\n mixingDuration\n );\n }\n this._renderer.setAnimation(newAnimation.source, newAnimation.loop);\n this._isPausedFrameDirty = true;\n }\n\n setAnimationName(animationName: string): void {\n this.setAnimationNameWithMixing(\n animationName,\n this._animationMixingDuration\n );\n }\n\n setAnimationNameWithMixing(\n animationName: string,\n mixingDuration: number\n ): void {\n this.setAnimationIndexWithMixing(\n this.getAnimationIndexFor(animationName),\n mixingDuration\n );\n }\n\n getAnimationIndexFor(animationName: string): number {\n return this._animations.findIndex(\n (animation) => animation.name === animationName\n );\n }\n\n /**\n * Return the duration in second for the smooth transition between 2 animations.\n */\n getAnimationMixingDuration(): number {\n return this._animationMixingDuration;\n }\n\n /**\n * Change the duration in second for the smooth transition between 2 animations.\n */\n setAnimationMixingDuration(animationMixingDuration: number): void {\n this._animationMixingDuration = animationMixingDuration;\n }\n\n getAnimationIndex(): number {\n return this._currentAnimationIndex;\n }\n\n getAnimationName(): string {\n return this.isAnimationIndex(this._currentAnimationIndex)\n ? this._animations[this._currentAnimationIndex].name\n : '';\n }\n\n isAnimationIndex(animationIndex: number): boolean {\n return (\n Number.isInteger(animationIndex) &&\n animationIndex >= 0 &&\n animationIndex < this._animations.length\n );\n }\n\n hasAnimationEnded(): boolean {\n return this._renderer.isAnimationComplete();\n }\n\n isAnimationPaused() {\n return this._animationPaused;\n }\n\n pauseAnimation() {\n this._animationPaused = true;\n }\n\n resumeAnimation() {\n this._animationPaused = false;\n }\n\n getAnimationSpeedScale() {\n return this._animationSpeedScale;\n }\n\n setAnimationSpeedScale(ratio: float): void {\n this._animationSpeedScale = ratio;\n }\n\n getAnimationElapsedTime(): number {\n if (this._animations.length === 0) {\n return 0;\n }\n return this._renderer.getAnimationElapsedTime();\n }\n\n setAnimationElapsedTime(time: number): void {\n if (this._animations.length === 0) {\n return;\n }\n this._renderer.setAnimationElapsedTime(time);\n this._isPausedFrameDirty = true;\n }\n\n getPointAttachmentX(attachmentName: string, slotName?: string): number {\n return this._renderer.getPointAttachmentPosition(attachmentName, slotName)\n .x;\n }\n\n getPointAttachmentY(attachmentName: string, slotName?: string): number {\n return this._renderer.getPointAttachmentPosition(attachmentName, slotName)\n .y;\n }\n\n getAnimationDuration(): number {\n if (this._animations.length === 0) {\n return 0;\n }\n return this._renderer.getAnimationDuration(\n this._animations[this._currentAnimationIndex].source\n );\n }\n }\n\n gdjs.registerObject('SpineObject::SpineObject', gdjs.SpineRuntimeObject);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -341,7 +341,7 @@ module.exports = {
341
341
  _('Leave current lobby'),
342
342
  _('Marks the player as having left the current lobby.'),
343
343
  _('Leave the current lobby'),
344
- _('Matchmaking/Current lobby'),
344
+ _('MatchmakingCurrent lobby'),
345
345
  'JsPlatform/Extensions/steam.svg',
346
346
  'JsPlatform/Extensions/steam.svg'
347
347
  )
@@ -357,7 +357,7 @@ module.exports = {
357
357
  'Opens the steam invitation dialogue to let the player invite their Steam friends to the current lobby. Only works if the player is currently in a lobby.'
358
358
  ),
359
359
  _('Open lobby invitation dialogue'),
360
- _('Matchmaking/Current lobby'),
360
+ _('MatchmakingCurrent lobby'),
361
361
  'JsPlatform/Extensions/steam.svg',
362
362
  'JsPlatform/Extensions/steam.svg'
363
363
  )
@@ -377,7 +377,7 @@ module.exports = {
377
377
  _(
378
378
  'Set current lobby attribute _PARAM0_ to _PARAM1_ (store result in _PARAM2_)'
379
379
  ),
380
- _('Matchmaking/Current lobby'),
380
+ _('MatchmakingCurrent lobby'),
381
381
  'JsPlatform/Extensions/steam.svg',
382
382
  'JsPlatform/Extensions/steam.svg'
383
383
  )
@@ -402,7 +402,7 @@ module.exports = {
402
402
  _('Set the lobby joinability'),
403
403
  _('Sets whether other users can join the current lobby or not.'),
404
404
  _('Make current lobby joinable: _PARAM0_ (store result in _PARAM1_)'),
405
- _('Matchmaking/Current lobby'),
405
+ _('MatchmakingCurrent lobby'),
406
406
  'JsPlatform/Extensions/steam.svg',
407
407
  'JsPlatform/Extensions/steam.svg'
408
408
  )
@@ -421,7 +421,7 @@ module.exports = {
421
421
  _("Get the lobby's members"),
422
422
  _('Gets the Steam ID of all players in the current lobby.'),
423
423
  _('Store the array of all players in _PARAM0_'),
424
- _('Matchmaking/Current lobby'),
424
+ _('MatchmakingCurrent lobby'),
425
425
  'JsPlatform/Extensions/steam.svg',
426
426
  'JsPlatform/Extensions/steam.svg'
427
427
  )
@@ -463,7 +463,7 @@ module.exports = {
463
463
  _(
464
464
  'The ID of the current lobby, useful for letting other players join it.'
465
465
  ),
466
- _('Matchmaking/Current lobby'),
466
+ _('MatchmakingCurrent lobby'),
467
467
  'JsPlatform/Extensions/steam.svg'
468
468
  )
469
469
  .getCodeExtraInformation()
@@ -475,7 +475,7 @@ module.exports = {
475
475
  'CurrentLobbyAttribute',
476
476
  _('Attribute of the lobby'),
477
477
  _("Obtains the value of one of the current lobby's attributes."),
478
- _('Matchmaking/Current lobby'),
478
+ _('MatchmakingCurrent lobby'),
479
479
  'JsPlatform/Extensions/steam.svg'
480
480
  )
481
481
  .addParameter(
@@ -493,7 +493,7 @@ module.exports = {
493
493
  'CurrentLobbyMemberCount',
494
494
  _('Member count of the lobby'),
495
495
  _("Obtains the current lobby's member count."),
496
- _('Matchmaking/Current lobby'),
496
+ _('MatchmakingCurrent lobby'),
497
497
  'JsPlatform/Extensions/steam.svg'
498
498
  )
499
499
  .getCodeExtraInformation()
@@ -505,7 +505,7 @@ module.exports = {
505
505
  'CurrentLobbyMemberLimit',
506
506
  _('Member limit of the lobby'),
507
507
  _("Obtains the current lobby's maximum member limit."),
508
- _('Matchmaking/Current lobby'),
508
+ _('MatchmakingCurrent lobby'),
509
509
  'JsPlatform/Extensions/steam.svg'
510
510
  )
511
511
  .getCodeExtraInformation()
@@ -517,7 +517,7 @@ module.exports = {
517
517
  'CurrentLobbyOwner',
518
518
  _('Owner of the lobby'),
519
519
  _('Obtains the Steam ID of the user that owns the current lobby.'),
520
- _('Matchmaking/Current lobby'),
520
+ _('MatchmakingCurrent lobby'),
521
521
  'JsPlatform/Extensions/steam.svg'
522
522
  )
523
523
  .getCodeExtraInformation()
@@ -1200,7 +1200,7 @@ module.exports = {
1200
1200
  _(
1201
1201
  'The amount of data that has been downloaded by Steam for a currrently downloading item so far.'
1202
1202
  ),
1203
- _('Workshop/Download'),
1203
+ _('WorkshopDownload'),
1204
1204
  'JsPlatform/Extensions/steam.svg'
1205
1205
  )
1206
1206
  .addParameter(
@@ -1220,7 +1220,7 @@ module.exports = {
1220
1220
  _(
1221
1221
  'The amount of data that needs to be downloaded in total by Steam for a currrently downloading item.'
1222
1222
  ),
1223
- _('Workshop/Download'),
1223
+ _('WorkshopDownload'),
1224
1224
  'JsPlatform/Extensions/steam.svg'
1225
1225
  )
1226
1226
  .addParameter(
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../GDevelop/Extensions/Steamworks/Z_steamworksinputtools.ts"],
4
- "sourcesContent": ["namespace gdjs {\n export namespace steamworks {\n gdjs.registerFirstRuntimeSceneLoadedCallback(() => {\n if (gdjs.steamworks.steamAPI) gdjs.steamworks.steamAPI.input.init();\n });\n\n export function getControllerCount(): integer {\n return gdjs.steamworks.steamAPI\n ? gdjs.steamworks.steamAPI.input.getControllers().length\n : 0;\n }\n\n export function activateActionSet(\n controllerIndex: number,\n actionSetName: string\n ): void {\n if (!gdjs.steamworks.steamAPI) return;\n gdjs.steamworks.steamAPI.input\n .getControllers()\n [controllerIndex]?.activateActionSet(\n gdjs.steamworks.steamAPI.input.getActionSet(actionSetName)\n );\n }\n\n export function isDigitalActionPressed(\n controllerIndex: number,\n actionName: string\n ): boolean {\n if (!gdjs.steamworks.steamAPI) return false;\n return !!gdjs.steamworks.steamAPI.input\n .getControllers()\n [controllerIndex]?.isDigitalActionPressed(\n gdjs.steamworks.steamAPI.input.getDigitalAction(actionName)\n );\n }\n\n export function getAnalogActionVectorX(\n controllerIndex: number,\n actionName: string\n ): float {\n return gdjs.steamworks.steamAPI\n ? gdjs.steamworks.steamAPI.input\n .getControllers()\n [controllerIndex]?.getAnalogActionVector(\n gdjs.steamworks.steamAPI.input.getAnalogAction(actionName)\n ).x ?? 0\n : 0;\n }\n\n export function getAnalogActionVectorY(\n controllerIndex: number,\n actionName: string\n ): float {\n return gdjs.steamworks.steamAPI\n ? gdjs.steamworks.steamAPI.input\n .getControllers()\n [controllerIndex]?.getAnalogActionVector(\n gdjs.steamworks.steamAPI.input.getAnalogAction(actionName)\n ).y ?? 0\n : 0;\n }\n }\n}\n"],
5
- "mappings": "AAAA,GAAU,MAAV,UAAU,EAAV,CACS,GAAU,GAAV,UAAU,EAAV,CACL,EAAK,wCAAwC,IAAM,CACjD,AAAI,EAAK,WAAW,UAAU,EAAK,WAAW,SAAS,MAAM,SAGxD,YAAuC,CAC5C,MAAO,GAAK,WAAW,SACnB,EAAK,WAAW,SAAS,MAAM,iBAAiB,OAChD,EAHC,EAAS,qBAMT,WACL,EACA,EACM,CACN,AAAI,CAAC,EAAK,WAAW,UACrB,EAAK,WAAW,SAAS,MACtB,iBACA,IAAkB,kBACjB,EAAK,WAAW,SAAS,MAAM,aAAa,IAR3C,EAAS,oBAYT,WACL,EACA,EACS,CACT,MAAK,GAAK,WAAW,SACd,CAAC,CAAC,EAAK,WAAW,SAAS,MAC/B,iBACA,IAAkB,uBACjB,EAAK,WAAW,SAAS,MAAM,iBAAiB,IAJd,GAJjC,EAAS,yBAYT,WACL,EACA,EACO,CACP,MAAO,GAAK,WAAW,SACnB,EAAK,WAAW,SAAS,MACtB,iBACA,IAAkB,sBACjB,EAAK,WAAW,SAAS,MAAM,gBAAgB,IAC/C,GAAK,EACT,EAVC,EAAS,yBAaT,WACL,EACA,EACO,CACP,MAAO,GAAK,WAAW,SACnB,EAAK,WAAW,SAAS,MACtB,iBACA,IAAkB,sBACjB,EAAK,WAAW,SAAS,MAAM,gBAAgB,IAC/C,GAAK,EACT,EAVC,EAAS,2BAhDD,qCADT",
4
+ "sourcesContent": ["namespace gdjs {\n export namespace steamworks {\n gdjs.registerFirstRuntimeSceneLoadedCallback(() => {\n if (gdjs.steamworks.steamAPI) gdjs.steamworks.steamAPI.input.init();\n });\n\n export function getControllerCount(): integer {\n return gdjs.steamworks.steamAPI\n ? gdjs.steamworks.steamAPI.input.getControllers().length\n : 0;\n }\n\n export function activateActionSet(\n controllerIndex: number,\n actionSetName: string\n ): void {\n if (!gdjs.steamworks.steamAPI) return;\n gdjs.steamworks.steamAPI.input\n .getControllers()\n [\n controllerIndex\n ]?.activateActionSet(gdjs.steamworks.steamAPI.input.getActionSet(actionSetName));\n }\n\n export function isDigitalActionPressed(\n controllerIndex: number,\n actionName: string\n ): boolean {\n if (!gdjs.steamworks.steamAPI) return false;\n return !!gdjs.steamworks.steamAPI.input\n .getControllers()\n [\n controllerIndex\n ]?.isDigitalActionPressed(gdjs.steamworks.steamAPI.input.getDigitalAction(actionName));\n }\n\n export function getAnalogActionVectorX(\n controllerIndex: number,\n actionName: string\n ): float {\n return gdjs.steamworks.steamAPI\n ? (gdjs.steamworks.steamAPI.input\n .getControllers()\n [\n controllerIndex\n ]?.getAnalogActionVector(gdjs.steamworks.steamAPI.input.getAnalogAction(actionName))\n .x ?? 0)\n : 0;\n }\n\n export function getAnalogActionVectorY(\n controllerIndex: number,\n actionName: string\n ): float {\n return gdjs.steamworks.steamAPI\n ? (gdjs.steamworks.steamAPI.input\n .getControllers()\n [\n controllerIndex\n ]?.getAnalogActionVector(gdjs.steamworks.steamAPI.input.getAnalogAction(actionName))\n .y ?? 0)\n : 0;\n }\n }\n}\n"],
5
+ "mappings": "AAAA,GAAU,MAAV,UAAU,EAAV,CACS,GAAU,GAAV,UAAU,EAAV,CACL,EAAK,wCAAwC,IAAM,CACjD,AAAI,EAAK,WAAW,UAAU,EAAK,WAAW,SAAS,MAAM,SAGxD,YAAuC,CAC5C,MAAO,GAAK,WAAW,SACnB,EAAK,WAAW,SAAS,MAAM,iBAAiB,OAChD,EAHC,EAAS,qBAMT,WACL,EACA,EACM,CACN,AAAI,CAAC,EAAK,WAAW,UACrB,EAAK,WAAW,SAAS,MACtB,iBAEC,IACC,kBAAkB,EAAK,WAAW,SAAS,MAAM,aAAa,IAT9D,EAAS,oBAYT,WACL,EACA,EACS,CACT,MAAK,GAAK,WAAW,SACd,CAAC,CAAC,EAAK,WAAW,SAAS,MAC/B,iBAEC,IACC,uBAAuB,EAAK,WAAW,SAAS,MAAM,iBAAiB,IALtC,GAJjC,EAAS,yBAYT,WACL,EACA,EACO,CACP,MAAO,GAAK,WAAW,SAClB,EAAK,WAAW,SAAS,MACvB,iBAEC,IACC,sBAAsB,EAAK,WAAW,SAAS,MAAM,gBAAgB,IACvE,GAAK,EACR,EAXC,EAAS,yBAcT,WACL,EACA,EACO,CACP,MAAO,GAAK,WAAW,SAClB,EAAK,WAAW,SAAS,MACvB,iBAEC,IACC,sBAAsB,EAAK,WAAW,SAAS,MAAM,gBAAgB,IACvE,GAAK,EACR,EAXC,EAAS,2BAjDD,qCADT",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../GDevelop/Extensions/Steamworks/steamworkstools.ts"],
4
- "sourcesContent": ["namespace gdjs {\n export namespace steamworks {\n const logger = new gdjs.Logger('Steamworks');\n export let steamAPI: import('steamworks.js').Client | null = null;\n\n gdjs.registerFirstRuntimeSceneLoadedCallback((runtimeScene) => {\n const remote = runtimeScene.getGame().getRenderer().getElectronRemote();\n if (!remote) return; // Steamworks is only supported on electron\n\n try {\n const steamworks_js = remote.require(\n 'steamworks.js'\n ) as typeof import('steamworks.js');\n\n // Sets the proper electron flags for the steam overlay to function properly\n steamworks_js.electronEnableSteamOverlay();\n\n const unparsedAppID = runtimeScene\n .getGame()\n .getExtensionProperty('Steamworks', 'AppID');\n\n if (!unparsedAppID) {\n logger.error(\n 'A steam AppID needs to be configured in the game properties for steamworks features to be used!'\n );\n return;\n }\n\n const appID = parseInt(unparsedAppID, 10);\n\n // Restart the game through steam if it needs to be launched with steam but has not been\n if (\n runtimeScene\n .getGame()\n .getExtensionProperty('Steamworks', 'RequireSteam') &&\n !runtimeScene.getGame().isPreview() &&\n steamworks_js.restartAppIfNecessary(appID)\n ) {\n remote.process.exit(1);\n return;\n }\n\n steamAPI = steamworks_js.init(appID);\n } catch {\n logger.error(\n 'Something wrong happened while initializing Steamworks! Is Steam currently launched?'\n );\n }\n });\n\n // ---\n\n export function claimAchievement(achievement: string): void {\n if (steamAPI) steamAPI.achievement.activate(achievement);\n else\n logger.warn(\n `Could not claim achievement ${achievement}, steamworks was not properly loaded!`\n );\n }\n\n export function unclaimAchievement(achievement: string): void {\n if (steamAPI) steamAPI.achievement.clear(achievement);\n else\n logger.warn(\n `Could not unclaim achievement ${achievement}, steamworks was not properly loaded!`\n );\n }\n\n export function hasAchievement(achievement: string): boolean {\n return !!steamAPI && steamAPI.achievement.isActivated(achievement);\n }\n\n // ---\n\n export function getSteamId(): string {\n return steamAPI\n ? steamAPI.localplayer.getSteamId().steamId64.toString(10)\n : '';\n }\n\n export function getName(): string {\n return steamAPI ? steamAPI.localplayer.getName() : 'Unknown';\n }\n\n export function getCountry(): string {\n return steamAPI ? steamAPI.localplayer.getIpCountry() : 'Unknown';\n }\n\n export function getLevel(): number {\n return steamAPI ? steamAPI.localplayer.getLevel() : 0;\n }\n\n export function setRichPresence(key: string, value: string): void {\n if (steamAPI) steamAPI.localplayer.setRichPresence(key, value);\n else\n logger.warn(\n `Could not set the rich presence, steamworks was not properly loaded!`\n );\n }\n\n // ---\n\n export function isSteamworksProperlyLoaded(): boolean {\n return !!steamAPI;\n }\n\n export function getAppID(): number {\n return steamAPI ? steamAPI.utils.getAppId() : 0;\n }\n\n export function getServerRealTime(): number {\n return steamAPI ? steamAPI.utils.getServerRealTime() : Date.now();\n }\n\n export function isOnSteamDeck(): boolean {\n return steamAPI ? steamAPI.utils.isSteamRunningOnSteamDeck() : false;\n }\n\n // ---\n\n enum LobbyType {\n Private = 0,\n FriendsOnly = 1,\n Public = 2,\n Invisible = 3,\n }\n\n const knownLobbies = new Map<\n string,\n import('steamworks.js/client').matchmaking.Lobby\n >();\n let currentLobby:\n | import('steamworks.js/client').matchmaking.Lobby\n | null = null;\n\n export function getKnownLobby(lobbyId: string) {\n if (!steamAPI) {\n logger.warn(\n `Could not access lobby '${lobbyId}', steamworks was not properly loaded!`\n );\n return null;\n }\n\n const lobby = knownLobbies.get(lobbyId);\n if (!lobby) {\n logger.error(\n `Could not access lobby '${lobbyId}'! You might need to join it before trying to access it.`\n );\n return null;\n }\n\n return lobby;\n }\n\n export function createLobby(\n lobbyType: 'Private' | 'FriendsOnly' | 'Public' | 'Invisible',\n maxPlayers: number,\n result: gdjs.Variable\n ): gdjs.AsyncTask {\n if (steamAPI) {\n return new gdjs.PromiseTask(\n steamAPI.matchmaking\n .createLobby(\n LobbyType[lobbyType] as any /* Const enums are \uD83D\uDE29 */,\n maxPlayers\n )\n .then((lobby) => {\n const id = lobby.id.toString(10);\n knownLobbies.set(id, lobby);\n currentLobby = lobby;\n result.setString(id);\n })\n .catch(() => {\n result.setString('failure');\n })\n );\n } else {\n logger.warn(\n `Could not create a lobby, steamworks was not properly loaded!`\n );\n return new gdjs.ResolveTask();\n }\n }\n\n export function getLobbiesList(results: gdjs.Variable): gdjs.AsyncTask {\n if (steamAPI) {\n return new gdjs.PromiseTask(\n steamAPI.matchmaking\n .getLobbies()\n .then((lobbies) => {\n const allLobbiesIds = lobbies.map((lobby) => {\n const id = lobby.id.toString(10);\n knownLobbies.set(id, lobby);\n return id;\n });\n results.fromJSObject(allLobbiesIds);\n })\n .catch(() => {\n results.setString('failure');\n })\n );\n } else {\n logger.warn(\n `Could not obtain the lobbies list, steamworks was not properly loaded!`\n );\n return new gdjs.ResolveTask();\n }\n }\n\n export function joinLobby(\n lobbyId: string,\n result: gdjs.Variable\n ): gdjs.AsyncTask {\n if (steamAPI) {\n return new gdjs.PromiseTask(\n steamAPI.matchmaking\n .joinLobby(BigInt(lobbyId))\n .then((lobby) => {\n knownLobbies.set(lobbyId, lobby);\n currentLobby = lobby;\n result.setString(lobbyId);\n })\n .catch(() => {\n result.setString('failure');\n })\n );\n } else {\n logger.warn(\n `Could not join a lobby, steamworks was not properly loaded!`\n );\n return new gdjs.ResolveTask();\n }\n }\n\n export function getCurrentLobbyId(): string {\n return currentLobby ? currentLobby.id.toString(10) : 'none';\n }\n\n export function leaveCurrentLobby(): void {\n if (currentLobby) currentLobby.leave();\n }\n\n export function openDialogForInvitingUsersToTheCurrentLobby(): void {\n if (currentLobby) currentLobby.openInviteDialog();\n }\n\n export function getCurrentLobbyAttribute(attribute: string): string {\n if (!currentLobby) return '';\n\n const data = currentLobby.getData(attribute);\n return data === null ? '' : data;\n }\n\n export function getLobbyAttribute(\n lobbyId: string,\n attribute: string\n ): string {\n const lobby = getKnownLobby(lobbyId);\n if (!lobby) return '';\n\n const data = lobby.getData(attribute);\n return data === null ? '' : data;\n }\n\n export function setCurrentLobbyAttribute(\n attribute: string,\n value: string,\n success: gdjs.Variable\n ): void {\n if (currentLobby)\n success.setBoolean(currentLobby.setData(attribute, value));\n }\n\n export function setCurrentLobbyJoinability(\n shouldBeJoinable: boolean,\n success: gdjs.Variable\n ): void {\n if (currentLobby)\n success.setBoolean(currentLobby.setJoinable(shouldBeJoinable));\n }\n\n export function getCurrentLobbyMemberCount(): number {\n return currentLobby ? Number(currentLobby.getMemberCount()) : 0;\n }\n\n export function getLobbyMemberCount(lobbyId: string): number {\n const lobby = getKnownLobby(lobbyId);\n return lobby ? Number(lobby.getMemberCount()) : 0;\n }\n\n export function getCurrentLobbyMemberLimit(): number {\n return currentLobby ? Number(currentLobby.getMemberLimit()) : 0;\n }\n\n export function getLobbyMemberLimit(lobbyId: string): number {\n const lobby = getKnownLobby(lobbyId);\n if (!lobby) return 0;\n return lobby ? Number(lobby.getMemberLimit()) : 0;\n }\n\n export function getCurrentLobbyOwner(): string {\n return currentLobby ? currentLobby.getOwner().steamId64.toString(10) : '';\n }\n\n export function getLobbyOwner(lobbyId: string): string {\n const lobby = getKnownLobby(lobbyId);\n return lobby ? lobby.getOwner().steamId64.toString(10) : '';\n }\n\n export function getCurrentLobbyMembersList(storeIn: gdjs.Variable): void {\n if (currentLobby) {\n storeIn.fromJSObject(\n currentLobby\n .getMembers()\n .map((steamID) => steamID.steamId64.toString(10))\n );\n }\n }\n\n export function getLobbyMembersList(\n lobbyId: string,\n storeIn: gdjs.Variable\n ): void {\n const lobby = getKnownLobby(lobbyId);\n if (lobby) {\n storeIn.fromJSObject(\n lobby.getMembers().map((steamID) => steamID.steamId64.toString(10))\n );\n }\n }\n\n // ---\n\n export function isAppOwned(appId: string): boolean {\n return !!steamAPI && steamAPI.apps.isSubscribedApp(Number(appId));\n }\n\n export function isAppInstalled(appId: string): boolean {\n return !!steamAPI && steamAPI.apps.isAppInstalled(Number(appId));\n }\n\n export function isDLCInstalled(dlcId: string): boolean {\n return !!steamAPI && steamAPI.apps.isDlcInstalled(Number(dlcId));\n }\n\n export function getAppInstallDirectory(appId: string): string {\n return steamAPI ? steamAPI.apps.appInstallDir(Number(appId)) : '';\n }\n\n export function isVacBanned(): boolean {\n return !!steamAPI && steamAPI.apps.isVacBanned();\n }\n\n export function isLowViolence(): boolean {\n return !!steamAPI && steamAPI.apps.isLowViolence();\n }\n\n export function userBoughtTheGame(): boolean {\n return !!steamAPI && steamAPI.apps.isSubscribed();\n }\n\n export function currentGameLanguage(): string {\n return steamAPI ? steamAPI.apps.currentGameLanguage() : '';\n }\n\n export function currentBetaName(): string {\n return steamAPI ? steamAPI.apps.currentBetaName() || '' : '';\n }\n\n export function getBuildId(): number {\n return steamAPI ? steamAPI.apps.appBuildId() : 0;\n }\n\n // ---\n\n export function isCloudEnabled(): boolean {\n return (\n !!steamAPI &&\n steamAPI.cloud.isEnabledForAccount() &&\n steamAPI.cloud.isEnabledForApp()\n );\n }\n\n export function readFile(fileName: string): string {\n return steamAPI ? steamAPI.cloud.readFile(fileName) : '';\n }\n\n export function writeFile(\n fileName: string,\n content: string,\n results: gdjs.Variable\n ): void {\n if (steamAPI)\n results.setBoolean(steamAPI.cloud.writeFile(fileName, content));\n }\n\n export function fileExists(fileName: string): boolean {\n return steamAPI ? steamAPI.cloud.fileExists(fileName) : false;\n }\n\n export function deleteFile(fileName: string, results: gdjs.Variable): void {\n if (steamAPI) results.setBoolean(steamAPI.cloud.deleteFile(fileName));\n }\n\n // ---\n\n export function createWorkshopItem(result: gdjs.Variable): gdjs.AsyncTask {\n if (steamAPI)\n return new gdjs.PromiseTask(\n steamAPI.workshop\n .createItem()\n .then(({ itemId }) => {\n result.setString(itemId.toString());\n })\n .catch(() => {\n result.setString('failure');\n })\n );\n else {\n result.setString('failure');\n return new gdjs.ResolveTask();\n }\n }\n\n enum UgcItemVisibility {\n Public = 0,\n FriendsOnly = 1,\n Private = 2,\n Unlisted = 3,\n }\n\n export function updateWorkshopItem(\n itemId: string,\n title: string,\n description: string,\n changeNote: string,\n previewPath: string,\n contentPath: string,\n tags: string,\n visibility: keyof import('steamworks.js/client').workshop.UgcItemVisibility,\n result: gdjs.Variable\n ): gdjs.AsyncTask {\n if (steamAPI) {\n const changes: import('steamworks.js/client').workshop.UgcUpdate = {};\n\n if (title) changes.title = title;\n if (description) changes.description = description;\n if (changeNote) changes.changeNote = changeNote;\n if (previewPath) changes.previewPath = previewPath;\n if (contentPath) changes.contentPath = contentPath;\n if (tags) changes.tags = tags.split(',');\n if (visibility)\n //@ts-ignore const enum \uD83D\uDE29\n changes.visibility = UgcItemVisibility[visibility];\n\n return new gdjs.PromiseTask(\n steamAPI.workshop\n .updateItem(BigInt(itemId), changes)\n .then(() => {\n result.setBoolean(true);\n })\n .catch(() => {\n result.setBoolean(false);\n })\n );\n } else {\n result.setBoolean(false);\n return new gdjs.ResolveTask();\n }\n }\n\n export function subscribeToWorkshopItem(\n itemId: string,\n result: gdjs.Variable\n ): gdjs.AsyncTask {\n if (steamAPI)\n return new gdjs.PromiseTask(\n steamAPI.workshop\n .subscribe(BigInt(itemId))\n .then(() => {\n result.setBoolean(true);\n })\n .catch(() => {\n result.setBoolean(false);\n })\n );\n else {\n result.setBoolean(false);\n return new gdjs.ResolveTask();\n }\n }\n\n export function unsubscribeToWorkshopItem(\n itemId: string,\n result: gdjs.Variable\n ): gdjs.AsyncTask {\n if (steamAPI)\n return new gdjs.PromiseTask(\n steamAPI.workshop\n .unsubscribe(BigInt(itemId))\n .then(() => {\n result.setBoolean(true);\n })\n .catch(() => {\n result.setBoolean(false);\n })\n );\n else {\n result.setBoolean(false);\n return new gdjs.ResolveTask();\n }\n }\n\n export function startWorkshopDownload(\n itemId: string,\n highPriority: boolean\n ): void {\n if (steamAPI) steamAPI.workshop.download(BigInt(itemId), highPriority);\n }\n\n enum WorkshopItemStates {\n None = 0,\n Subscribed = 1,\n LegacyItem = 2,\n Installed = 4,\n NeedsUpdate = 8,\n Downloading = 16,\n DownloadPending = 32,\n }\n\n export function workshopItemState(\n itemId: string,\n state: keyof WorkshopItemStates\n ): boolean {\n return (\n !!steamAPI &&\n (steamAPI.workshop.state(BigInt(itemId)) &\n WorkshopItemStates[state]) !==\n 0\n );\n }\n\n export function getWorkshopItemLocation(itemId: string): string {\n return steamAPI\n ? steamAPI.workshop.installInfo(BigInt(itemId))?.folder || ''\n : '';\n }\n\n export function getWorkshopItemSizeOnDisk(itemId: string): number {\n return steamAPI\n ? Number(steamAPI.workshop.installInfo(BigInt(itemId))?.sizeOnDisk) || 0\n : 0;\n }\n\n export function getWorkshopItemInstallTimestamp(itemId: string): number {\n return steamAPI\n ? steamAPI.workshop.installInfo(BigInt(itemId))?.timestamp || 0\n : 0;\n }\n\n export function getWorkshopItemDownloadProgress(itemId: string): number {\n return steamAPI\n ? Number(steamAPI.workshop.downloadInfo(BigInt(itemId))?.current) || 0\n : 0;\n }\n\n export function getWorkshopItemDownloadTotal(itemId: string): number {\n return steamAPI\n ? Number(steamAPI.workshop.downloadInfo(BigInt(itemId))?.total) || 0\n : 0;\n }\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["namespace gdjs {\n export namespace steamworks {\n const logger = new gdjs.Logger('Steamworks');\n export let steamAPI: import('steamworks.js').Client | null = null;\n\n gdjs.registerFirstRuntimeSceneLoadedCallback((runtimeScene) => {\n const remote = runtimeScene.getGame().getRenderer().getElectronRemote();\n if (!remote) return; // Steamworks is only supported on electron\n\n try {\n const steamworks_js = remote.require(\n 'steamworks.js'\n ) as typeof import('steamworks.js');\n\n // Sets the proper electron flags for the steam overlay to function properly\n steamworks_js.electronEnableSteamOverlay();\n\n const unparsedAppID = runtimeScene\n .getGame()\n .getExtensionProperty('Steamworks', 'AppID');\n\n if (!unparsedAppID) {\n logger.error(\n 'A steam AppID needs to be configured in the game properties for steamworks features to be used!'\n );\n return;\n }\n\n const appID = parseInt(unparsedAppID, 10);\n\n // Restart the game through steam if it needs to be launched with steam but has not been\n if (\n runtimeScene\n .getGame()\n .getExtensionProperty('Steamworks', 'RequireSteam') &&\n !runtimeScene.getGame().isPreview() &&\n steamworks_js.restartAppIfNecessary(appID)\n ) {\n remote.process.exit(1);\n return;\n }\n\n steamAPI = steamworks_js.init(appID);\n } catch {\n logger.error(\n 'Something wrong happened while initializing Steamworks! Is Steam currently launched?'\n );\n }\n });\n\n // ---\n\n export function claimAchievement(achievement: string): void {\n if (steamAPI) steamAPI.achievement.activate(achievement);\n else\n logger.warn(\n `Could not claim achievement ${achievement}, steamworks was not properly loaded!`\n );\n }\n\n export function unclaimAchievement(achievement: string): void {\n if (steamAPI) steamAPI.achievement.clear(achievement);\n else\n logger.warn(\n `Could not unclaim achievement ${achievement}, steamworks was not properly loaded!`\n );\n }\n\n export function hasAchievement(achievement: string): boolean {\n return !!steamAPI && steamAPI.achievement.isActivated(achievement);\n }\n\n // ---\n\n export function getSteamId(): string {\n return steamAPI\n ? steamAPI.localplayer.getSteamId().steamId64.toString(10)\n : '';\n }\n\n export function getName(): string {\n return steamAPI ? steamAPI.localplayer.getName() : 'Unknown';\n }\n\n export function getCountry(): string {\n return steamAPI ? steamAPI.localplayer.getIpCountry() : 'Unknown';\n }\n\n export function getLevel(): number {\n return steamAPI ? steamAPI.localplayer.getLevel() : 0;\n }\n\n export function setRichPresence(key: string, value: string): void {\n if (steamAPI) steamAPI.localplayer.setRichPresence(key, value);\n else\n logger.warn(\n `Could not set the rich presence, steamworks was not properly loaded!`\n );\n }\n\n // ---\n\n export function isSteamworksProperlyLoaded(): boolean {\n return !!steamAPI;\n }\n\n export function getAppID(): number {\n return steamAPI ? steamAPI.utils.getAppId() : 0;\n }\n\n export function getServerRealTime(): number {\n return steamAPI ? steamAPI.utils.getServerRealTime() : Date.now();\n }\n\n export function isOnSteamDeck(): boolean {\n return steamAPI ? steamAPI.utils.isSteamRunningOnSteamDeck() : false;\n }\n\n // ---\n\n enum LobbyType {\n Private = 0,\n FriendsOnly = 1,\n Public = 2,\n Invisible = 3,\n }\n\n const knownLobbies = new Map<\n string,\n import('steamworks.js/client').matchmaking.Lobby\n >();\n let currentLobby: import('steamworks.js/client').matchmaking.Lobby | null =\n null;\n\n export function getKnownLobby(lobbyId: string) {\n if (!steamAPI) {\n logger.warn(\n `Could not access lobby '${lobbyId}', steamworks was not properly loaded!`\n );\n return null;\n }\n\n const lobby = knownLobbies.get(lobbyId);\n if (!lobby) {\n logger.error(\n `Could not access lobby '${lobbyId}'! You might need to join it before trying to access it.`\n );\n return null;\n }\n\n return lobby;\n }\n\n export function createLobby(\n lobbyType: 'Private' | 'FriendsOnly' | 'Public' | 'Invisible',\n maxPlayers: number,\n result: gdjs.Variable\n ): gdjs.AsyncTask {\n if (steamAPI) {\n return new gdjs.PromiseTask(\n steamAPI.matchmaking\n .createLobby(\n LobbyType[lobbyType] as any /* Const enums are \uD83D\uDE29 */,\n maxPlayers\n )\n .then((lobby) => {\n const id = lobby.id.toString(10);\n knownLobbies.set(id, lobby);\n currentLobby = lobby;\n result.setString(id);\n })\n .catch(() => {\n result.setString('failure');\n })\n );\n } else {\n logger.warn(\n `Could not create a lobby, steamworks was not properly loaded!`\n );\n return new gdjs.ResolveTask();\n }\n }\n\n export function getLobbiesList(results: gdjs.Variable): gdjs.AsyncTask {\n if (steamAPI) {\n return new gdjs.PromiseTask(\n steamAPI.matchmaking\n .getLobbies()\n .then((lobbies) => {\n const allLobbiesIds = lobbies.map((lobby) => {\n const id = lobby.id.toString(10);\n knownLobbies.set(id, lobby);\n return id;\n });\n results.fromJSObject(allLobbiesIds);\n })\n .catch(() => {\n results.setString('failure');\n })\n );\n } else {\n logger.warn(\n `Could not obtain the lobbies list, steamworks was not properly loaded!`\n );\n return new gdjs.ResolveTask();\n }\n }\n\n export function joinLobby(\n lobbyId: string,\n result: gdjs.Variable\n ): gdjs.AsyncTask {\n if (steamAPI) {\n return new gdjs.PromiseTask(\n steamAPI.matchmaking\n .joinLobby(BigInt(lobbyId))\n .then((lobby) => {\n knownLobbies.set(lobbyId, lobby);\n currentLobby = lobby;\n result.setString(lobbyId);\n })\n .catch(() => {\n result.setString('failure');\n })\n );\n } else {\n logger.warn(\n `Could not join a lobby, steamworks was not properly loaded!`\n );\n return new gdjs.ResolveTask();\n }\n }\n\n export function getCurrentLobbyId(): string {\n return currentLobby ? currentLobby.id.toString(10) : 'none';\n }\n\n export function leaveCurrentLobby(): void {\n if (currentLobby) currentLobby.leave();\n }\n\n export function openDialogForInvitingUsersToTheCurrentLobby(): void {\n if (currentLobby) currentLobby.openInviteDialog();\n }\n\n export function getCurrentLobbyAttribute(attribute: string): string {\n if (!currentLobby) return '';\n\n const data = currentLobby.getData(attribute);\n return data === null ? '' : data;\n }\n\n export function getLobbyAttribute(\n lobbyId: string,\n attribute: string\n ): string {\n const lobby = getKnownLobby(lobbyId);\n if (!lobby) return '';\n\n const data = lobby.getData(attribute);\n return data === null ? '' : data;\n }\n\n export function setCurrentLobbyAttribute(\n attribute: string,\n value: string,\n success: gdjs.Variable\n ): void {\n if (currentLobby)\n success.setBoolean(currentLobby.setData(attribute, value));\n }\n\n export function setCurrentLobbyJoinability(\n shouldBeJoinable: boolean,\n success: gdjs.Variable\n ): void {\n if (currentLobby)\n success.setBoolean(currentLobby.setJoinable(shouldBeJoinable));\n }\n\n export function getCurrentLobbyMemberCount(): number {\n return currentLobby ? Number(currentLobby.getMemberCount()) : 0;\n }\n\n export function getLobbyMemberCount(lobbyId: string): number {\n const lobby = getKnownLobby(lobbyId);\n return lobby ? Number(lobby.getMemberCount()) : 0;\n }\n\n export function getCurrentLobbyMemberLimit(): number {\n return currentLobby ? Number(currentLobby.getMemberLimit()) : 0;\n }\n\n export function getLobbyMemberLimit(lobbyId: string): number {\n const lobby = getKnownLobby(lobbyId);\n if (!lobby) return 0;\n return lobby ? Number(lobby.getMemberLimit()) : 0;\n }\n\n export function getCurrentLobbyOwner(): string {\n return currentLobby ? currentLobby.getOwner().steamId64.toString(10) : '';\n }\n\n export function getLobbyOwner(lobbyId: string): string {\n const lobby = getKnownLobby(lobbyId);\n return lobby ? lobby.getOwner().steamId64.toString(10) : '';\n }\n\n export function getCurrentLobbyMembersList(storeIn: gdjs.Variable): void {\n if (currentLobby) {\n storeIn.fromJSObject(\n currentLobby\n .getMembers()\n .map((steamID) => steamID.steamId64.toString(10))\n );\n }\n }\n\n export function getLobbyMembersList(\n lobbyId: string,\n storeIn: gdjs.Variable\n ): void {\n const lobby = getKnownLobby(lobbyId);\n if (lobby) {\n storeIn.fromJSObject(\n lobby.getMembers().map((steamID) => steamID.steamId64.toString(10))\n );\n }\n }\n\n // ---\n\n export function isAppOwned(appId: string): boolean {\n return !!steamAPI && steamAPI.apps.isSubscribedApp(Number(appId));\n }\n\n export function isAppInstalled(appId: string): boolean {\n return !!steamAPI && steamAPI.apps.isAppInstalled(Number(appId));\n }\n\n export function isDLCInstalled(dlcId: string): boolean {\n return !!steamAPI && steamAPI.apps.isDlcInstalled(Number(dlcId));\n }\n\n export function getAppInstallDirectory(appId: string): string {\n return steamAPI ? steamAPI.apps.appInstallDir(Number(appId)) : '';\n }\n\n export function isVacBanned(): boolean {\n return !!steamAPI && steamAPI.apps.isVacBanned();\n }\n\n export function isLowViolence(): boolean {\n return !!steamAPI && steamAPI.apps.isLowViolence();\n }\n\n export function userBoughtTheGame(): boolean {\n return !!steamAPI && steamAPI.apps.isSubscribed();\n }\n\n export function currentGameLanguage(): string {\n return steamAPI ? steamAPI.apps.currentGameLanguage() : '';\n }\n\n export function currentBetaName(): string {\n return steamAPI ? steamAPI.apps.currentBetaName() || '' : '';\n }\n\n export function getBuildId(): number {\n return steamAPI ? steamAPI.apps.appBuildId() : 0;\n }\n\n // ---\n\n export function isCloudEnabled(): boolean {\n return (\n !!steamAPI &&\n steamAPI.cloud.isEnabledForAccount() &&\n steamAPI.cloud.isEnabledForApp()\n );\n }\n\n export function readFile(fileName: string): string {\n return steamAPI ? steamAPI.cloud.readFile(fileName) : '';\n }\n\n export function writeFile(\n fileName: string,\n content: string,\n results: gdjs.Variable\n ): void {\n if (steamAPI)\n results.setBoolean(steamAPI.cloud.writeFile(fileName, content));\n }\n\n export function fileExists(fileName: string): boolean {\n return steamAPI ? steamAPI.cloud.fileExists(fileName) : false;\n }\n\n export function deleteFile(fileName: string, results: gdjs.Variable): void {\n if (steamAPI) results.setBoolean(steamAPI.cloud.deleteFile(fileName));\n }\n\n // ---\n\n export function createWorkshopItem(result: gdjs.Variable): gdjs.AsyncTask {\n if (steamAPI)\n return new gdjs.PromiseTask(\n steamAPI.workshop\n .createItem()\n .then(({ itemId }) => {\n result.setString(itemId.toString());\n })\n .catch(() => {\n result.setString('failure');\n })\n );\n else {\n result.setString('failure');\n return new gdjs.ResolveTask();\n }\n }\n\n enum UgcItemVisibility {\n Public = 0,\n FriendsOnly = 1,\n Private = 2,\n Unlisted = 3,\n }\n\n export function updateWorkshopItem(\n itemId: string,\n title: string,\n description: string,\n changeNote: string,\n previewPath: string,\n contentPath: string,\n tags: string,\n visibility: keyof import('steamworks.js/client').workshop.UgcItemVisibility,\n result: gdjs.Variable\n ): gdjs.AsyncTask {\n if (steamAPI) {\n const changes: import('steamworks.js/client').workshop.UgcUpdate = {};\n\n if (title) changes.title = title;\n if (description) changes.description = description;\n if (changeNote) changes.changeNote = changeNote;\n if (previewPath) changes.previewPath = previewPath;\n if (contentPath) changes.contentPath = contentPath;\n if (tags) changes.tags = tags.split(',');\n if (visibility)\n //@ts-ignore const enum \uD83D\uDE29\n changes.visibility = UgcItemVisibility[visibility];\n\n return new gdjs.PromiseTask(\n steamAPI.workshop\n .updateItem(BigInt(itemId), changes)\n .then(() => {\n result.setBoolean(true);\n })\n .catch(() => {\n result.setBoolean(false);\n })\n );\n } else {\n result.setBoolean(false);\n return new gdjs.ResolveTask();\n }\n }\n\n export function subscribeToWorkshopItem(\n itemId: string,\n result: gdjs.Variable\n ): gdjs.AsyncTask {\n if (steamAPI)\n return new gdjs.PromiseTask(\n steamAPI.workshop\n .subscribe(BigInt(itemId))\n .then(() => {\n result.setBoolean(true);\n })\n .catch(() => {\n result.setBoolean(false);\n })\n );\n else {\n result.setBoolean(false);\n return new gdjs.ResolveTask();\n }\n }\n\n export function unsubscribeToWorkshopItem(\n itemId: string,\n result: gdjs.Variable\n ): gdjs.AsyncTask {\n if (steamAPI)\n return new gdjs.PromiseTask(\n steamAPI.workshop\n .unsubscribe(BigInt(itemId))\n .then(() => {\n result.setBoolean(true);\n })\n .catch(() => {\n result.setBoolean(false);\n })\n );\n else {\n result.setBoolean(false);\n return new gdjs.ResolveTask();\n }\n }\n\n export function startWorkshopDownload(\n itemId: string,\n highPriority: boolean\n ): void {\n if (steamAPI) steamAPI.workshop.download(BigInt(itemId), highPriority);\n }\n\n enum WorkshopItemStates {\n None = 0,\n Subscribed = 1,\n LegacyItem = 2,\n Installed = 4,\n NeedsUpdate = 8,\n Downloading = 16,\n DownloadPending = 32,\n }\n\n export function workshopItemState(\n itemId: string,\n state: keyof WorkshopItemStates\n ): boolean {\n return (\n !!steamAPI &&\n (steamAPI.workshop.state(BigInt(itemId)) &\n WorkshopItemStates[state]) !==\n 0\n );\n }\n\n export function getWorkshopItemLocation(itemId: string): string {\n return steamAPI\n ? steamAPI.workshop.installInfo(BigInt(itemId))?.folder || ''\n : '';\n }\n\n export function getWorkshopItemSizeOnDisk(itemId: string): number {\n return steamAPI\n ? Number(steamAPI.workshop.installInfo(BigInt(itemId))?.sizeOnDisk) || 0\n : 0;\n }\n\n export function getWorkshopItemInstallTimestamp(itemId: string): number {\n return steamAPI\n ? steamAPI.workshop.installInfo(BigInt(itemId))?.timestamp || 0\n : 0;\n }\n\n export function getWorkshopItemDownloadProgress(itemId: string): number {\n return steamAPI\n ? Number(steamAPI.workshop.downloadInfo(BigInt(itemId))?.current) || 0\n : 0;\n }\n\n export function getWorkshopItemDownloadTotal(itemId: string): number {\n return steamAPI\n ? Number(steamAPI.workshop.downloadInfo(BigInt(itemId))?.total) || 0\n : 0;\n }\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../GDevelop/Extensions/TextEntryObject/textentryruntimeobject-pixi-renderer.ts"],
4
- "sourcesContent": ["namespace gdjs {\n class TextEntryRuntimeObjectPixiRenderer {\n _object: gdjs.TextEntryRuntimeObject;\n _pressHandler: any;\n _upHandler: any;\n _downHandler: any;\n\n constructor(runtimeObject: gdjs.TextEntryRuntimeObject) {\n this._object = runtimeObject;\n this._pressHandler = function (evt) {\n if (!runtimeObject.isActivated()) {\n return;\n }\n evt = evt || window.event;\n const charCode = evt.which || evt.keyCode;\n const charTyped = String.fromCharCode(charCode);\n if (\n charTyped !== undefined &&\n //Skip some non displayable characters\n charCode !== 8\n ) {\n //On Firefox, backspace is considered as a character\n runtimeObject.setString(runtimeObject.getString() + charTyped);\n }\n if (evt.preventDefault) {\n evt.preventDefault();\n }\n return false;\n };\n this._upHandler = function (evt) {\n if (!runtimeObject.isActivated()) {\n return;\n }\n evt = evt || window.event;\n const charCode = evt.which || evt.keyCode;\n if (charCode === 8) {\n //Backspace\n runtimeObject.setString(runtimeObject.getString().slice(0, -1));\n }\n if (evt.preventDefault) {\n evt.preventDefault();\n }\n return false;\n };\n // @ts-expect-error ts-migrate(7030) FIXME: Not all code paths return a value.\n this._downHandler = function (evt) {\n evt = evt || window.event;\n const charCode = evt.which || evt.keyCode;\n\n //Prevent backspace from going to the previous page\n if (charCode === 8) {\n if (evt.preventDefault) {\n evt.preventDefault();\n }\n return false;\n }\n };\n document.addEventListener('keypress', this._pressHandler);\n document.addEventListener('keyup', this._upHandler);\n document.addEventListener('keydown', this._downHandler);\n }\n\n onDestroy() {\n document.removeEventListener('keypress', this._pressHandler);\n document.removeEventListener('keyup', this._upHandler);\n document.removeEventListener('keydown', this._downHandler);\n }\n\n updateString(): void {\n //Nothing to do.\n }\n\n activate(enable) {\n //Nothing to do.\n }\n }\n\n export const TextEntryRuntimeObjectRenderer = TextEntryRuntimeObjectPixiRenderer;\n export type TextEntryRuntimeObjectRenderer = TextEntryRuntimeObjectPixiRenderer;\n}\n"],
5
- "mappings": "AAAA,GAAU,MAAV,UAAU,EAAV,CACE,OAAyC,CAMvC,YAAY,EAA4C,CACtD,KAAK,QAAU,EACf,KAAK,cAAgB,SAAU,EAAK,CAClC,GAAI,CAAC,EAAc,cACjB,OAEF,EAAM,GAAO,OAAO,MACpB,KAAM,GAAW,EAAI,OAAS,EAAI,QAC5B,EAAY,OAAO,aAAa,GACtC,MACE,KAAc,QAEd,IAAa,GAGb,EAAc,UAAU,EAAc,YAAc,GAElD,EAAI,gBACN,EAAI,iBAEC,IAET,KAAK,WAAa,SAAU,EAAK,CAC/B,MAAK,GAAc,cAGnB,GAAM,GAAO,OAAO,MAEhB,AADa,GAAI,OAAS,EAAI,WACjB,GAEf,EAAc,UAAU,EAAc,YAAY,MAAM,EAAG,KAEzD,EAAI,gBACN,EAAI,iBAEC,IAXL,QAcJ,KAAK,aAAe,SAAU,EAAK,CAKjC,GAJA,EAAM,GAAO,OAAO,MAIhB,AAHa,GAAI,OAAS,EAAI,WAGjB,EACf,MAAI,GAAI,gBACN,EAAI,iBAEC,IAGX,SAAS,iBAAiB,WAAY,KAAK,eAC3C,SAAS,iBAAiB,QAAS,KAAK,YACxC,SAAS,iBAAiB,UAAW,KAAK,cAG5C,WAAY,CACV,SAAS,oBAAoB,WAAY,KAAK,eAC9C,SAAS,oBAAoB,QAAS,KAAK,YAC3C,SAAS,oBAAoB,UAAW,KAAK,cAG/C,cAAqB,EAIrB,SAAS,EAAQ,GAKZ,AAAM,iCAAiC,IA7EtC",
4
+ "sourcesContent": ["namespace gdjs {\n class TextEntryRuntimeObjectPixiRenderer {\n _object: gdjs.TextEntryRuntimeObject;\n _pressHandler: any;\n _upHandler: any;\n _downHandler: any;\n\n constructor(runtimeObject: gdjs.TextEntryRuntimeObject) {\n this._object = runtimeObject;\n this._pressHandler = function (evt) {\n if (!runtimeObject.isActivated()) {\n return;\n }\n evt = evt || window.event;\n const charCode = evt.which || evt.keyCode;\n const charTyped = String.fromCharCode(charCode);\n if (\n charTyped !== undefined &&\n //Skip some non displayable characters\n charCode !== 8\n ) {\n //On Firefox, backspace is considered as a character\n runtimeObject.setString(runtimeObject.getString() + charTyped);\n }\n if (evt.preventDefault) {\n evt.preventDefault();\n }\n return false;\n };\n this._upHandler = function (evt) {\n if (!runtimeObject.isActivated()) {\n return;\n }\n evt = evt || window.event;\n const charCode = evt.which || evt.keyCode;\n if (charCode === 8) {\n //Backspace\n runtimeObject.setString(runtimeObject.getString().slice(0, -1));\n }\n if (evt.preventDefault) {\n evt.preventDefault();\n }\n return false;\n };\n // @ts-expect-error ts-migrate(7030) FIXME: Not all code paths return a value.\n this._downHandler = function (evt) {\n evt = evt || window.event;\n const charCode = evt.which || evt.keyCode;\n\n //Prevent backspace from going to the previous page\n if (charCode === 8) {\n if (evt.preventDefault) {\n evt.preventDefault();\n }\n return false;\n }\n };\n document.addEventListener('keypress', this._pressHandler);\n document.addEventListener('keyup', this._upHandler);\n document.addEventListener('keydown', this._downHandler);\n }\n\n onDestroy() {\n document.removeEventListener('keypress', this._pressHandler);\n document.removeEventListener('keyup', this._upHandler);\n document.removeEventListener('keydown', this._downHandler);\n }\n\n updateString(): void {\n //Nothing to do.\n }\n\n activate(enable) {\n //Nothing to do.\n }\n }\n\n export const TextEntryRuntimeObjectRenderer =\n TextEntryRuntimeObjectPixiRenderer;\n export type TextEntryRuntimeObjectRenderer =\n TextEntryRuntimeObjectPixiRenderer;\n}\n"],
5
+ "mappings": "AAAA,GAAU,MAAV,UAAU,EAAV,CACE,OAAyC,CAMvC,YAAY,EAA4C,CACtD,KAAK,QAAU,EACf,KAAK,cAAgB,SAAU,EAAK,CAClC,GAAI,CAAC,EAAc,cACjB,OAEF,EAAM,GAAO,OAAO,MACpB,KAAM,GAAW,EAAI,OAAS,EAAI,QAC5B,EAAY,OAAO,aAAa,GACtC,MACE,KAAc,QAEd,IAAa,GAGb,EAAc,UAAU,EAAc,YAAc,GAElD,EAAI,gBACN,EAAI,iBAEC,IAET,KAAK,WAAa,SAAU,EAAK,CAC/B,MAAK,GAAc,cAGnB,GAAM,GAAO,OAAO,MAEhB,AADa,GAAI,OAAS,EAAI,WACjB,GAEf,EAAc,UAAU,EAAc,YAAY,MAAM,EAAG,KAEzD,EAAI,gBACN,EAAI,iBAEC,IAXL,QAcJ,KAAK,aAAe,SAAU,EAAK,CAKjC,GAJA,EAAM,GAAO,OAAO,MAIhB,AAHa,GAAI,OAAS,EAAI,WAGjB,EACf,MAAI,GAAI,gBACN,EAAI,iBAEC,IAGX,SAAS,iBAAiB,WAAY,KAAK,eAC3C,SAAS,iBAAiB,QAAS,KAAK,YACxC,SAAS,iBAAiB,UAAW,KAAK,cAG5C,WAAY,CACV,SAAS,oBAAoB,WAAY,KAAK,eAC9C,SAAS,oBAAoB,QAAS,KAAK,YAC3C,SAAS,oBAAoB,UAAW,KAAK,cAG/C,cAAqB,EAIrB,SAAS,EAAQ,GAKZ,AAAM,iCACX,IA9EM",
6
6
  "names": []
7
7
  }
@@ -1,2 +1,2 @@
1
- var gdjs;(function(a){const f={text:"text",email:"email",password:"password",number:"number","telephone number":"tel",url:"url",search:"search"},o=(h,t)=>"rgba("+h[0]+","+h[1]+","+h[2]+","+t/255+")";class r{constructor(t,e){this._input=null;this._form=null;this._object=t,this._instanceContainer=e,this._runtimeGame=this._instanceContainer.getGame(),this._createElement()}_createElement(){if(this._input)throw new Error("Tried to recreate an input while it already exists.");this._form=document.createElement("form");const t=this._object.getInputType()==="text area";this._input=document.createElement(t?"textarea":"input"),this._form.style.border="0px",this._form.style.borderRadius="0px",this._form.style.backgroundColor="transparent",this._form.style.position="absolute",this._form.style.pointerEvents="auto",this._form.style.display="none",this._form.style.boxSizing="border-box",this._form.style.textAlign=this._object.getTextAlign(),this._input.autocomplete="off",this._input.style.backgroundColor="white",this._input.style.outline="none",this._input.style.resize="none",this._input.style.border="1px solid black",this._input.style.boxSizing="border-box",this._input.style.width="100%",this._input.style.height="100%",this._input.maxLength=this._object.getMaxLength(),this._input.style.padding=`${this._object.getPaddingY().toFixed(2)}px ${this._object.getPaddingX().toFixed(2)}px`,this._form.appendChild(this._input),this._input.addEventListener("input",()=>{!this._input||this._object.onRendererInputValueChanged(this._input.value)}),this._input.addEventListener("touchstart",()=>{!this._input||document.activeElement!==this._input&&this._input.focus()}),this._form.addEventListener("submit",e=>{e.preventDefault(),this._object.onRendererFormSubmitted()}),this.updateString(),this.updateFont(),this.updatePlaceholder(),this.updateOpacity(),this.updateInputType(),this.updateTextColor(),this.updateFillColorAndOpacity(),this.updateBorderColorAndOpacity(),this.updateBorderWidth(),this.updateDisabled(),this.updateReadOnly(),this.updateTextAlign(),this.updateMaxLength(),this.updatePadding(),this._runtimeGame.getRenderer().getDomElementContainer().appendChild(this._form)}_destroyElement(){this._form&&(this._form.remove(),this._form=null),this._input&&(this._input.remove(),this._input=null)}onScenePaused(){this._destroyElement()}onSceneResumed(){this._input||this._createElement()}onDestroy(){this._destroyElement()}updatePreRender(){if(!this._input||!this._form)return;if(this._object.isHidden()){this._form.style.display="none";return}{let n=this._instanceContainer,s=this._object,b=!0;do{if(!n.getLayer(s.getLayer()).isVisible()||!s.isVisible()){this._form.style.display="none";return}n instanceof a.CustomRuntimeObjectInstanceContainer?(s=n.getOwner(),n=s.getInstanceContainer()):b=!1}while(b)}const t=a.staticArray(r.prototype.updatePreRender),e=this._instanceContainer.getGame(),i=e.getRenderer(),u=this._instanceContainer.getLayer(this._object.getLayer()),p=u.convertInverseCoords(this._object.x,this._object.y,0,t),d=p[0],l=p[1],c=u.convertInverseCoords(this._object.x+this._object.getWidth(),this._object.y+this._object.getHeight(),0,t),_=c[0],m=c[1];if(_<0||m<0||d>e.getGameResolutionWidth()||l>e.getGameResolutionHeight()){this._form.style.display="none";return}t[0]=d,t[1]=l,i.convertCanvasToDomElementContainerCoords(t,t);const g=t[0],y=t[1];t[0]=_,t[1]=m,i.convertCanvasToDomElementContainerCoords(t,t);const x=t[0],j=t[1],C=x-g,T=j-y;this._form.style.left=g+"px",this._form.style.top=y+"px",this._form.style.width=C+"px",this._form.style.height=T+"px",this._form.style.transform="rotate3d(0,0,1,"+this._object.getAngle()%360+"deg)",this._form.style.textAlign=this._object.getTextAlign(),this._input.style.padding=`${this._object.getPaddingY().toFixed(2)}px ${this._object.getPaddingX().toFixed(2)}px`,this._input.style.fontSize=this._object.getFontSize()*i.getCanvasToDomElementContainerHeightScale()+"px",this._form.style.display="initial"}updateString(){!this._input||(this._input.value=this._object.getString())}updatePlaceholder(){!this._input||(this._input.placeholder=this._object.getPlaceholder())}updateFont(){!this._input||(this._input.style.fontFamily=this._instanceContainer.getGame().getFontManager().getFontFamily(this._object.getFontResourceName()))}updateOpacity(){!this._form||(this._form.style.opacity=(this._object.getOpacity()/255).toFixed(3))}updateInputType(){if(!this._input)return;const t=this._input instanceof HTMLTextAreaElement,e=this._object.getInputType()==="text area";t!==e&&(this._destroyElement(),this._createElement());const i=f[this._object.getInputType()]||"text";this._input.setAttribute("type",i)}updateTextColor(){!this._input||(this._input.style.color=o(this._object._getRawTextColor(),255))}updateFillColorAndOpacity(){!this._input||(this._input.style.backgroundColor=o(this._object._getRawFillColor(),this._object.getFillOpacity()))}updateBorderColorAndOpacity(){!this._input||(this._input.style.borderColor=o(this._object._getRawBorderColor(),this._object.getBorderOpacity()))}updateBorderWidth(){!this._input||(this._input.style.borderWidth=this._object.getBorderWidth()+"px")}updateDisabled(){!this._input||(this._input.disabled=this._object.isDisabled())}updateReadOnly(){!this._input||(this._input.readOnly=this._object.isReadOnly())}updateMaxLength(){const t=this._input;if(!!t){if(this._object.getMaxLength()<=0){t.removeAttribute("maxLength");return}t.maxLength=this._object.getMaxLength()}}updatePadding(){!this._input||(this._input.style.padding=`${this._object.getPaddingY().toFixed(2)}px ${this._object.getPaddingX().toFixed(2)}px`)}updateTextAlign(){if(!this._input)return;const t=this._object.getTextAlign();this._input.style.textAlign=t}isFocused(){return this._input===document.activeElement}focus(){!this._input||this._input.focus()}}a.TextInputRuntimeObjectRenderer=r})(gdjs||(gdjs={}));
1
+ var gdjs;(function(a){const f={text:"text",email:"email",password:"password",number:"number","telephone number":"tel",url:"url",search:"search"},o=(h,t)=>"rgba("+h[0]+","+h[1]+","+h[2]+","+t/255+")";class r{constructor(t,e){this._input=null;this._form=null;this._object=t,this._instanceContainer=e,this._runtimeGame=this._instanceContainer.getGame(),this._createElement()}_createElement(){if(this._input)throw new Error("Tried to recreate an input while it already exists.");this._form=document.createElement("form");const t=this._object.getInputType()==="text area";this._input=document.createElement(t?"textarea":"input"),this._form.style.border="0px",this._form.style.borderRadius="0px",this._form.style.backgroundColor="transparent",this._form.style.position="absolute",this._form.style.pointerEvents="auto",this._form.style.display="none",this._form.style.boxSizing="border-box",this._form.style.textAlign=this._object.getTextAlign(),this._input.autocomplete="off",this._input.style.backgroundColor="white",this._input.style.outline="none",this._input.style.resize="none",this._input.style.border="1px solid black",this._input.style.boxSizing="border-box",this._input.style.borderRadius="0px",this._input.style.width="100%",this._input.style.height="100%",this._input.maxLength=this._object.getMaxLength(),this._input.style.padding=`${this._object.getPaddingY().toFixed(2)}px ${this._object.getPaddingX().toFixed(2)}px`,this._form.appendChild(this._input),this._input.addEventListener("input",()=>{!this._input||this._object.onRendererInputValueChanged(this._input.value)}),this._input.addEventListener("touchstart",()=>{!this._input||document.activeElement!==this._input&&this._input.focus()}),this._form.addEventListener("submit",e=>{e.preventDefault(),this._object.onRendererFormSubmitted()}),this.updateString(),this.updateFont(),this.updatePlaceholder(),this.updateOpacity(),this.updateInputType(),this.updateTextColor(),this.updateFillColorAndOpacity(),this.updateBorderColorAndOpacity(),this.updateBorderWidth(),this.updateDisabled(),this.updateReadOnly(),this.updateTextAlign(),this.updateMaxLength(),this.updatePadding(),this._runtimeGame.getRenderer().getDomElementContainer().appendChild(this._form)}_destroyElement(){this._form&&(this._form.remove(),this._form=null),this._input&&(this._input.remove(),this._input=null)}onScenePaused(){this._destroyElement()}onSceneResumed(){this._input||this._createElement()}onDestroy(){this._destroyElement()}updatePreRender(){if(!this._input||!this._form)return;if(this._object.isHidden()){this._form.style.display="none";return}{let n=this._instanceContainer,s=this._object,b=!0;do{if(!n.getLayer(s.getLayer()).isVisible()||!s.isVisible()){this._form.style.display="none";return}n instanceof a.CustomRuntimeObjectInstanceContainer?(s=n.getOwner(),n=s.getInstanceContainer()):b=!1}while(b)}const t=a.staticArray(r.prototype.updatePreRender),e=this._instanceContainer.getGame(),i=e.getRenderer(),u=this._instanceContainer.getLayer(this._object.getLayer()),p=u.convertInverseCoords(this._object.x,this._object.y,0,t),d=p[0],l=p[1],c=u.convertInverseCoords(this._object.x+this._object.getWidth(),this._object.y+this._object.getHeight(),0,t),_=c[0],m=c[1];if(_<0||m<0||d>e.getGameResolutionWidth()||l>e.getGameResolutionHeight()){this._form.style.display="none";return}t[0]=d,t[1]=l,i.convertCanvasToDomElementContainerCoords(t,t);const g=t[0],y=t[1];t[0]=_,t[1]=m,i.convertCanvasToDomElementContainerCoords(t,t);const x=t[0],j=t[1],C=x-g,T=j-y;this._form.style.left=g+"px",this._form.style.top=y+"px",this._form.style.width=C+"px",this._form.style.height=T+"px",this._form.style.transform="rotate3d(0,0,1,"+this._object.getAngle()%360+"deg)",this._form.style.textAlign=this._object.getTextAlign(),this._input.style.padding=`${this._object.getPaddingY().toFixed(2)}px ${this._object.getPaddingX().toFixed(2)}px`,this._input.style.fontSize=this._object.getFontSize()*i.getCanvasToDomElementContainerHeightScale()+"px",this._form.style.display="initial"}updateString(){!this._input||(this._input.value=this._object.getString())}updatePlaceholder(){!this._input||(this._input.placeholder=this._object.getPlaceholder())}updateFont(){!this._input||(this._input.style.fontFamily=this._instanceContainer.getGame().getFontManager().getFontFamily(this._object.getFontResourceName()))}updateOpacity(){!this._form||(this._form.style.opacity=(this._object.getOpacity()/255).toFixed(3))}updateInputType(){if(!this._input)return;const t=this._input instanceof HTMLTextAreaElement,e=this._object.getInputType()==="text area";t!==e&&(this._destroyElement(),this._createElement());const i=f[this._object.getInputType()]||"text";this._input.setAttribute("type",i)}updateTextColor(){!this._input||(this._input.style.color=o(this._object._getRawTextColor(),255))}updateFillColorAndOpacity(){!this._input||(this._input.style.backgroundColor=o(this._object._getRawFillColor(),this._object.getFillOpacity()))}updateBorderColorAndOpacity(){!this._input||(this._input.style.borderColor=o(this._object._getRawBorderColor(),this._object.getBorderOpacity()))}updateBorderWidth(){!this._input||(this._input.style.borderWidth=this._object.getBorderWidth()+"px")}updateDisabled(){!this._input||(this._input.disabled=this._object.isDisabled())}updateReadOnly(){!this._input||(this._input.readOnly=this._object.isReadOnly())}updateMaxLength(){const t=this._input;if(!!t){if(this._object.getMaxLength()<=0){t.removeAttribute("maxLength");return}t.maxLength=this._object.getMaxLength()}}updatePadding(){!this._input||(this._input.style.padding=`${this._object.getPaddingY().toFixed(2)}px ${this._object.getPaddingX().toFixed(2)}px`)}updateTextAlign(){if(!this._input)return;const t=this._object.getTextAlign();this._input.style.textAlign=t}isFocused(){return this._input===document.activeElement}focus(){!this._input||this._input.focus()}}a.TextInputRuntimeObjectRenderer=r})(gdjs||(gdjs={}));
2
2
  //# sourceMappingURL=textinputruntimeobject-pixi-renderer.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../GDevelop/Extensions/TextInput/textinputruntimeobject-pixi-renderer.ts"],
4
- "sourcesContent": ["namespace gdjs {\n const userFriendlyToHtmlInputTypes = {\n text: 'text',\n email: 'email',\n password: 'password',\n number: 'number',\n 'telephone number': 'tel',\n url: 'url',\n search: 'search',\n };\n\n const formatRgbAndOpacityToCssRgba = (\n rgbColor: [float, float, float],\n opacity: float\n ) => {\n return (\n 'rgba(' +\n rgbColor[0] +\n ',' +\n rgbColor[1] +\n ',' +\n rgbColor[2] +\n ',' +\n opacity / 255 +\n ')'\n );\n };\n\n class TextInputRuntimeObjectPixiRenderer {\n private _object: gdjs.TextInputRuntimeObject;\n private _input: HTMLInputElement | HTMLTextAreaElement | null = null;\n private _instanceContainer: gdjs.RuntimeInstanceContainer;\n private _runtimeGame: gdjs.RuntimeGame;\n private _form: HTMLFormElement | null = null;\n\n constructor(\n runtimeObject: gdjs.TextInputRuntimeObject,\n instanceContainer: gdjs.RuntimeInstanceContainer\n ) {\n this._object = runtimeObject;\n this._instanceContainer = instanceContainer;\n this._runtimeGame = this._instanceContainer.getGame();\n\n this._createElement();\n }\n\n _createElement() {\n if (!!this._input)\n throw new Error('Tried to recreate an input while it already exists.');\n\n this._form = document.createElement('form');\n\n const isTextArea = this._object.getInputType() === 'text area';\n this._input = document.createElement(isTextArea ? 'textarea' : 'input');\n\n this._form.style.border = '0px';\n this._form.style.borderRadius = '0px';\n this._form.style.backgroundColor = 'transparent';\n this._form.style.position = 'absolute';\n this._form.style.pointerEvents = 'auto'; // Element can be clicked/touched.\n this._form.style.display = 'none'; // Hide while object is being set up.\n this._form.style.boxSizing = 'border-box';\n this._form.style.textAlign = this._object.getTextAlign();\n\n this._input.autocomplete = 'off';\n this._input.style.backgroundColor = 'white';\n this._input.style.outline = 'none'; // Remove any style added by the browser to highlight the focused field in a form (:focus & :focus-visible modifiers).\n this._input.style.resize = 'none'; // Prevent user from resizing the input when it's a text area.\n this._input.style.border = '1px solid black';\n this._input.style.boxSizing = 'border-box';\n this._input.style.width = '100%';\n this._input.style.height = '100%';\n this._input.maxLength = this._object.getMaxLength();\n this._input.style.padding = `${this._object\n .getPaddingY()\n .toFixed(2)}px ${this._object.getPaddingX().toFixed(2)}px`;\n\n this._form.appendChild(this._input);\n\n this._input.addEventListener('input', () => {\n if (!this._input) return;\n\n this._object.onRendererInputValueChanged(this._input.value);\n });\n this._input.addEventListener('touchstart', () => {\n if (!this._input) return;\n\n // Focus directly when touching the input on touchscreens.\n if (document.activeElement !== this._input) this._input.focus();\n });\n\n this._form.addEventListener('submit', (event) => {\n event.preventDefault();\n this._object.onRendererFormSubmitted();\n });\n\n this.updateString();\n this.updateFont();\n this.updatePlaceholder();\n this.updateOpacity();\n this.updateInputType();\n this.updateTextColor();\n this.updateFillColorAndOpacity();\n this.updateBorderColorAndOpacity();\n this.updateBorderWidth();\n this.updateDisabled();\n this.updateReadOnly();\n this.updateTextAlign();\n this.updateMaxLength();\n this.updatePadding();\n\n this._runtimeGame\n .getRenderer()\n .getDomElementContainer()!\n .appendChild(this._form);\n }\n\n _destroyElement() {\n if (this._form) {\n this._form.remove();\n this._form = null;\n }\n if (this._input) {\n this._input.remove();\n this._input = null;\n }\n }\n\n onScenePaused() {\n // This is the only renderer that uses a DOM element. PixiJS renderers\n // usually don't need to know if a scene is paused/resumed,\n // because their renderers are then not used (not part of the other scene graphs).\n // For this object, we need to remove the DOM element whenever it must\n // be not rendered.\n this._destroyElement();\n }\n\n onSceneResumed() {\n // The input must have been destroyed when the scene was paused,\n // in case it still exists, skip recreation.\n if (!this._input) this._createElement();\n }\n\n onDestroy() {\n this._destroyElement();\n }\n\n updatePreRender() {\n if (!this._input || !this._form) return;\n // Hide the input entirely if the object is hidden.\n // Because this object is rendered as a DOM element (and not part of the PixiJS\n // scene graph), we have to do this manually.\n if (this._object.isHidden()) {\n this._form.style.display = 'none';\n return;\n }\n\n // Hide the input entirely if the layer is not visible.\n // Because this object is rendered as a DOM element (and not part of the PixiJS\n // scene graph), we have to do this manually.\n {\n let instanceContainer = this._instanceContainer;\n let object: gdjs.RuntimeObject = this._object;\n let hasParent = true;\n do {\n const layer = instanceContainer.getLayer(object.getLayer());\n if (!layer.isVisible() || !object.isVisible()) {\n this._form.style.display = 'none';\n return;\n }\n // TODO Declare an interface to move up in the object tree.\n if (\n instanceContainer instanceof\n gdjs.CustomRuntimeObjectInstanceContainer\n ) {\n object = instanceContainer.getOwner();\n instanceContainer = object.getInstanceContainer();\n } else {\n hasParent = false;\n }\n } while (hasParent);\n }\n\n const workingPoint: FloatPoint = gdjs.staticArray(\n TextInputRuntimeObjectPixiRenderer.prototype.updatePreRender\n ) as FloatPoint;\n\n const runtimeGame = this._instanceContainer.getGame();\n const runtimeGameRenderer = runtimeGame.getRenderer();\n const layer = this._instanceContainer.getLayer(this._object.getLayer());\n const topLeftCanvasCoordinates = layer.convertInverseCoords(\n this._object.x,\n this._object.y,\n 0,\n workingPoint\n );\n const canvasLeft = topLeftCanvasCoordinates[0];\n const canvasTop = topLeftCanvasCoordinates[1];\n\n const bottomRightCanvasCoordinates = layer.convertInverseCoords(\n this._object.x + this._object.getWidth(),\n this._object.y + this._object.getHeight(),\n 0,\n workingPoint\n );\n const canvasRight = bottomRightCanvasCoordinates[0];\n const canvasBottom = bottomRightCanvasCoordinates[1];\n\n // Hide the input entirely if not visible at all.\n const isOutsideCanvas =\n canvasRight < 0 ||\n canvasBottom < 0 ||\n canvasLeft > runtimeGame.getGameResolutionWidth() ||\n canvasTop > runtimeGame.getGameResolutionHeight();\n if (isOutsideCanvas) {\n this._form.style.display = 'none';\n return;\n }\n\n // Position the input on the container on top of the canvas.\n workingPoint[0] = canvasLeft;\n workingPoint[1] = canvasTop;\n runtimeGameRenderer.convertCanvasToDomElementContainerCoords(\n workingPoint,\n workingPoint\n );\n const pageLeft = workingPoint[0];\n const pageTop = workingPoint[1];\n\n workingPoint[0] = canvasRight;\n workingPoint[1] = canvasBottom;\n runtimeGameRenderer.convertCanvasToDomElementContainerCoords(\n workingPoint,\n workingPoint\n );\n const pageRight = workingPoint[0];\n const pageBottom = workingPoint[1];\n\n const widthInContainer = pageRight - pageLeft;\n const heightInContainer = pageBottom - pageTop;\n\n this._form.style.left = pageLeft + 'px';\n this._form.style.top = pageTop + 'px';\n this._form.style.width = widthInContainer + 'px';\n this._form.style.height = heightInContainer + 'px';\n this._form.style.transform =\n 'rotate3d(0,0,1,' + (this._object.getAngle() % 360) + 'deg)';\n this._form.style.textAlign = this._object.getTextAlign();\n\n this._input.style.padding = `${this._object\n .getPaddingY()\n .toFixed(2)}px ${this._object.getPaddingX().toFixed(2)}px`;\n\n // Automatically adjust the font size to follow the game scale.\n this._input.style.fontSize =\n this._object.getFontSize() *\n runtimeGameRenderer.getCanvasToDomElementContainerHeightScale() +\n 'px';\n\n // Display after the object is positioned.\n this._form.style.display = 'initial';\n }\n\n updateString() {\n if (!this._input) return;\n this._input.value = this._object.getString();\n }\n\n updatePlaceholder() {\n if (!this._input) return;\n this._input.placeholder = this._object.getPlaceholder();\n }\n\n updateFont() {\n if (!this._input) return;\n this._input.style.fontFamily = this._instanceContainer\n .getGame()\n .getFontManager()\n .getFontFamily(this._object.getFontResourceName());\n }\n\n updateOpacity() {\n if (!this._form) return;\n this._form.style.opacity = (this._object.getOpacity() / 255).toFixed(3);\n }\n\n updateInputType() {\n if (!this._input) return;\n\n const isTextArea = this._input instanceof HTMLTextAreaElement;\n const shouldBeTextArea = this._object.getInputType() === 'text area';\n if (isTextArea !== shouldBeTextArea) {\n this._destroyElement();\n this._createElement();\n }\n\n const newType =\n userFriendlyToHtmlInputTypes[this._object.getInputType()] || 'text';\n this._input.setAttribute('type', newType);\n }\n\n updateTextColor() {\n if (!this._input) return;\n\n this._input.style.color = formatRgbAndOpacityToCssRgba(\n this._object._getRawTextColor(),\n 255\n );\n }\n\n updateFillColorAndOpacity() {\n if (!this._input) return;\n\n this._input.style.backgroundColor = formatRgbAndOpacityToCssRgba(\n this._object._getRawFillColor(),\n this._object.getFillOpacity()\n );\n }\n\n updateBorderColorAndOpacity() {\n if (!this._input) return;\n\n this._input.style.borderColor = formatRgbAndOpacityToCssRgba(\n this._object._getRawBorderColor(),\n this._object.getBorderOpacity()\n );\n }\n updateBorderWidth() {\n if (!this._input) return;\n\n this._input.style.borderWidth = this._object.getBorderWidth() + 'px';\n }\n updateDisabled() {\n if (!this._input) return;\n\n this._input.disabled = this._object.isDisabled();\n }\n updateReadOnly() {\n if (!this._input) return;\n\n this._input.readOnly = this._object.isReadOnly();\n }\n\n updateMaxLength() {\n const input = this._input;\n if (!input) return;\n if (this._object.getMaxLength() <= 0) {\n input.removeAttribute('maxLength');\n return;\n }\n input.maxLength = this._object.getMaxLength();\n }\n\n updatePadding() {\n if (!this._input) return;\n\n this._input.style.padding = `${this._object\n .getPaddingY()\n .toFixed(2)}px ${this._object.getPaddingX().toFixed(2)}px`;\n }\n\n updateTextAlign() {\n if (!this._input) return;\n\n const newTextAlign = this._object.getTextAlign();\n this._input.style.textAlign = newTextAlign;\n }\n\n isFocused() {\n return this._input === document.activeElement;\n }\n\n focus() {\n if (!this._input) return;\n\n this._input.focus();\n }\n }\n export const TextInputRuntimeObjectRenderer = TextInputRuntimeObjectPixiRenderer;\n export type TextInputRuntimeObjectRenderer = TextInputRuntimeObjectPixiRenderer;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["namespace gdjs {\n const userFriendlyToHtmlInputTypes = {\n text: 'text',\n email: 'email',\n password: 'password',\n number: 'number',\n 'telephone number': 'tel',\n url: 'url',\n search: 'search',\n };\n\n const formatRgbAndOpacityToCssRgba = (\n rgbColor: [float, float, float],\n opacity: float\n ) => {\n return (\n 'rgba(' +\n rgbColor[0] +\n ',' +\n rgbColor[1] +\n ',' +\n rgbColor[2] +\n ',' +\n opacity / 255 +\n ')'\n );\n };\n\n class TextInputRuntimeObjectPixiRenderer {\n private _object: gdjs.TextInputRuntimeObject;\n private _input: HTMLInputElement | HTMLTextAreaElement | null = null;\n private _instanceContainer: gdjs.RuntimeInstanceContainer;\n private _runtimeGame: gdjs.RuntimeGame;\n private _form: HTMLFormElement | null = null;\n\n constructor(\n runtimeObject: gdjs.TextInputRuntimeObject,\n instanceContainer: gdjs.RuntimeInstanceContainer\n ) {\n this._object = runtimeObject;\n this._instanceContainer = instanceContainer;\n this._runtimeGame = this._instanceContainer.getGame();\n\n this._createElement();\n }\n\n _createElement() {\n if (!!this._input)\n throw new Error('Tried to recreate an input while it already exists.');\n\n this._form = document.createElement('form');\n\n const isTextArea = this._object.getInputType() === 'text area';\n this._input = document.createElement(isTextArea ? 'textarea' : 'input');\n\n this._form.style.border = '0px';\n this._form.style.borderRadius = '0px';\n this._form.style.backgroundColor = 'transparent';\n this._form.style.position = 'absolute';\n this._form.style.pointerEvents = 'auto'; // Element can be clicked/touched.\n this._form.style.display = 'none'; // Hide while object is being set up.\n this._form.style.boxSizing = 'border-box';\n this._form.style.textAlign = this._object.getTextAlign();\n\n this._input.autocomplete = 'off';\n this._input.style.backgroundColor = 'white';\n this._input.style.outline = 'none'; // Remove any style added by the browser to highlight the focused field in a form (:focus & :focus-visible modifiers).\n this._input.style.resize = 'none'; // Prevent user from resizing the input when it's a text area.\n this._input.style.border = '1px solid black';\n this._input.style.boxSizing = 'border-box';\n this._input.style.borderRadius = '0px'; // Remove any style added by the browser (Safari adds some radius for instance).\n this._input.style.width = '100%';\n this._input.style.height = '100%';\n this._input.maxLength = this._object.getMaxLength();\n this._input.style.padding = `${this._object\n .getPaddingY()\n .toFixed(2)}px ${this._object.getPaddingX().toFixed(2)}px`;\n\n this._form.appendChild(this._input);\n\n this._input.addEventListener('input', () => {\n if (!this._input) return;\n\n this._object.onRendererInputValueChanged(this._input.value);\n });\n this._input.addEventListener('touchstart', () => {\n if (!this._input) return;\n\n // Focus directly when touching the input on touchscreens.\n if (document.activeElement !== this._input) this._input.focus();\n });\n\n this._form.addEventListener('submit', (event) => {\n event.preventDefault();\n this._object.onRendererFormSubmitted();\n });\n\n this.updateString();\n this.updateFont();\n this.updatePlaceholder();\n this.updateOpacity();\n this.updateInputType();\n this.updateTextColor();\n this.updateFillColorAndOpacity();\n this.updateBorderColorAndOpacity();\n this.updateBorderWidth();\n this.updateDisabled();\n this.updateReadOnly();\n this.updateTextAlign();\n this.updateMaxLength();\n this.updatePadding();\n\n this._runtimeGame\n .getRenderer()\n .getDomElementContainer()!\n .appendChild(this._form);\n }\n\n _destroyElement() {\n if (this._form) {\n this._form.remove();\n this._form = null;\n }\n if (this._input) {\n this._input.remove();\n this._input = null;\n }\n }\n\n onScenePaused() {\n // This is the only renderer that uses a DOM element. PixiJS renderers\n // usually don't need to know if a scene is paused/resumed,\n // because their renderers are then not used (not part of the other scene graphs).\n // For this object, we need to remove the DOM element whenever it must\n // be not rendered.\n this._destroyElement();\n }\n\n onSceneResumed() {\n // The input must have been destroyed when the scene was paused,\n // in case it still exists, skip recreation.\n if (!this._input) this._createElement();\n }\n\n onDestroy() {\n this._destroyElement();\n }\n\n updatePreRender() {\n if (!this._input || !this._form) return;\n // Hide the input entirely if the object is hidden.\n // Because this object is rendered as a DOM element (and not part of the PixiJS\n // scene graph), we have to do this manually.\n if (this._object.isHidden()) {\n this._form.style.display = 'none';\n return;\n }\n\n // Hide the input entirely if the layer is not visible.\n // Because this object is rendered as a DOM element (and not part of the PixiJS\n // scene graph), we have to do this manually.\n {\n let instanceContainer = this._instanceContainer;\n let object: gdjs.RuntimeObject = this._object;\n let hasParent = true;\n do {\n const layer = instanceContainer.getLayer(object.getLayer());\n if (!layer.isVisible() || !object.isVisible()) {\n this._form.style.display = 'none';\n return;\n }\n // TODO Declare an interface to move up in the object tree.\n if (\n instanceContainer instanceof\n gdjs.CustomRuntimeObjectInstanceContainer\n ) {\n object = instanceContainer.getOwner();\n instanceContainer = object.getInstanceContainer();\n } else {\n hasParent = false;\n }\n } while (hasParent);\n }\n\n const workingPoint: FloatPoint = gdjs.staticArray(\n TextInputRuntimeObjectPixiRenderer.prototype.updatePreRender\n ) as FloatPoint;\n\n const runtimeGame = this._instanceContainer.getGame();\n const runtimeGameRenderer = runtimeGame.getRenderer();\n const layer = this._instanceContainer.getLayer(this._object.getLayer());\n const topLeftCanvasCoordinates = layer.convertInverseCoords(\n this._object.x,\n this._object.y,\n 0,\n workingPoint\n );\n const canvasLeft = topLeftCanvasCoordinates[0];\n const canvasTop = topLeftCanvasCoordinates[1];\n\n const bottomRightCanvasCoordinates = layer.convertInverseCoords(\n this._object.x + this._object.getWidth(),\n this._object.y + this._object.getHeight(),\n 0,\n workingPoint\n );\n const canvasRight = bottomRightCanvasCoordinates[0];\n const canvasBottom = bottomRightCanvasCoordinates[1];\n\n // Hide the input entirely if not visible at all.\n const isOutsideCanvas =\n canvasRight < 0 ||\n canvasBottom < 0 ||\n canvasLeft > runtimeGame.getGameResolutionWidth() ||\n canvasTop > runtimeGame.getGameResolutionHeight();\n if (isOutsideCanvas) {\n this._form.style.display = 'none';\n return;\n }\n\n // Position the input on the container on top of the canvas.\n workingPoint[0] = canvasLeft;\n workingPoint[1] = canvasTop;\n runtimeGameRenderer.convertCanvasToDomElementContainerCoords(\n workingPoint,\n workingPoint\n );\n const pageLeft = workingPoint[0];\n const pageTop = workingPoint[1];\n\n workingPoint[0] = canvasRight;\n workingPoint[1] = canvasBottom;\n runtimeGameRenderer.convertCanvasToDomElementContainerCoords(\n workingPoint,\n workingPoint\n );\n const pageRight = workingPoint[0];\n const pageBottom = workingPoint[1];\n\n const widthInContainer = pageRight - pageLeft;\n const heightInContainer = pageBottom - pageTop;\n\n this._form.style.left = pageLeft + 'px';\n this._form.style.top = pageTop + 'px';\n this._form.style.width = widthInContainer + 'px';\n this._form.style.height = heightInContainer + 'px';\n this._form.style.transform =\n 'rotate3d(0,0,1,' + (this._object.getAngle() % 360) + 'deg)';\n this._form.style.textAlign = this._object.getTextAlign();\n\n this._input.style.padding = `${this._object\n .getPaddingY()\n .toFixed(2)}px ${this._object.getPaddingX().toFixed(2)}px`;\n\n // Automatically adjust the font size to follow the game scale.\n this._input.style.fontSize =\n this._object.getFontSize() *\n runtimeGameRenderer.getCanvasToDomElementContainerHeightScale() +\n 'px';\n\n // Display after the object is positioned.\n this._form.style.display = 'initial';\n }\n\n updateString() {\n if (!this._input) return;\n this._input.value = this._object.getString();\n }\n\n updatePlaceholder() {\n if (!this._input) return;\n this._input.placeholder = this._object.getPlaceholder();\n }\n\n updateFont() {\n if (!this._input) return;\n this._input.style.fontFamily = this._instanceContainer\n .getGame()\n .getFontManager()\n .getFontFamily(this._object.getFontResourceName());\n }\n\n updateOpacity() {\n if (!this._form) return;\n this._form.style.opacity = (this._object.getOpacity() / 255).toFixed(3);\n }\n\n updateInputType() {\n if (!this._input) return;\n\n const isTextArea = this._input instanceof HTMLTextAreaElement;\n const shouldBeTextArea = this._object.getInputType() === 'text area';\n if (isTextArea !== shouldBeTextArea) {\n this._destroyElement();\n this._createElement();\n }\n\n const newType =\n userFriendlyToHtmlInputTypes[this._object.getInputType()] || 'text';\n this._input.setAttribute('type', newType);\n }\n\n updateTextColor() {\n if (!this._input) return;\n\n this._input.style.color = formatRgbAndOpacityToCssRgba(\n this._object._getRawTextColor(),\n 255\n );\n }\n\n updateFillColorAndOpacity() {\n if (!this._input) return;\n\n this._input.style.backgroundColor = formatRgbAndOpacityToCssRgba(\n this._object._getRawFillColor(),\n this._object.getFillOpacity()\n );\n }\n\n updateBorderColorAndOpacity() {\n if (!this._input) return;\n\n this._input.style.borderColor = formatRgbAndOpacityToCssRgba(\n this._object._getRawBorderColor(),\n this._object.getBorderOpacity()\n );\n }\n updateBorderWidth() {\n if (!this._input) return;\n\n this._input.style.borderWidth = this._object.getBorderWidth() + 'px';\n }\n updateDisabled() {\n if (!this._input) return;\n\n this._input.disabled = this._object.isDisabled();\n }\n updateReadOnly() {\n if (!this._input) return;\n\n this._input.readOnly = this._object.isReadOnly();\n }\n\n updateMaxLength() {\n const input = this._input;\n if (!input) return;\n if (this._object.getMaxLength() <= 0) {\n input.removeAttribute('maxLength');\n return;\n }\n input.maxLength = this._object.getMaxLength();\n }\n\n updatePadding() {\n if (!this._input) return;\n\n this._input.style.padding = `${this._object\n .getPaddingY()\n .toFixed(2)}px ${this._object.getPaddingX().toFixed(2)}px`;\n }\n\n updateTextAlign() {\n if (!this._input) return;\n\n const newTextAlign = this._object.getTextAlign();\n this._input.style.textAlign = newTextAlign;\n }\n\n isFocused() {\n return this._input === document.activeElement;\n }\n\n focus() {\n if (!this._input) return;\n\n this._input.focus();\n }\n }\n export const TextInputRuntimeObjectRenderer =\n TextInputRuntimeObjectPixiRenderer;\n export type TextInputRuntimeObjectRenderer =\n TextInputRuntimeObjectPixiRenderer;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }