gdcore-tools 2.0.0-gd-v5.5.242-autobuild → 2.0.0-gd-v5.5.243-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.
- package/dist/Runtime/AsyncTasksManager.js +2 -2
- package/dist/Runtime/AsyncTasksManager.js.map +2 -2
- package/dist/Runtime/CustomRuntimeObject.js +1 -1
- package/dist/Runtime/CustomRuntimeObject.js.map +2 -2
- package/dist/Runtime/Extensions/3D/A_RuntimeObject3D.js +1 -1
- package/dist/Runtime/Extensions/3D/A_RuntimeObject3D.js.map +2 -2
- package/dist/Runtime/Extensions/3D/Cube3DRuntimeObject.js +1 -1
- package/dist/Runtime/Extensions/3D/Cube3DRuntimeObject.js.map +2 -2
- package/dist/Runtime/Extensions/3D/CustomRuntimeObject3D.js +1 -1
- package/dist/Runtime/Extensions/3D/CustomRuntimeObject3D.js.map +2 -2
- package/dist/Runtime/Extensions/3D/JsExtension.js +5 -0
- package/dist/Runtime/Extensions/3D/Model3DRuntimeObject.js +1 -1
- package/dist/Runtime/Extensions/3D/Model3DRuntimeObject.js.map +2 -2
- package/dist/Runtime/Extensions/3D/Model3DRuntimeObject3DRenderer.js +1 -1
- package/dist/Runtime/Extensions/3D/Model3DRuntimeObject3DRenderer.js.map +2 -2
- package/dist/Runtime/Extensions/BBText/bbtextruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/BBText/bbtextruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/BitmapText/bitmaptextruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/BitmapText/bitmaptextruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/DebuggerTools/JsExtension.js +3 -1
- package/dist/Runtime/Extensions/DestroyOutsideBehavior/destroyoutsideruntimebehavior.js +1 -1
- package/dist/Runtime/Extensions/DestroyOutsideBehavior/destroyoutsideruntimebehavior.js.map +2 -2
- package/dist/Runtime/Extensions/Lighting/lightruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/Lighting/lightruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/Multiplayer/messageManager.js +1 -1
- package/dist/Runtime/Extensions/Multiplayer/messageManager.js.map +2 -2
- package/dist/Runtime/Extensions/Multiplayer/multiplayerobjectruntimebehavior.js +1 -1
- package/dist/Runtime/Extensions/Multiplayer/multiplayerobjectruntimebehavior.js.map +2 -2
- package/dist/Runtime/Extensions/PanelSpriteObject/panelspriteruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/PanelSpriteObject/panelspriteruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/ParticleSystem/particleemitterobject.js +1 -1
- package/dist/Runtime/Extensions/ParticleSystem/particleemitterobject.js.map +2 -2
- package/dist/Runtime/Extensions/PathfindingBehavior/pathfindingruntimebehavior.js +1 -1
- package/dist/Runtime/Extensions/PathfindingBehavior/pathfindingruntimebehavior.js.map +2 -2
- package/dist/Runtime/Extensions/Physics2Behavior/physics2runtimebehavior.js +1 -1
- package/dist/Runtime/Extensions/Physics2Behavior/physics2runtimebehavior.js.map +2 -2
- package/dist/Runtime/Extensions/Physics3DBehavior/Physics3DRuntimeBehavior.js +1 -1
- package/dist/Runtime/Extensions/Physics3DBehavior/Physics3DRuntimeBehavior.js.map +2 -2
- package/dist/Runtime/Extensions/Physics3DBehavior/PhysicsCar3DRuntimeBehavior.js +1 -1
- package/dist/Runtime/Extensions/Physics3DBehavior/PhysicsCar3DRuntimeBehavior.js.map +2 -2
- package/dist/Runtime/Extensions/Physics3DBehavior/PhysicsCharacter3DRuntimeBehavior.js +1 -1
- package/dist/Runtime/Extensions/Physics3DBehavior/PhysicsCharacter3DRuntimeBehavior.js.map +2 -2
- package/dist/Runtime/Extensions/PlatformBehavior/platformerobjectruntimebehavior.js +1 -1
- package/dist/Runtime/Extensions/PlatformBehavior/platformerobjectruntimebehavior.js.map +2 -2
- package/dist/Runtime/Extensions/PlatformBehavior/platformruntimebehavior.js +1 -1
- package/dist/Runtime/Extensions/PlatformBehavior/platformruntimebehavior.js.map +2 -2
- package/dist/Runtime/Extensions/PrimitiveDrawing/shapepainterruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/PrimitiveDrawing/shapepainterruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/SaveState/JsExtension.js +488 -0
- package/dist/Runtime/Extensions/SaveState/SaveConfigurationRuntimeBehavior.js +2 -0
- package/dist/Runtime/Extensions/SaveState/SaveConfigurationRuntimeBehavior.js.map +7 -0
- package/dist/Runtime/Extensions/SaveState/SaveStateTools.js +2 -0
- package/dist/Runtime/Extensions/SaveState/SaveStateTools.js.map +7 -0
- package/dist/Runtime/Extensions/Spine/spineruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/Spine/spineruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/TextInput/textinputruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/TextInput/textinputruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/TextObject/textruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/TextObject/textruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/TileMap/helper/dts/model/TileMapModel.d.ts +4 -4
- package/dist/Runtime/Extensions/TileMap/simpletilemapruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/TileMap/simpletilemapruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/TileMap/tilemapcollisionmaskruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/TileMap/tilemapcollisionmaskruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/TileMap/tilemapruntimeobject-pixi-renderer.js +1 -1
- package/dist/Runtime/Extensions/TileMap/tilemapruntimeobject-pixi-renderer.js.map +2 -2
- package/dist/Runtime/Extensions/TileMap/tilemapruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/TileMap/tilemapruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/TiledSpriteObject/tiledspriteruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/TiledSpriteObject/tiledspriteruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/TopDownMovementBehavior/topdownmovementruntimebehavior.js +1 -1
- package/dist/Runtime/Extensions/TopDownMovementBehavior/topdownmovementruntimebehavior.js.map +2 -2
- package/dist/Runtime/Extensions/TweenBehavior/TweenManager.js +2 -2
- package/dist/Runtime/Extensions/TweenBehavior/TweenManager.js.map +2 -2
- package/dist/Runtime/Extensions/TweenBehavior/tweenruntimebehavior.js +1 -1
- package/dist/Runtime/Extensions/TweenBehavior/tweenruntimebehavior.js.map +2 -2
- package/dist/Runtime/Extensions/TweenBehavior/tweentools.js +1 -1
- package/dist/Runtime/Extensions/TweenBehavior/tweentools.js.map +2 -2
- package/dist/Runtime/Extensions/Video/videoruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/Video/videoruntimeobject.js.map +2 -2
- package/dist/Runtime/RuntimeInstanceContainer.js +1 -1
- package/dist/Runtime/RuntimeInstanceContainer.js.map +2 -2
- package/dist/Runtime/RuntimeLayer.js +1 -1
- package/dist/Runtime/RuntimeLayer.js.map +2 -2
- package/dist/Runtime/debugger-client/hot-reloader.js +1 -1
- package/dist/Runtime/debugger-client/hot-reloader.js.map +2 -2
- package/dist/Runtime/events-tools/objecttools.js +1 -1
- package/dist/Runtime/events-tools/objecttools.js.map +2 -2
- package/dist/Runtime/events-tools/runtimescenetools.js +1 -1
- package/dist/Runtime/events-tools/runtimescenetools.js.map +2 -2
- package/dist/Runtime/gd.js +1 -1
- package/dist/Runtime/gd.js.map +2 -2
- package/dist/Runtime/howler-sound-manager/howler-sound-manager.js +1 -1
- package/dist/Runtime/howler-sound-manager/howler-sound-manager.js.map +2 -2
- package/dist/Runtime/indexeddb.js +2 -0
- package/dist/Runtime/indexeddb.js.map +7 -0
- package/dist/Runtime/oncetriggers.js +1 -1
- package/dist/Runtime/oncetriggers.js.map +2 -2
- package/dist/Runtime/runtimebehavior.js +1 -1
- package/dist/Runtime/runtimebehavior.js.map +2 -2
- package/dist/Runtime/runtimegame.js +1 -1
- package/dist/Runtime/runtimegame.js.map +2 -2
- package/dist/Runtime/runtimeobject.js +1 -1
- package/dist/Runtime/runtimeobject.js.map +2 -2
- package/dist/Runtime/runtimescene.js +1 -1
- package/dist/Runtime/runtimescene.js.map +2 -2
- package/dist/Runtime/scenestack.js +1 -1
- package/dist/Runtime/scenestack.js.map +2 -2
- package/dist/Runtime/spriteruntimeobject.js +1 -1
- package/dist/Runtime/spriteruntimeobject.js.map +2 -2
- package/dist/Runtime/timemanager.js +1 -1
- package/dist/Runtime/timemanager.js.map +2 -2
- package/dist/Runtime/timer.js +1 -1
- package/dist/Runtime/timer.js.map +2 -2
- package/dist/Runtime/types/global-types.d.ts +29 -0
- package/dist/Runtime/types/project-data.d.ts +144 -3
- package/dist/Runtime/types/save-state.d.ts +9 -0
- package/dist/Runtime/variable.js +1 -1
- package/dist/Runtime/variable.js.map +2 -2
- package/dist/Runtime/variablescontainer.js +1 -1
- package/dist/Runtime/variablescontainer.js.map +2 -2
- package/dist/lib/libGD.cjs +1 -1
- package/dist/lib/libGD.wasm +0 -0
- package/dist/loaders.cjs +1 -1
- package/gd.d.ts +1 -0
- 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 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 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.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": "AAAA,GAAU,MAAV,UAAU,EAAV,CA8BS,
|
|
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 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 static isHitBoxesUpdateDisabled = false;\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 if (SpineRuntimeObject.isHitBoxesUpdateDisabled) {\n this.hitBoxes.length = 0;\n }\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(\n syncOptions: GetNetworkSyncDataOptions\n ): SpineNetworkSyncData {\n return {\n ...super.getNetworkSyncData(syncOptions),\n opa: this._opacity,\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(\n syncData: SpineNetworkSyncData,\n options: UpdateFromNetworkSyncDataOptions\n ): void {\n super.updateFromNetworkSyncData(syncData, options);\n\n if (syncData.opa !== undefined && syncData.opa !== this._opacity) {\n this.setOpacity(syncData.opa);\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 updateHitBoxes(): void {\n if (SpineRuntimeObject.isHitBoxesUpdateDisabled) {\n return;\n }\n\n super.updateHitBoxes();\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
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var gdjs;(function(i){const d=["text","email","password","number","telephone number","url","search","text area"],l=["left","center","right"],n=r=>{const e=r.toLowerCase();return d.includes(e)?r:"text"},o=r=>{if(!r)return"left";const e=r.toLowerCase();return l.includes(e)?r:"left"},
|
|
1
|
+
var gdjs;(function(i){const d=["text","email","password","number","telephone number","url","search","text area"],l=["left","center","right"],n=r=>{const e=r.toLowerCase();return d.includes(e)?r:"text"},o=r=>{if(!r)return"left";const e=r.toLowerCase();return l.includes(e)?r:"left"},p=300,h=30,s=(r,e,t)=>Math.max(0,Math.min(e/2-t,r));class u extends i.RuntimeObject{constructor(e,t){super(e,t);this.opacity=255;this._width=p;this._height=h;this._string=t.content.initialValue,this._placeholder=t.content.placeholder,this._fontResourceName=t.content.fontResourceName,this._fontSize=t.content.fontSize||20,this._inputType=n(t.content.inputType),this._textColor=i.rgbOrHexToRGBColor(t.content.textColor),this._fillColor=i.rgbOrHexToRGBColor(t.content.fillColor),this._fillOpacity=t.content.fillOpacity,this._borderColor=i.rgbOrHexToRGBColor(t.content.borderColor),this._borderOpacity=t.content.borderOpacity,this._borderWidth=t.content.borderWidth,this._disabled=t.content.disabled,this._readOnly=t.content.readOnly,this._spellCheck=t.content.spellCheck!==void 0?t.content.spellCheck:!1,this._textAlign=o(t.content.textAlign),this._maxLength=t.content.maxLength||0,this._paddingX=t.content.paddingX!==void 0?t.content.paddingX:2,this._paddingY=t.content.paddingY!==void 0?t.content.paddingY:1,this._isSubmitted=!1,this._renderer=new i.TextInputRuntimeObjectRenderer(this,e),this.onCreated()}getRendererObject(){return null}updateFromObjectData(e,t){return e.content.initialValue!==t.content.initialValue&&this._string===e.content.initialValue&&this.setString(t.content.initialValue),e.content.placeholder!==t.content.placeholder&&this.setPlaceholder(t.content.placeholder),e.content.fontResourceName!==t.content.fontResourceName&&this.setFontResourceName(t.content.fontResourceName),e.content.fontSize!==t.content.fontSize&&this.setFontSize(t.content.fontSize),e.content.inputType!==t.content.inputType&&this.setInputType(t.content.inputType),e.content.textColor!==t.content.textColor&&this.setTextColor(t.content.textColor),e.content.fillColor!==t.content.fillColor&&this.setFillColor(t.content.fillColor),e.content.fillOpacity!==t.content.fillOpacity&&this.setFillOpacity(t.content.fillOpacity),e.content.borderColor!==t.content.borderColor&&this.setBorderColor(t.content.borderColor),e.content.borderOpacity!==t.content.borderOpacity&&this.setBorderOpacity(t.content.borderOpacity),e.content.borderWidth!==t.content.borderWidth&&this.setBorderWidth(t.content.borderWidth),e.content.disabled!==t.content.disabled&&this.setDisabled(t.content.disabled),e.content.readOnly!==t.content.readOnly&&this.setReadOnly(t.content.readOnly),t.content.spellCheck!==void 0&&e.content.spellCheck!==t.content.spellCheck&&this.setSpellCheck(t.content.spellCheck),t.content.maxLength!==void 0&&e.content.maxLength!==t.content.maxLength&&this.setMaxLength(t.content.maxLength),t.content.textAlign&&e.content.textAlign!==t.content.textAlign&&(this._textAlign=t.content.textAlign),t.content.paddingX!==void 0&&e.content.paddingX!==t.content.paddingX&&this.setPaddingX(t.content.paddingX),t.content.paddingY!==void 0&&e.content.paddingY!==t.content.paddingY&&this.setPaddingY(t.content.paddingY),!0}getNetworkSyncData(e){return{...super.getNetworkSyncData(e),opa:this.getOpacity(),txt:this.getText(),frn:this.getFontResourceName(),fs:this.getFontSize(),place:this.getPlaceholder(),it:this.getInputType(),tc:this.getTextColor(),fc:this.getFillColor(),fo:this.getFillOpacity(),bc:this.getBorderColor(),bo:this.getBorderOpacity(),bw:this.getBorderWidth(),dis:this.isDisabled(),ro:this.isReadOnly(),sc:this.isSpellCheckEnabled()}}updateFromNetworkSyncData(e,t){super.updateFromNetworkSyncData(e,t),e.opa!==void 0&&this.setOpacity(e.opa),e.txt!==void 0&&this.setText(e.txt),e.frn!==void 0&&this.setFontResourceName(e.frn),e.fs!==void 0&&this.setFontSize(e.fs),e.place!==void 0&&this.setPlaceholder(e.place),e.it!==void 0&&this.setInputType(e.it),e.tc!==void 0&&this.setTextColor(e.tc),e.fc!==void 0&&this.setFillColor(e.fc),e.fo!==void 0&&this.setFillOpacity(e.fo),e.bc!==void 0&&this.setBorderColor(e.bc),e.bo!==void 0&&this.setBorderOpacity(e.bo),e.bw!==void 0&&this.setBorderWidth(e.bw),e.dis!==void 0&&this.setDisabled(e.dis),e.ro!==void 0&&this.setReadOnly(e.ro),e.sc!==void 0&&this.setSpellCheck(e.sc)}updatePreRender(e){this._isSubmitted=!1,this._renderer.updatePreRender()}extraInitializationFromInitialInstance(e){for(const t of e.stringProperties)t.name==="initialValue"?this.setString(t.value):t.name==="placeholder"&&this.setPlaceholder(t.value);e.customSize&&(this.setWidth(e.width),this.setHeight(e.height),this._renderer.updatePadding()),e.opacity!==void 0&&this.setOpacity(e.opacity)}onScenePaused(e){this._renderer.onScenePaused()}onSceneResumed(e){this._renderer.onSceneResumed()}onDestroyed(){super.onDestroyed(),this._renderer.onDestroy()}setOpacity(e){this.opacity=Math.max(0,Math.min(255,e)),this._renderer.updateOpacity()}getOpacity(){return this.opacity}setSize(e,t){this.setWidth(e),this.setHeight(t)}setWidth(e){this._width=e,this._renderer.updatePadding()}setHeight(e){this._height=e,this._renderer.updatePadding()}getWidth(){return this._width}getHeight(){return this._height}getString(){return this.getText()}setString(e){this.setText(e)}getText(){return this._string}setText(e){e!==this._string&&(this._string=e,this._renderer.updateString())}onRendererInputValueChanged(e){this._string=e}onRendererFormSubmitted(){this._isSubmitted=!0}getFontResourceName(){return this._fontResourceName}setFontResourceName(e){this._fontResourceName!==e&&(this._fontResourceName=e,this._renderer.updateFont())}getFontSize(){return this._fontSize}setFontSize(e){this._fontSize=e}getPlaceholder(){return this._placeholder}setPlaceholder(e){e!==this._placeholder&&(this._placeholder=e,this._renderer.updatePlaceholder())}getInputType(){return this._inputType}setInputType(e){const t=e.toLowerCase();t!==this._inputType&&(this._inputType=n(t),this._renderer.updateInputType())}setTextColor(e){this._textColor=i.rgbOrHexToRGBColor(e),this._renderer.updateTextColor()}getTextColor(){return this._textColor[0]+";"+this._textColor[1]+";"+this._textColor[2]}_getRawTextColor(){return this._textColor}setFillColor(e){this._fillColor=i.rgbOrHexToRGBColor(e),this._renderer.updateFillColorAndOpacity()}getFillColor(){return this._fillColor[0]+";"+this._fillColor[1]+";"+this._fillColor[2]}_getRawFillColor(){return this._fillColor}setFillOpacity(e){this._fillOpacity=Math.max(0,Math.min(255,e)),this._renderer.updateFillColorAndOpacity()}getFillOpacity(){return this._fillOpacity}setBorderColor(e){this._borderColor=i.rgbOrHexToRGBColor(e),this._renderer.updateBorderColorAndOpacity()}getBorderColor(){return this._borderColor[0]+";"+this._borderColor[1]+";"+this._borderColor[2]}_getRawBorderColor(){return this._borderColor}setBorderOpacity(e){this._borderOpacity=Math.max(0,Math.min(255,e)),this._renderer.updateBorderColorAndOpacity()}getBorderOpacity(){return this._borderOpacity}setBorderWidth(e){this._borderWidth=Math.max(0,e),this._renderer.updateBorderWidth()}getBorderWidth(){return this._borderWidth}setDisabled(e){this._disabled=e,this._renderer.updateDisabled()}isDisabled(){return this._disabled}setReadOnly(e){this._readOnly=e,this._renderer.updateReadOnly()}isReadOnly(){return this._readOnly}setSpellCheck(e){this._spellCheck=e,this._renderer.updateSpellCheck()}isSpellCheckEnabled(){return this._spellCheck}isFocused(){return this._renderer.isFocused()}isSubmitted(){return this._isSubmitted}getMaxLength(){return this._maxLength}setMaxLength(e){this._maxLength!==e&&(this._maxLength=e,this._renderer.updateMaxLength())}getPaddingX(){return s(this._paddingX,this._width,this._borderWidth)}setPaddingX(e){if(this._paddingX!==e){if(e<0){this._paddingX=0;return}this._paddingX=e,this._renderer.updatePadding()}}getPaddingY(){return s(this._paddingY,this._height,this._borderWidth)}setPaddingY(e){if(this._paddingY!==e){if(e<0){this._paddingY=0;return}this._paddingY=e,this._renderer.updatePadding()}}getTextAlign(){return this._textAlign}setTextAlign(e){const t=o(e);t!==this._textAlign&&(this._textAlign=t,this._renderer.updateTextAlign())}focus(){this.isFocused()||this.getInstanceContainer().getGame().getInputManager().clearAllPressedKeys(),this._renderer.focus()}}i.TextInputRuntimeObject=u,i.registerObject("TextInput::TextInputObject",i.TextInputRuntimeObject)})(gdjs||(gdjs={}));
|
|
2
2
|
//# sourceMappingURL=textinputruntimeobject.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../GDevelop/Extensions/TextInput/textinputruntimeobject.ts"],
|
|
4
|
-
"sourcesContent": ["namespace gdjs {\n const supportedInputTypes = [\n 'text',\n 'email',\n 'password',\n 'number',\n 'telephone number',\n 'url',\n 'search',\n 'text area',\n ] as const;\n const supportedTextAlign = ['left', 'center', 'right'] as const;\n\n type SupportedInputType = (typeof supportedInputTypes)[number];\n type SupportedTextAlign = (typeof supportedTextAlign)[number];\n const parseInputType = (potentialInputType: string): SupportedInputType => {\n const lowercasedNewInputType = potentialInputType.toLowerCase();\n\n // @ts-ignore - we're actually checking that this value is correct.\n if (supportedInputTypes.includes(lowercasedNewInputType))\n return potentialInputType as SupportedInputType;\n\n return 'text';\n };\n\n const parseTextAlign = (\n potentialTextAlign: string | undefined\n ): SupportedTextAlign => {\n if (!potentialTextAlign) return 'left';\n const lowercasedNewTextAlign = potentialTextAlign.toLowerCase();\n\n // @ts-ignore - we're actually checking that this value is correct.\n if (supportedTextAlign.includes(lowercasedNewTextAlign))\n return potentialTextAlign as SupportedTextAlign;\n\n return 'left';\n };\n\n /** Base parameters for {@link gdjs.TextInputRuntimeObject} */\n export interface TextInputObjectData extends ObjectData {\n /** The base parameters of the TextInput */\n content: {\n initialValue: string;\n placeholder: string;\n fontResourceName: string;\n fontSize: float;\n inputType: SupportedInputType;\n textColor: string;\n fillColor: string;\n fillOpacity: float;\n borderColor: string;\n borderOpacity: float;\n borderWidth: float;\n disabled: boolean;\n readOnly: boolean;\n // ---- Values can be undefined because of support for these feature was added in v5.5.222.\n spellCheck?: boolean;\n paddingX?: float;\n paddingY?: float;\n textAlign?: SupportedTextAlign;\n maxLength?: integer;\n // ----\n };\n }\n\n export type TextInputNetworkSyncDataType = {\n opa: float;\n txt: string;\n frn: string;\n fs: number;\n place: string;\n it: SupportedInputType;\n tc: string;\n fc: string;\n fo: float;\n bc: string;\n bo: float;\n bw: float;\n dis: boolean;\n ro: boolean;\n sc: boolean;\n };\n\n export type TextInputNetworkSyncData = ObjectNetworkSyncData &\n TextInputNetworkSyncDataType;\n\n const DEFAULT_WIDTH = 300;\n const DEFAULT_HEIGHT = 30;\n\n const clampPadding = (value: float, dimension: float, borderWidth: float) => {\n return Math.max(0, Math.min(dimension / 2 - borderWidth, value));\n };\n\n /**\n * Shows a text input on the screen the player can type text into.\n */\n export class TextInputRuntimeObject\n extends gdjs.RuntimeObject\n implements gdjs.TextContainer, gdjs.Resizable, gdjs.OpacityHandler\n {\n private _string: string;\n private _placeholder: string;\n private opacity: float = 255;\n private _width: float = DEFAULT_WIDTH;\n private _height: float = DEFAULT_HEIGHT;\n private _fontResourceName: string;\n private _fontSize: float;\n private _inputType: SupportedInputType;\n private _textColor: [float, float, float];\n private _fillColor: [float, float, float];\n private _fillOpacity: float;\n private _paddingX: integer;\n private _paddingY: integer;\n private _textAlign: SupportedTextAlign;\n private _maxLength: integer;\n private _borderColor: [float, float, float];\n private _borderOpacity: float;\n private _borderWidth: float;\n private _disabled: boolean;\n private _readOnly: boolean;\n private _spellCheck: boolean;\n private _isSubmitted: boolean;\n _renderer: TextInputRuntimeObjectRenderer;\n\n constructor(\n instanceContainer: gdjs.RuntimeInstanceContainer,\n objectData: TextInputObjectData\n ) {\n super(instanceContainer, objectData);\n\n this._string = objectData.content.initialValue;\n this._placeholder = objectData.content.placeholder;\n this._fontResourceName = objectData.content.fontResourceName;\n this._fontSize = objectData.content.fontSize || 20;\n this._inputType = parseInputType(objectData.content.inputType);\n this._textColor = gdjs.rgbOrHexToRGBColor(objectData.content.textColor);\n this._fillColor = gdjs.rgbOrHexToRGBColor(objectData.content.fillColor);\n this._fillOpacity = objectData.content.fillOpacity;\n this._borderColor = gdjs.rgbOrHexToRGBColor(\n objectData.content.borderColor\n );\n this._borderOpacity = objectData.content.borderOpacity;\n this._borderWidth = objectData.content.borderWidth;\n this._disabled = objectData.content.disabled;\n this._readOnly = objectData.content.readOnly;\n this._spellCheck =\n objectData.content.spellCheck !== undefined\n ? objectData.content.spellCheck\n : false;\n this._textAlign = parseTextAlign(objectData.content.textAlign);\n this._maxLength = objectData.content.maxLength || 0;\n this._paddingX =\n objectData.content.paddingX !== undefined\n ? objectData.content.paddingX\n : 2;\n this._paddingY =\n objectData.content.paddingY !== undefined\n ? objectData.content.paddingY\n : 1;\n this._isSubmitted = false;\n this._renderer = new gdjs.TextInputRuntimeObjectRenderer(\n this,\n instanceContainer\n );\n\n // *ALWAYS* call `this.onCreated()` at the very end of your object constructor.\n this.onCreated();\n }\n\n getRendererObject() {\n return null;\n }\n\n updateFromObjectData(\n oldObjectData: TextInputObjectData,\n newObjectData: TextInputObjectData\n ): boolean {\n if (\n oldObjectData.content.initialValue !==\n newObjectData.content.initialValue\n ) {\n if (this._string === oldObjectData.content.initialValue) {\n this.setString(newObjectData.content.initialValue);\n }\n }\n if (\n oldObjectData.content.placeholder !== newObjectData.content.placeholder\n ) {\n this.setPlaceholder(newObjectData.content.placeholder);\n }\n if (\n oldObjectData.content.fontResourceName !==\n newObjectData.content.fontResourceName\n ) {\n this.setFontResourceName(newObjectData.content.fontResourceName);\n }\n if (oldObjectData.content.fontSize !== newObjectData.content.fontSize) {\n this.setFontSize(newObjectData.content.fontSize);\n }\n if (oldObjectData.content.inputType !== newObjectData.content.inputType) {\n this.setInputType(newObjectData.content.inputType);\n }\n if (oldObjectData.content.textColor !== newObjectData.content.textColor) {\n this.setTextColor(newObjectData.content.textColor);\n }\n if (oldObjectData.content.fillColor !== newObjectData.content.fillColor) {\n this.setFillColor(newObjectData.content.fillColor);\n }\n if (\n oldObjectData.content.fillOpacity !== newObjectData.content.fillOpacity\n ) {\n this.setFillOpacity(newObjectData.content.fillOpacity);\n }\n if (\n oldObjectData.content.borderColor !== newObjectData.content.borderColor\n ) {\n this.setBorderColor(newObjectData.content.borderColor);\n }\n if (\n oldObjectData.content.borderOpacity !==\n newObjectData.content.borderOpacity\n ) {\n this.setBorderOpacity(newObjectData.content.borderOpacity);\n }\n if (\n oldObjectData.content.borderWidth !== newObjectData.content.borderWidth\n ) {\n this.setBorderWidth(newObjectData.content.borderWidth);\n }\n if (oldObjectData.content.disabled !== newObjectData.content.disabled) {\n this.setDisabled(newObjectData.content.disabled);\n }\n if (oldObjectData.content.readOnly !== newObjectData.content.readOnly) {\n this.setReadOnly(newObjectData.content.readOnly);\n }\n if (\n newObjectData.content.spellCheck !== undefined &&\n oldObjectData.content.spellCheck !== newObjectData.content.spellCheck\n ) {\n this.setSpellCheck(newObjectData.content.spellCheck);\n }\n if (\n newObjectData.content.maxLength !== undefined &&\n oldObjectData.content.maxLength !== newObjectData.content.maxLength\n ) {\n this.setMaxLength(newObjectData.content.maxLength);\n }\n if (\n newObjectData.content.textAlign &&\n oldObjectData.content.textAlign !== newObjectData.content.textAlign\n ) {\n this._textAlign = newObjectData.content.textAlign;\n }\n if (\n newObjectData.content.paddingX !== undefined &&\n oldObjectData.content.paddingX !== newObjectData.content.paddingX\n ) {\n this.setPaddingX(newObjectData.content.paddingX);\n }\n if (\n newObjectData.content.paddingY !== undefined &&\n oldObjectData.content.paddingY !== newObjectData.content.paddingY\n ) {\n this.setPaddingY(newObjectData.content.paddingY);\n }\n\n return true;\n }\n\n getNetworkSyncData(): TextInputNetworkSyncData {\n return {\n ...super.getNetworkSyncData(),\n opa: this.getOpacity(),\n txt: this.getText(),\n frn: this.getFontResourceName(),\n fs: this.getFontSize(),\n place: this.getPlaceholder(),\n it: this.getInputType(),\n tc: this.getTextColor(),\n fc: this.getFillColor(),\n fo: this.getFillOpacity(),\n bc: this.getBorderColor(),\n bo: this.getBorderOpacity(),\n bw: this.getBorderWidth(),\n dis: this.isDisabled(),\n ro: this.isReadOnly(),\n sc: this.isSpellCheckEnabled(),\n };\n }\n\n updateFromNetworkSyncData(syncData: TextInputNetworkSyncData): void {\n super.updateFromNetworkSyncData(syncData);\n\n if (syncData.opa !== undefined) this.setOpacity(syncData.opa);\n if (syncData.txt !== undefined) this.setText(syncData.txt);\n if (syncData.frn !== undefined) this.setFontResourceName(syncData.frn);\n if (syncData.fs !== undefined) this.setFontSize(syncData.fs);\n if (syncData.place !== undefined) this.setPlaceholder(syncData.place);\n if (syncData.it !== undefined) this.setInputType(syncData.it);\n if (syncData.tc !== undefined) this.setTextColor(syncData.tc);\n if (syncData.fc !== undefined) this.setFillColor(syncData.fc);\n if (syncData.fo !== undefined) this.setFillOpacity(syncData.fo);\n if (syncData.bc !== undefined) this.setBorderColor(syncData.bc);\n if (syncData.bo !== undefined) this.setBorderOpacity(syncData.bo);\n if (syncData.bw !== undefined) this.setBorderWidth(syncData.bw);\n if (syncData.dis !== undefined) this.setDisabled(syncData.dis);\n if (syncData.ro !== undefined) this.setReadOnly(syncData.ro);\n if (syncData.sc !== undefined) this.setSpellCheck(syncData.sc);\n }\n\n updatePreRender(instanceContainer: RuntimeInstanceContainer): void {\n this._isSubmitted = false;\n this._renderer.updatePreRender();\n }\n\n /**\n * Initialize the extra parameters that could be set for an instance.\n */\n extraInitializationFromInitialInstance(initialInstanceData: InstanceData) {\n for (const property of initialInstanceData.stringProperties) {\n if (property.name === 'initialValue') {\n this.setString(property.value);\n } else if (property.name === 'placeholder') {\n this.setPlaceholder(property.value);\n }\n }\n if (initialInstanceData.customSize) {\n this.setWidth(initialInstanceData.width);\n this.setHeight(initialInstanceData.height);\n this._renderer.updatePadding();\n }\n if (initialInstanceData.opacity !== undefined) {\n this.setOpacity(initialInstanceData.opacity);\n }\n }\n\n onScenePaused(runtimeScene: gdjs.RuntimeScene): void {\n this._renderer.onScenePaused();\n }\n\n onSceneResumed(runtimeScene: gdjs.RuntimeScene): void {\n this._renderer.onSceneResumed();\n }\n\n onDestroyed(): void {\n super.onDestroyed();\n this._renderer.onDestroy();\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 setSize(width: number, height: number): void {\n this.setWidth(width);\n this.setHeight(height);\n }\n\n setWidth(width: float): void {\n this._width = width;\n this._renderer.updatePadding();\n }\n\n setHeight(height: float): void {\n this._height = height;\n this._renderer.updatePadding();\n }\n\n /**\n * Return the width of the object.\n * @return The width of the object\n */\n getWidth(): float {\n return this._width;\n }\n\n /**\n * Return the width of the object.\n * @return The height of the object\n */\n getHeight(): float {\n return this._height;\n }\n\n /**\n * Get the text entered in the text input.\n * @deprecated use `getText` instead\n */\n getString() {\n return this.getText();\n }\n\n /**\n * Replace the text inside the text input.\n * @deprecated use `setText` instead\n */\n setString(text: string) {\n this.setText(text);\n }\n\n getText() {\n return this._string;\n }\n\n setText(newString: string) {\n if (newString === this._string) return;\n\n this._string = newString;\n this._renderer.updateString();\n }\n\n /**\n * Called by the renderer when the value of the input shown on the screen\n * was changed (because the user typed something).\n * This does not propagate back the value to the renderer, which would\n * result in the cursor being sent back to the end of the text.\n *\n * Do not use this if you are not inside the renderer - use `setString` instead.\n */\n onRendererInputValueChanged(inputValue: string) {\n this._string = inputValue;\n }\n\n onRendererFormSubmitted() {\n this._isSubmitted = true;\n }\n\n getFontResourceName() {\n return this._fontResourceName;\n }\n\n setFontResourceName(resourceName: string) {\n if (this._fontResourceName === resourceName) return;\n\n this._fontResourceName = resourceName;\n this._renderer.updateFont();\n }\n\n getFontSize() {\n return this._fontSize;\n }\n\n setFontSize(newSize: number) {\n this._fontSize = newSize;\n }\n\n /**\n * Get the placeholder shown when no text is entered\n */\n getPlaceholder() {\n return this._placeholder;\n }\n\n /**\n * Replace the text inside the text input.\n */\n setPlaceholder(newPlaceholder: string) {\n if (newPlaceholder === this._placeholder) return;\n\n this._placeholder = newPlaceholder;\n this._renderer.updatePlaceholder();\n }\n\n /**\n * Get the type of the input.\n */\n getInputType() {\n return this._inputType;\n }\n\n /**\n * Set the type of the input.\n */\n setInputType(newInputType: string) {\n const lowercasedNewInputType = newInputType.toLowerCase();\n if (lowercasedNewInputType === this._inputType) return;\n\n this._inputType = parseInputType(lowercasedNewInputType);\n this._renderer.updateInputType();\n }\n\n setTextColor(newColor: string) {\n this._textColor = gdjs.rgbOrHexToRGBColor(newColor);\n this._renderer.updateTextColor();\n }\n\n getTextColor(): string {\n return (\n this._textColor[0] + ';' + this._textColor[1] + ';' + this._textColor[2]\n );\n }\n\n _getRawTextColor(): [float, float, float] {\n return this._textColor;\n }\n\n setFillColor(newColor: string) {\n this._fillColor = gdjs.rgbOrHexToRGBColor(newColor);\n this._renderer.updateFillColorAndOpacity();\n }\n\n getFillColor(): string {\n return (\n this._fillColor[0] + ';' + this._fillColor[1] + ';' + this._fillColor[2]\n );\n }\n\n _getRawFillColor(): [float, float, float] {\n return this._fillColor;\n }\n\n setFillOpacity(newOpacity: float) {\n this._fillOpacity = Math.max(0, Math.min(255, newOpacity));\n this._renderer.updateFillColorAndOpacity();\n }\n\n getFillOpacity(): float {\n return this._fillOpacity;\n }\n\n setBorderColor(newColor: string) {\n this._borderColor = gdjs.rgbOrHexToRGBColor(newColor);\n this._renderer.updateBorderColorAndOpacity();\n }\n\n getBorderColor(): string {\n return (\n this._borderColor[0] +\n ';' +\n this._borderColor[1] +\n ';' +\n this._borderColor[2]\n );\n }\n\n _getRawBorderColor(): [float, float, float] {\n return this._borderColor;\n }\n\n setBorderOpacity(newOpacity: float) {\n this._borderOpacity = Math.max(0, Math.min(255, newOpacity));\n this._renderer.updateBorderColorAndOpacity();\n }\n\n getBorderOpacity(): float {\n return this._borderOpacity;\n }\n\n setBorderWidth(width: float) {\n this._borderWidth = Math.max(0, width);\n this._renderer.updateBorderWidth();\n }\n\n getBorderWidth(): float {\n return this._borderWidth;\n }\n\n setDisabled(value: boolean) {\n this._disabled = value;\n this._renderer.updateDisabled();\n }\n\n isDisabled(): boolean {\n return this._disabled;\n }\n\n setReadOnly(value: boolean) {\n this._readOnly = value;\n this._renderer.updateReadOnly();\n }\n\n isReadOnly(): boolean {\n return this._readOnly;\n }\n\n setSpellCheck(value: boolean) {\n this._spellCheck = value;\n this._renderer.updateSpellCheck();\n }\n\n isSpellCheckEnabled(): boolean {\n return this._spellCheck;\n }\n\n isFocused(): boolean {\n return this._renderer.isFocused();\n }\n isSubmitted(): boolean {\n return this._isSubmitted;\n }\n\n getMaxLength(): integer {\n return this._maxLength;\n }\n setMaxLength(value: integer) {\n if (this._maxLength === value) return;\n\n this._maxLength = value;\n this._renderer.updateMaxLength();\n }\n\n getPaddingX(): integer {\n return clampPadding(this._paddingX, this._width, this._borderWidth);\n }\n setPaddingX(value: integer) {\n if (this._paddingX === value) return;\n if (value < 0) {\n this._paddingX = 0;\n return;\n }\n\n this._paddingX = value;\n this._renderer.updatePadding();\n }\n getPaddingY(): integer {\n return clampPadding(this._paddingY, this._height, this._borderWidth);\n }\n setPaddingY(value: integer) {\n if (this._paddingY === value) return;\n if (value < 0) {\n this._paddingY = 0;\n return;\n }\n\n this._paddingY = value;\n this._renderer.updatePadding();\n }\n\n getTextAlign(): SupportedTextAlign {\n return this._textAlign;\n }\n\n setTextAlign(newTextAlign: string) {\n const parsedTextAlign = parseTextAlign(newTextAlign);\n if (parsedTextAlign === this._textAlign) return;\n\n this._textAlign = parsedTextAlign;\n this._renderer.updateTextAlign();\n }\n\n focus(): void {\n if (!this.isFocused()) {\n // If the input was not previously focused, reset input manager because there is\n // no reason to maintain its state. It avoids bugs where a key is pressed, the text\n // input is focused and then the input manager does not have access to the keyup event\n // and considers the key still pressed.\n this.getInstanceContainer()\n .getGame()\n .getInputManager()\n .clearAllPressedKeys();\n }\n this._renderer.focus();\n }\n }\n gdjs.registerObject(\n 'TextInput::TextInputObject',\n gdjs.TextInputRuntimeObject\n );\n}\n"],
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["namespace gdjs {\n const supportedInputTypes = [\n 'text',\n 'email',\n 'password',\n 'number',\n 'telephone number',\n 'url',\n 'search',\n 'text area',\n ] as const;\n const supportedTextAlign = ['left', 'center', 'right'] as const;\n\n type SupportedInputType = (typeof supportedInputTypes)[number];\n type SupportedTextAlign = (typeof supportedTextAlign)[number];\n const parseInputType = (potentialInputType: string): SupportedInputType => {\n const lowercasedNewInputType = potentialInputType.toLowerCase();\n\n // @ts-ignore - we're actually checking that this value is correct.\n if (supportedInputTypes.includes(lowercasedNewInputType))\n return potentialInputType as SupportedInputType;\n\n return 'text';\n };\n\n const parseTextAlign = (\n potentialTextAlign: string | undefined\n ): SupportedTextAlign => {\n if (!potentialTextAlign) return 'left';\n const lowercasedNewTextAlign = potentialTextAlign.toLowerCase();\n\n // @ts-ignore - we're actually checking that this value is correct.\n if (supportedTextAlign.includes(lowercasedNewTextAlign))\n return potentialTextAlign as SupportedTextAlign;\n\n return 'left';\n };\n\n /** Base parameters for {@link gdjs.TextInputRuntimeObject} */\n export interface TextInputObjectData extends ObjectData {\n /** The base parameters of the TextInput */\n content: {\n initialValue: string;\n placeholder: string;\n fontResourceName: string;\n fontSize: float;\n inputType: SupportedInputType;\n textColor: string;\n fillColor: string;\n fillOpacity: float;\n borderColor: string;\n borderOpacity: float;\n borderWidth: float;\n disabled: boolean;\n readOnly: boolean;\n // ---- Values can be undefined because of support for these feature was added in v5.5.222.\n spellCheck?: boolean;\n paddingX?: float;\n paddingY?: float;\n textAlign?: SupportedTextAlign;\n maxLength?: integer;\n // ----\n };\n }\n\n export type TextInputNetworkSyncDataType = {\n opa: float;\n txt: string;\n frn: string;\n fs: number;\n place: string;\n it: SupportedInputType;\n tc: string;\n fc: string;\n fo: float;\n bc: string;\n bo: float;\n bw: float;\n dis: boolean;\n ro: boolean;\n sc: boolean;\n };\n\n export type TextInputNetworkSyncData = ObjectNetworkSyncData &\n TextInputNetworkSyncDataType;\n\n const DEFAULT_WIDTH = 300;\n const DEFAULT_HEIGHT = 30;\n\n const clampPadding = (value: float, dimension: float, borderWidth: float) => {\n return Math.max(0, Math.min(dimension / 2 - borderWidth, value));\n };\n\n /**\n * Shows a text input on the screen the player can type text into.\n */\n export class TextInputRuntimeObject\n extends gdjs.RuntimeObject\n implements gdjs.TextContainer, gdjs.Resizable, gdjs.OpacityHandler\n {\n private _string: string;\n private _placeholder: string;\n private opacity: float = 255;\n private _width: float = DEFAULT_WIDTH;\n private _height: float = DEFAULT_HEIGHT;\n private _fontResourceName: string;\n private _fontSize: float;\n private _inputType: SupportedInputType;\n private _textColor: [float, float, float];\n private _fillColor: [float, float, float];\n private _fillOpacity: float;\n private _paddingX: integer;\n private _paddingY: integer;\n private _textAlign: SupportedTextAlign;\n private _maxLength: integer;\n private _borderColor: [float, float, float];\n private _borderOpacity: float;\n private _borderWidth: float;\n private _disabled: boolean;\n private _readOnly: boolean;\n private _spellCheck: boolean;\n private _isSubmitted: boolean;\n _renderer: TextInputRuntimeObjectRenderer;\n\n constructor(\n instanceContainer: gdjs.RuntimeInstanceContainer,\n objectData: TextInputObjectData\n ) {\n super(instanceContainer, objectData);\n\n this._string = objectData.content.initialValue;\n this._placeholder = objectData.content.placeholder;\n this._fontResourceName = objectData.content.fontResourceName;\n this._fontSize = objectData.content.fontSize || 20;\n this._inputType = parseInputType(objectData.content.inputType);\n this._textColor = gdjs.rgbOrHexToRGBColor(objectData.content.textColor);\n this._fillColor = gdjs.rgbOrHexToRGBColor(objectData.content.fillColor);\n this._fillOpacity = objectData.content.fillOpacity;\n this._borderColor = gdjs.rgbOrHexToRGBColor(\n objectData.content.borderColor\n );\n this._borderOpacity = objectData.content.borderOpacity;\n this._borderWidth = objectData.content.borderWidth;\n this._disabled = objectData.content.disabled;\n this._readOnly = objectData.content.readOnly;\n this._spellCheck =\n objectData.content.spellCheck !== undefined\n ? objectData.content.spellCheck\n : false;\n this._textAlign = parseTextAlign(objectData.content.textAlign);\n this._maxLength = objectData.content.maxLength || 0;\n this._paddingX =\n objectData.content.paddingX !== undefined\n ? objectData.content.paddingX\n : 2;\n this._paddingY =\n objectData.content.paddingY !== undefined\n ? objectData.content.paddingY\n : 1;\n this._isSubmitted = false;\n this._renderer = new gdjs.TextInputRuntimeObjectRenderer(\n this,\n instanceContainer\n );\n\n // *ALWAYS* call `this.onCreated()` at the very end of your object constructor.\n this.onCreated();\n }\n\n getRendererObject() {\n return null;\n }\n\n updateFromObjectData(\n oldObjectData: TextInputObjectData,\n newObjectData: TextInputObjectData\n ): boolean {\n if (\n oldObjectData.content.initialValue !==\n newObjectData.content.initialValue\n ) {\n if (this._string === oldObjectData.content.initialValue) {\n this.setString(newObjectData.content.initialValue);\n }\n }\n if (\n oldObjectData.content.placeholder !== newObjectData.content.placeholder\n ) {\n this.setPlaceholder(newObjectData.content.placeholder);\n }\n if (\n oldObjectData.content.fontResourceName !==\n newObjectData.content.fontResourceName\n ) {\n this.setFontResourceName(newObjectData.content.fontResourceName);\n }\n if (oldObjectData.content.fontSize !== newObjectData.content.fontSize) {\n this.setFontSize(newObjectData.content.fontSize);\n }\n if (oldObjectData.content.inputType !== newObjectData.content.inputType) {\n this.setInputType(newObjectData.content.inputType);\n }\n if (oldObjectData.content.textColor !== newObjectData.content.textColor) {\n this.setTextColor(newObjectData.content.textColor);\n }\n if (oldObjectData.content.fillColor !== newObjectData.content.fillColor) {\n this.setFillColor(newObjectData.content.fillColor);\n }\n if (\n oldObjectData.content.fillOpacity !== newObjectData.content.fillOpacity\n ) {\n this.setFillOpacity(newObjectData.content.fillOpacity);\n }\n if (\n oldObjectData.content.borderColor !== newObjectData.content.borderColor\n ) {\n this.setBorderColor(newObjectData.content.borderColor);\n }\n if (\n oldObjectData.content.borderOpacity !==\n newObjectData.content.borderOpacity\n ) {\n this.setBorderOpacity(newObjectData.content.borderOpacity);\n }\n if (\n oldObjectData.content.borderWidth !== newObjectData.content.borderWidth\n ) {\n this.setBorderWidth(newObjectData.content.borderWidth);\n }\n if (oldObjectData.content.disabled !== newObjectData.content.disabled) {\n this.setDisabled(newObjectData.content.disabled);\n }\n if (oldObjectData.content.readOnly !== newObjectData.content.readOnly) {\n this.setReadOnly(newObjectData.content.readOnly);\n }\n if (\n newObjectData.content.spellCheck !== undefined &&\n oldObjectData.content.spellCheck !== newObjectData.content.spellCheck\n ) {\n this.setSpellCheck(newObjectData.content.spellCheck);\n }\n if (\n newObjectData.content.maxLength !== undefined &&\n oldObjectData.content.maxLength !== newObjectData.content.maxLength\n ) {\n this.setMaxLength(newObjectData.content.maxLength);\n }\n if (\n newObjectData.content.textAlign &&\n oldObjectData.content.textAlign !== newObjectData.content.textAlign\n ) {\n this._textAlign = newObjectData.content.textAlign;\n }\n if (\n newObjectData.content.paddingX !== undefined &&\n oldObjectData.content.paddingX !== newObjectData.content.paddingX\n ) {\n this.setPaddingX(newObjectData.content.paddingX);\n }\n if (\n newObjectData.content.paddingY !== undefined &&\n oldObjectData.content.paddingY !== newObjectData.content.paddingY\n ) {\n this.setPaddingY(newObjectData.content.paddingY);\n }\n\n return true;\n }\n\n getNetworkSyncData(\n syncOptions: GetNetworkSyncDataOptions\n ): TextInputNetworkSyncData {\n return {\n ...super.getNetworkSyncData(syncOptions),\n opa: this.getOpacity(),\n txt: this.getText(),\n frn: this.getFontResourceName(),\n fs: this.getFontSize(),\n place: this.getPlaceholder(),\n it: this.getInputType(),\n tc: this.getTextColor(),\n fc: this.getFillColor(),\n fo: this.getFillOpacity(),\n bc: this.getBorderColor(),\n bo: this.getBorderOpacity(),\n bw: this.getBorderWidth(),\n dis: this.isDisabled(),\n ro: this.isReadOnly(),\n sc: this.isSpellCheckEnabled(),\n };\n }\n\n updateFromNetworkSyncData(\n syncData: TextInputNetworkSyncData,\n options: UpdateFromNetworkSyncDataOptions\n ): void {\n super.updateFromNetworkSyncData(syncData, options);\n\n if (syncData.opa !== undefined) this.setOpacity(syncData.opa);\n if (syncData.txt !== undefined) this.setText(syncData.txt);\n if (syncData.frn !== undefined) this.setFontResourceName(syncData.frn);\n if (syncData.fs !== undefined) this.setFontSize(syncData.fs);\n if (syncData.place !== undefined) this.setPlaceholder(syncData.place);\n if (syncData.it !== undefined) this.setInputType(syncData.it);\n if (syncData.tc !== undefined) this.setTextColor(syncData.tc);\n if (syncData.fc !== undefined) this.setFillColor(syncData.fc);\n if (syncData.fo !== undefined) this.setFillOpacity(syncData.fo);\n if (syncData.bc !== undefined) this.setBorderColor(syncData.bc);\n if (syncData.bo !== undefined) this.setBorderOpacity(syncData.bo);\n if (syncData.bw !== undefined) this.setBorderWidth(syncData.bw);\n if (syncData.dis !== undefined) this.setDisabled(syncData.dis);\n if (syncData.ro !== undefined) this.setReadOnly(syncData.ro);\n if (syncData.sc !== undefined) this.setSpellCheck(syncData.sc);\n }\n\n updatePreRender(instanceContainer: RuntimeInstanceContainer): void {\n this._isSubmitted = false;\n this._renderer.updatePreRender();\n }\n\n /**\n * Initialize the extra parameters that could be set for an instance.\n */\n extraInitializationFromInitialInstance(initialInstanceData: InstanceData) {\n for (const property of initialInstanceData.stringProperties) {\n if (property.name === 'initialValue') {\n this.setString(property.value);\n } else if (property.name === 'placeholder') {\n this.setPlaceholder(property.value);\n }\n }\n if (initialInstanceData.customSize) {\n this.setWidth(initialInstanceData.width);\n this.setHeight(initialInstanceData.height);\n this._renderer.updatePadding();\n }\n if (initialInstanceData.opacity !== undefined) {\n this.setOpacity(initialInstanceData.opacity);\n }\n }\n\n onScenePaused(runtimeScene: gdjs.RuntimeScene): void {\n this._renderer.onScenePaused();\n }\n\n onSceneResumed(runtimeScene: gdjs.RuntimeScene): void {\n this._renderer.onSceneResumed();\n }\n\n onDestroyed(): void {\n super.onDestroyed();\n this._renderer.onDestroy();\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 setSize(width: number, height: number): void {\n this.setWidth(width);\n this.setHeight(height);\n }\n\n setWidth(width: float): void {\n this._width = width;\n this._renderer.updatePadding();\n }\n\n setHeight(height: float): void {\n this._height = height;\n this._renderer.updatePadding();\n }\n\n /**\n * Return the width of the object.\n * @return The width of the object\n */\n getWidth(): float {\n return this._width;\n }\n\n /**\n * Return the width of the object.\n * @return The height of the object\n */\n getHeight(): float {\n return this._height;\n }\n\n /**\n * Get the text entered in the text input.\n * @deprecated use `getText` instead\n */\n getString() {\n return this.getText();\n }\n\n /**\n * Replace the text inside the text input.\n * @deprecated use `setText` instead\n */\n setString(text: string) {\n this.setText(text);\n }\n\n getText() {\n return this._string;\n }\n\n setText(newString: string) {\n if (newString === this._string) return;\n\n this._string = newString;\n this._renderer.updateString();\n }\n\n /**\n * Called by the renderer when the value of the input shown on the screen\n * was changed (because the user typed something).\n * This does not propagate back the value to the renderer, which would\n * result in the cursor being sent back to the end of the text.\n *\n * Do not use this if you are not inside the renderer - use `setString` instead.\n */\n onRendererInputValueChanged(inputValue: string) {\n this._string = inputValue;\n }\n\n onRendererFormSubmitted() {\n this._isSubmitted = true;\n }\n\n getFontResourceName() {\n return this._fontResourceName;\n }\n\n setFontResourceName(resourceName: string) {\n if (this._fontResourceName === resourceName) return;\n\n this._fontResourceName = resourceName;\n this._renderer.updateFont();\n }\n\n getFontSize() {\n return this._fontSize;\n }\n\n setFontSize(newSize: number) {\n this._fontSize = newSize;\n }\n\n /**\n * Get the placeholder shown when no text is entered\n */\n getPlaceholder() {\n return this._placeholder;\n }\n\n /**\n * Replace the text inside the text input.\n */\n setPlaceholder(newPlaceholder: string) {\n if (newPlaceholder === this._placeholder) return;\n\n this._placeholder = newPlaceholder;\n this._renderer.updatePlaceholder();\n }\n\n /**\n * Get the type of the input.\n */\n getInputType() {\n return this._inputType;\n }\n\n /**\n * Set the type of the input.\n */\n setInputType(newInputType: string) {\n const lowercasedNewInputType = newInputType.toLowerCase();\n if (lowercasedNewInputType === this._inputType) return;\n\n this._inputType = parseInputType(lowercasedNewInputType);\n this._renderer.updateInputType();\n }\n\n setTextColor(newColor: string) {\n this._textColor = gdjs.rgbOrHexToRGBColor(newColor);\n this._renderer.updateTextColor();\n }\n\n getTextColor(): string {\n return (\n this._textColor[0] + ';' + this._textColor[1] + ';' + this._textColor[2]\n );\n }\n\n _getRawTextColor(): [float, float, float] {\n return this._textColor;\n }\n\n setFillColor(newColor: string) {\n this._fillColor = gdjs.rgbOrHexToRGBColor(newColor);\n this._renderer.updateFillColorAndOpacity();\n }\n\n getFillColor(): string {\n return (\n this._fillColor[0] + ';' + this._fillColor[1] + ';' + this._fillColor[2]\n );\n }\n\n _getRawFillColor(): [float, float, float] {\n return this._fillColor;\n }\n\n setFillOpacity(newOpacity: float) {\n this._fillOpacity = Math.max(0, Math.min(255, newOpacity));\n this._renderer.updateFillColorAndOpacity();\n }\n\n getFillOpacity(): float {\n return this._fillOpacity;\n }\n\n setBorderColor(newColor: string) {\n this._borderColor = gdjs.rgbOrHexToRGBColor(newColor);\n this._renderer.updateBorderColorAndOpacity();\n }\n\n getBorderColor(): string {\n return (\n this._borderColor[0] +\n ';' +\n this._borderColor[1] +\n ';' +\n this._borderColor[2]\n );\n }\n\n _getRawBorderColor(): [float, float, float] {\n return this._borderColor;\n }\n\n setBorderOpacity(newOpacity: float) {\n this._borderOpacity = Math.max(0, Math.min(255, newOpacity));\n this._renderer.updateBorderColorAndOpacity();\n }\n\n getBorderOpacity(): float {\n return this._borderOpacity;\n }\n\n setBorderWidth(width: float) {\n this._borderWidth = Math.max(0, width);\n this._renderer.updateBorderWidth();\n }\n\n getBorderWidth(): float {\n return this._borderWidth;\n }\n\n setDisabled(value: boolean) {\n this._disabled = value;\n this._renderer.updateDisabled();\n }\n\n isDisabled(): boolean {\n return this._disabled;\n }\n\n setReadOnly(value: boolean) {\n this._readOnly = value;\n this._renderer.updateReadOnly();\n }\n\n isReadOnly(): boolean {\n return this._readOnly;\n }\n\n setSpellCheck(value: boolean) {\n this._spellCheck = value;\n this._renderer.updateSpellCheck();\n }\n\n isSpellCheckEnabled(): boolean {\n return this._spellCheck;\n }\n\n isFocused(): boolean {\n return this._renderer.isFocused();\n }\n isSubmitted(): boolean {\n return this._isSubmitted;\n }\n\n getMaxLength(): integer {\n return this._maxLength;\n }\n setMaxLength(value: integer) {\n if (this._maxLength === value) return;\n\n this._maxLength = value;\n this._renderer.updateMaxLength();\n }\n\n getPaddingX(): integer {\n return clampPadding(this._paddingX, this._width, this._borderWidth);\n }\n setPaddingX(value: integer) {\n if (this._paddingX === value) return;\n if (value < 0) {\n this._paddingX = 0;\n return;\n }\n\n this._paddingX = value;\n this._renderer.updatePadding();\n }\n getPaddingY(): integer {\n return clampPadding(this._paddingY, this._height, this._borderWidth);\n }\n setPaddingY(value: integer) {\n if (this._paddingY === value) return;\n if (value < 0) {\n this._paddingY = 0;\n return;\n }\n\n this._paddingY = value;\n this._renderer.updatePadding();\n }\n\n getTextAlign(): SupportedTextAlign {\n return this._textAlign;\n }\n\n setTextAlign(newTextAlign: string) {\n const parsedTextAlign = parseTextAlign(newTextAlign);\n if (parsedTextAlign === this._textAlign) return;\n\n this._textAlign = parsedTextAlign;\n this._renderer.updateTextAlign();\n }\n\n focus(): void {\n if (!this.isFocused()) {\n // If the input was not previously focused, reset input manager because there is\n // no reason to maintain its state. It avoids bugs where a key is pressed, the text\n // input is focused and then the input manager does not have access to the keyup event\n // and considers the key still pressed.\n this.getInstanceContainer()\n .getGame()\n .getInputManager()\n .clearAllPressedKeys();\n }\n this._renderer.focus();\n }\n }\n gdjs.registerObject(\n 'TextInput::TextInputObject',\n gdjs.TextInputRuntimeObject\n );\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var gdjs;(function(s){class n extends s.RuntimeObject{constructor(e,r){super(e,r);this._useGradient=!1;this._gradient=[];this._gradientType="";this.opacity=255;this._wrapping=!1;this._wrappingWidth=100;this._padding=5;this._scaleX=1;this._scaleY=1;const t=r.content;this._characterSize=Math.max(1,t.characterSize),this._fontName=t.font,this._bold=t.bold,this._italic=t.italic,this._underlined=t.underlined,this._color=s.rgbOrHexToRGBColor(t.color),this._str=t.text,this._textAlign=t.textAlignment||"left",this._verticalTextAlignment=t.verticalTextAlignment||"top",this._isOutlineEnabled=t.isOutlineEnabled,this._outlineThickness=t.outlineThickness,this._outlineColor=s.rgbOrHexToRGBColor(t.outlineColor),this._shadow=t.isShadowEnabled,this._shadowColor=s.rgbOrHexToRGBColor(t.shadowColor),this._shadowOpacity=t.shadowOpacity,this._shadowDistance=t.shadowDistance,this._shadowBlur=t.shadowBlurRadius,this._shadowAngle=t.shadowAngle,this._lineHeight=t.lineHeight||0,this._renderer=new s.TextRuntimeObjectRenderer(this,e),this.onCreated()}updateFromObjectData(e,r){const t=e.content,i=r.content;return t.characterSize!==i.characterSize&&this.setCharacterSize(i.characterSize),t.font!==i.font&&this.setFontName(i.font),t.bold!==i.bold&&this.setBold(i.bold),t.italic!==i.italic&&this.setItalic(i.italic),t.color!==i.color&&this.setColor(i.color),t.text!==i.text&&this.setText(i.text),t.
|
|
1
|
+
var gdjs;(function(s){class n extends s.RuntimeObject{constructor(e,r){super(e,r);this._useGradient=!1;this._gradient=[];this._gradientType="";this.opacity=255;this._wrapping=!1;this._wrappingWidth=100;this._padding=5;this._scaleX=1;this._scaleY=1;const t=r.content;this._characterSize=Math.max(1,t.characterSize),this._fontName=t.font,this._bold=t.bold,this._italic=t.italic,this._underlined=t.underlined,this._color=s.rgbOrHexToRGBColor(t.color),this._str=t.text,this._textAlign=t.textAlignment||"left",this._verticalTextAlignment=t.verticalTextAlignment||"top",this._isOutlineEnabled=t.isOutlineEnabled,this._outlineThickness=t.outlineThickness,this._outlineColor=s.rgbOrHexToRGBColor(t.outlineColor),this._shadow=t.isShadowEnabled,this._shadowColor=s.rgbOrHexToRGBColor(t.shadowColor),this._shadowOpacity=t.shadowOpacity,this._shadowDistance=t.shadowDistance,this._shadowBlur=t.shadowBlurRadius,this._shadowAngle=t.shadowAngle,this._lineHeight=t.lineHeight||0,this._renderer=new s.TextRuntimeObjectRenderer(this,e),this.onCreated()}updateFromObjectData(e,r){const t=e.content,i=r.content;return t.characterSize!==i.characterSize&&this.setCharacterSize(i.characterSize),t.font!==i.font&&this.setFontName(i.font),t.bold!==i.bold&&this.setBold(i.bold),t.italic!==i.italic&&this.setItalic(i.italic),t.color!==i.color&&this.setColor(i.color),t.text!==i.text&&this.setText(i.text),t.textAlignment!==i.textAlignment&&this.setTextAlignment(i.textAlignment),t.verticalTextAlignment!==i.verticalTextAlignment&&this.setVerticalTextAlignment(i.verticalTextAlignment),t.isOutlineEnabled!==i.isOutlineEnabled&&this.setOutlineEnabled(i.isOutlineEnabled),t.outlineThickness!==i.outlineThickness&&this.setOutlineThickness(i.outlineThickness),t.outlineColor!==i.outlineColor&&this.setOutlineColor(i.outlineColor),t.isShadowEnabled!==i.isShadowEnabled&&this.showShadow(i.isShadowEnabled),t.shadowColor!==i.shadowColor&&this.setShadowColor(i.shadowColor),t.shadowOpacity!==i.shadowOpacity&&this.setShadowOpacity(i.shadowOpacity),t.shadowDistance!==i.shadowDistance&&this.setShadowDistance(i.shadowDistance),t.shadowAngle!==i.shadowAngle&&this.setShadowAngle(i.shadowAngle),t.shadowBlurRadius!==i.shadowBlurRadius&&this.setShadowBlurRadius(i.shadowBlurRadius),(t.lineHeight||0)!==(i.lineHeight||0)&&this.setLineHeight(i.lineHeight||0),t.underlined===i.underlined}getNetworkSyncData(e){return{...super.getNetworkSyncData(e),str:this._str,o:this.opacity,cs:this._characterSize,fn:this._fontName,b:this._bold,i:this._italic,u:this._underlined,c:this._color,scale:this.getScale(),ta:this._textAlign,vta:this._verticalTextAlignment,wrap:this._wrapping,wrapw:this._wrappingWidth,oena:this._isOutlineEnabled,ot:this._outlineThickness,oc:this._outlineColor,sh:this._shadow,shc:this._shadowColor,sho:this._shadowOpacity,shd:this._shadowDistance,sha:this._shadowAngle,shb:this._shadowBlur,lh:this._lineHeight,pad:this._padding}}updateFromNetworkSyncData(e,r){super.updateFromNetworkSyncData(e,r),e.str!==void 0&&this.setText(e.str),e.o!==void 0&&this.setOpacity(e.o),e.cs!==void 0&&this.setCharacterSize(e.cs),e.fn!==void 0&&this.setFontName(e.fn),e.b!==void 0&&this.setBold(e.b),e.i!==void 0&&this.setItalic(e.i),e.u!==void 0&&(this._underlined=e.u),e.c!==void 0&&(this._color=e.c),e.scale!==void 0&&this.setScale(e.scale),e.ta!==void 0&&this.setTextAlignment(e.ta),e.vta!==void 0&&this.setVerticalTextAlignment(e.vta),e.wrap!==void 0&&this.setWrapping(e.wrap),e.wrapw!==void 0&&this.setWrappingWidth(e.wrapw),e.oena!==void 0&&this.setOutlineEnabled(e.oena),e.ot!==void 0&&this.setOutlineThickness(e.ot),e.oc!==void 0&&(this._outlineColor=e.oc),e.sh!==void 0&&this.showShadow(e.sh),e.shc!==void 0&&(this._shadowColor=e.shc),e.sho!==void 0&&this.setShadowOpacity(e.sho),e.shd!==void 0&&this.setShadowDistance(e.shd),e.sha!==void 0&&this.setShadowAngle(e.sha),e.shb!==void 0&&this.setShadowBlurRadius(e.shb),e.lh!==void 0&&this.setLineHeight(e.lh),e.pad!==void 0&&this.setPadding(e.pad)}getRendererObject(){return this._renderer.getRendererObject()}update(e){this._renderer.ensureUpToDate()}onDestroyed(){super.onDestroyed(),this._renderer.destroy()}extraInitializationFromInitialInstance(e){e.customSize?(this.setWrappingWidth(e.width),this.setWrapping(!0)):this.setWrapping(!1),e.opacity!==void 0&&this.setOpacity(e.opacity)}_updateTextPosition(){this.invalidateHitboxes(),this._renderer.updatePosition()}setX(e){super.setX(e),this._updateTextPosition()}setY(e){super.setY(e),this._updateTextPosition()}setAngle(e){super.setAngle(e),this._renderer.updateAngle()}setOpacity(e){e<0&&(e=0),e>255&&(e=255),this.opacity=e,this._renderer.updateOpacity()}getOpacity(){return this.opacity}getString(){return this.getText()}setString(e){this.setText(e)}getText(){return this._str}setText(e){e!==this._str&&(this._str=e,this._renderer.updateString(),this._updateTextPosition())}getCharacterSize(){return this._characterSize}setCharacterSize(e){e<=1&&(e=1),this._characterSize=e,this._renderer.updateStyle()}getLineHeight(){return this._lineHeight}setLineHeight(e){this._lineHeight=e,this._renderer.updateStyle()}setFontName(e){this._fontName=e,this._renderer.updateStyle()}isBold(){return this._bold}setBold(e){this._bold=e,this._renderer.updateStyle()}isItalic(){return this._italic}setItalic(e){this._italic=e,this._renderer.updateStyle()}getWidth(){return this._wrapping?this._wrappingWidth:this._renderer.getWidth()}getHeight(){return this._renderer.getHeight()}getScaleMean(){return(Math.abs(this._scaleX)+Math.abs(this._scaleY))/2}getScale(){const e=Math.abs(this._scaleX),r=Math.abs(this._scaleY);return e===r?e:Math.sqrt(e*r)}getScaleX(){return this._scaleX}getScaleY(){return this._scaleY}setScale(e){this._scaleX===e&&this._scaleY===e||(this._scaleX=e,this._scaleY=e,this._renderer.setScale(e),this.invalidateHitboxes())}setScaleX(e){this._scaleX!==e&&(this._scaleX=e,this._renderer.setScaleX(e),this.invalidateHitboxes())}setScaleY(e){this._scaleY!==e&&(this._scaleY=e,this._renderer.setScaleY(e),this.invalidateHitboxes())}setColor(e){this._color=s.rgbOrHexToRGBColor(e),this._useGradient=!1,this._renderer.updateStyle()}getColor(){return this._color[0]+";"+this._color[1]+";"+this._color[2]}setVerticalTextAlignment(e){this._verticalTextAlignment=e,this._renderer.updateStyle()}getVerticalTextAlignment(){return this._verticalTextAlignment}setTextAlignment(e){this._textAlign=e,this._renderer.updateStyle()}getTextAlignment(){return this._textAlign}isWrapping(){return this._wrapping}setWrapping(e){this._wrapping!==e&&(this._wrapping=e,this._renderer.updateStyle(),this.invalidateHitboxes())}getWrappingWidth(){return this._wrappingWidth}setWrappingWidth(e){e<=1&&(e=1),this._wrappingWidth!==e&&(this._wrappingWidth=e,this._wrapping&&(this._renderer.updateStyle(),this.invalidateHitboxes()))}setWidth(e){this.setWrappingWidth(e)}getDrawableY(){return this.getY()-(this._verticalTextAlignment==="center"?this.getHeight()/2:this._verticalTextAlignment==="bottom"?this.getHeight():0)}setOutline(e,r){this._outlineColor=s.rgbOrHexToRGBColor(e),this._outlineThickness=r,this._renderer.updateStyle()}isOutlineEnabled(){return this._isOutlineEnabled}setOutlineEnabled(e){this._isOutlineEnabled=e,this._renderer.updateStyle()}getOutlineThickness(){return this._outlineThickness}setOutlineThickness(e){this._outlineThickness=e,this._renderer.updateStyle()}setOutlineColor(e){this._outlineColor=s.rgbOrHexToRGBColor(e),this._renderer.updateStyle()}setShadow(e,r,t,i){this._shadowColor=s.rgbOrHexToRGBColor(e),this._shadowDistance=r,this._shadowBlur=t,this._shadowAngle=i,this._shadow=!0,this._renderer.updateStyle()}isShadowEnabled(){return this._shadow}showShadow(e){this._shadow=e,this._renderer.updateStyle()}getShadowOpacity(){return this._shadowOpacity}setShadowOpacity(e){this._shadowOpacity=e,this._renderer.updateStyle()}getShadowDistance(){return this._shadowDistance}setShadowDistance(e){this._shadowDistance=e,this._renderer.updateStyle()}getShadowAngle(){return this._shadowAngle}setShadowAngle(e){this._shadowAngle=e,this._renderer.updateStyle()}getShadowBlurRadius(){return this._shadowBlur}setShadowBlurRadius(e){this._shadowBlur=e,this._renderer.updateStyle()}setShadowColor(e){this._shadowColor=s.rgbOrHexToRGBColor(e),this._renderer.updateStyle()}setGradient(e,r,t,i,o){this._gradient=[],r&&this._gradient.push(s.rgbOrHexToRGBColor(r)),t&&this._gradient.push(s.rgbOrHexToRGBColor(t)),i&&this._gradient.push(s.rgbOrHexToRGBColor(i)),o&&this._gradient.push(s.rgbOrHexToRGBColor(o)),this._gradientType=e,this._useGradient=this._gradient.length>1,this._renderer.updateStyle()}getPadding(){return this._padding}setPadding(e){this._padding=e,this._renderer.updateStyle()}}s.TextRuntimeObject=n,s.registerObject("TextObject::Text",s.TextRuntimeObject)})(gdjs||(gdjs={}));
|
|
2
2
|
//# sourceMappingURL=textruntimeobject.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../GDevelop/Extensions/TextObject/textruntimeobject.ts"],
|
|
4
|
-
"sourcesContent": ["/*\n * GDevelop JS Platform\n * 2013-2016 Florian Rival (Florian.Rival@gmail.com)\n */\nnamespace gdjs {\n /** Base parameters for gdjs.TextRuntimeObject */\n export type TextObjectDataType = {\n content: {\n /** The size of the characters */\n characterSize: number;\n /** The font name */\n font: string;\n /** Is Bold? */\n bold: boolean;\n /** Is Italic? */\n italic: boolean;\n /** Is Underlined? */\n underlined: boolean;\n /** The text color in an RGB representation */\n color: string;\n /** The text of the object */\n text: string;\n textAlignment: string;\n verticalTextAlignment: string;\n /** The line height */\n lineHeight: float;\n\n isOutlineEnabled: boolean;\n outlineThickness: float;\n /** The outline color in an RGB representation */\n outlineColor: string;\n isShadowEnabled: boolean;\n /** The shadow color in an RGB representation */\n shadowColor: string;\n shadowOpacity: float;\n shadowDistance: float;\n shadowAngle: float;\n shadowBlurRadius: float;\n };\n };\n\n export type TextObjectData = ObjectData & TextObjectDataType;\n\n export type TextObjectNetworkSyncDataType = {\n str: string;\n o: float;\n cs: number;\n fn: string;\n b: boolean;\n i: boolean;\n u: boolean;\n c: number[];\n scale: number;\n ta: string;\n wrap: boolean;\n wrapw: float;\n oena: boolean;\n ot: float;\n oc: number[];\n sh: boolean;\n shc: number[];\n sho: float;\n shd: float;\n sha: float;\n shb: float;\n pad: integer;\n lh: float;\n };\n\n export type TextObjectNetworkSyncData = ObjectNetworkSyncData &\n TextObjectNetworkSyncDataType;\n\n /**\n * Displays a text.\n */\n export class TextRuntimeObject\n extends gdjs.RuntimeObject\n implements gdjs.TextContainer, gdjs.OpacityHandler\n {\n _characterSize: number;\n _fontName: string;\n _bold: boolean;\n _italic: boolean;\n _underlined: boolean;\n _color: integer[];\n _useGradient: boolean = false;\n _gradient: Array<Array<integer>> = [];\n _gradientType: string = '';\n opacity: float = 255;\n _textAlign: string;\n _verticalTextAlignment: string;\n _wrapping: boolean = false;\n // A wrapping of 1 makes games crash on Firefox\n _wrappingWidth: float = 100;\n\n _isOutlineEnabled: boolean;\n _outlineThickness: float;\n _outlineColor: integer[];\n\n _shadow: boolean;\n _shadowColor: integer[];\n _shadowOpacity: float;\n _shadowDistance: float;\n _shadowAngle: float;\n _shadowBlur: float;\n\n _lineHeight: float;\n\n _padding: integer = 5;\n _str: string;\n _renderer: gdjs.TextRuntimeObjectRenderer;\n\n // We can store the scale as nothing else can change it.\n _scaleX: number = 1;\n _scaleY: number = 1;\n\n /**\n * @param instanceContainer The container the object belongs to.\n * @param textObjectData The initial properties of the object\n */\n constructor(\n instanceContainer: gdjs.RuntimeInstanceContainer,\n textObjectData: TextObjectData\n ) {\n super(instanceContainer, textObjectData);\n const content = textObjectData.content;\n this._characterSize = Math.max(1, content.characterSize);\n this._fontName = content.font;\n this._bold = content.bold;\n this._italic = content.italic;\n this._underlined = content.underlined;\n this._color = gdjs.rgbOrHexToRGBColor(content.color);\n this._str = content.text;\n this._textAlign = content.textAlignment || 'left';\n this._verticalTextAlignment = content.verticalTextAlignment || 'top';\n\n this._isOutlineEnabled = content.isOutlineEnabled;\n this._outlineThickness = content.outlineThickness;\n this._outlineColor = gdjs.rgbOrHexToRGBColor(content.outlineColor);\n\n this._shadow = content.isShadowEnabled;\n this._shadowColor = gdjs.rgbOrHexToRGBColor(content.shadowColor);\n this._shadowOpacity = content.shadowOpacity;\n this._shadowDistance = content.shadowDistance;\n this._shadowBlur = content.shadowBlurRadius;\n this._shadowAngle = content.shadowAngle;\n this._lineHeight = content.lineHeight || 0;\n\n this._renderer = new gdjs.TextRuntimeObjectRenderer(\n this,\n instanceContainer\n );\n\n // *ALWAYS* call `this.onCreated()` at the very end of your object constructor.\n this.onCreated();\n }\n\n override updateFromObjectData(\n oldObjectData: TextObjectData,\n newObjectData: TextObjectData\n ): boolean {\n const oldContent = oldObjectData.content;\n const newContent = newObjectData.content;\n if (oldContent.characterSize !== newContent.characterSize) {\n this.setCharacterSize(newContent.characterSize);\n }\n if (oldContent.font !== newContent.font) {\n this.setFontName(newContent.font);\n }\n if (oldContent.bold !== newContent.bold) {\n this.setBold(newContent.bold);\n }\n if (oldContent.italic !== newContent.italic) {\n this.setItalic(newContent.italic);\n }\n if (oldContent.color !== newContent.color) {\n this.setColor(newContent.color);\n }\n if (oldContent.text !== newContent.text) {\n this.setText(newContent.text);\n }\n if (oldContent.underlined !== newContent.underlined) {\n return false;\n }\n if (oldContent.textAlignment !== newContent.textAlignment) {\n this.setTextAlignment(newContent.textAlignment);\n }\n if (\n oldContent.verticalTextAlignment !== newContent.verticalTextAlignment\n ) {\n this.setVerticalTextAlignment(newContent.verticalTextAlignment);\n }\n if (oldContent.isOutlineEnabled !== newContent.isOutlineEnabled) {\n this.setOutlineEnabled(newContent.isOutlineEnabled);\n }\n if (oldContent.outlineThickness !== newContent.outlineThickness) {\n this.setOutlineThickness(newContent.outlineThickness);\n }\n if (oldContent.outlineColor !== newContent.outlineColor) {\n this.setOutlineColor(newContent.outlineColor);\n }\n if (oldContent.isShadowEnabled !== newContent.isShadowEnabled) {\n this.showShadow(newContent.isShadowEnabled);\n }\n if (oldContent.shadowColor !== newContent.shadowColor) {\n this.setShadowColor(newContent.shadowColor);\n }\n if (oldContent.shadowOpacity !== newContent.shadowOpacity) {\n this.setShadowOpacity(newContent.shadowOpacity);\n }\n if (oldContent.shadowDistance !== newContent.shadowDistance) {\n this.setShadowDistance(newContent.shadowDistance);\n }\n if (oldContent.shadowAngle !== newContent.shadowAngle) {\n this.setShadowAngle(newContent.shadowAngle);\n }\n if (oldContent.shadowBlurRadius !== newContent.shadowBlurRadius) {\n this.setShadowBlurRadius(newContent.shadowBlurRadius);\n }\n if ((oldContent.lineHeight || 0) !== (newContent.lineHeight || 0)) {\n this.setLineHeight(newContent.lineHeight || 0);\n }\n return true;\n }\n\n override getNetworkSyncData(): TextObjectNetworkSyncData {\n return {\n ...super.getNetworkSyncData(),\n str: this._str,\n o: this.opacity,\n cs: this._characterSize,\n fn: this._fontName,\n b: this._bold,\n i: this._italic,\n u: this._underlined,\n c: this._color,\n scale: this.getScale(),\n ta: this._textAlign,\n wrap: this._wrapping,\n wrapw: this._wrappingWidth,\n oena: this._isOutlineEnabled,\n ot: this._outlineThickness,\n oc: this._outlineColor,\n sh: this._shadow,\n shc: this._shadowColor,\n sho: this._shadowOpacity,\n shd: this._shadowDistance,\n sha: this._shadowAngle,\n shb: this._shadowBlur,\n lh: this._lineHeight,\n pad: this._padding,\n };\n }\n\n override updateFromNetworkSyncData(\n networkSyncData: TextObjectNetworkSyncData\n ): void {\n super.updateFromNetworkSyncData(networkSyncData);\n if (networkSyncData.str !== undefined) {\n this.setText(networkSyncData.str);\n }\n if (networkSyncData.o !== undefined) {\n this.setOpacity(networkSyncData.o);\n }\n if (networkSyncData.cs !== undefined) {\n this.setCharacterSize(networkSyncData.cs);\n }\n if (networkSyncData.fn !== undefined) {\n this.setFontName(networkSyncData.fn);\n }\n if (networkSyncData.b !== undefined) {\n this.setBold(networkSyncData.b);\n }\n if (networkSyncData.i !== undefined) {\n this.setItalic(networkSyncData.i);\n }\n if (networkSyncData.u !== undefined) {\n this._underlined = networkSyncData.u;\n }\n if (networkSyncData.c !== undefined) {\n this._color = networkSyncData.c;\n }\n if (networkSyncData.scale !== undefined) {\n this.setScale(networkSyncData.scale);\n }\n if (networkSyncData.ta !== undefined) {\n this.setTextAlignment(networkSyncData.ta);\n }\n if (networkSyncData.ta !== undefined) {\n this.setVerticalTextAlignment(networkSyncData.ta);\n }\n if (networkSyncData.wrap !== undefined) {\n this.setWrapping(networkSyncData.wrap);\n }\n if (networkSyncData.wrapw !== undefined) {\n this.setWrappingWidth(networkSyncData.wrapw);\n }\n if (networkSyncData.oena !== undefined) {\n this.setOutlineEnabled(networkSyncData.oena);\n }\n if (networkSyncData.ot !== undefined) {\n this.setOutlineThickness(networkSyncData.ot);\n }\n if (networkSyncData.oc !== undefined) {\n this._outlineColor = networkSyncData.oc;\n }\n if (networkSyncData.sh !== undefined) {\n this.showShadow(networkSyncData.sh);\n }\n if (networkSyncData.shc !== undefined) {\n this._shadowColor = networkSyncData.shc;\n }\n if (networkSyncData.sho !== undefined) {\n this.setShadowOpacity(networkSyncData.sho);\n }\n if (networkSyncData.shd !== undefined) {\n this.setShadowDistance(networkSyncData.shd);\n }\n if (networkSyncData.sha !== undefined) {\n this.setShadowAngle(networkSyncData.sha);\n }\n if (networkSyncData.shb !== undefined) {\n this.setShadowBlurRadius(networkSyncData.shb);\n }\n if (networkSyncData.lh !== undefined) {\n this.setLineHeight(networkSyncData.lh);\n }\n if (networkSyncData.pad !== undefined) {\n this.setPadding(networkSyncData.pad);\n }\n }\n\n override getRendererObject() {\n return this._renderer.getRendererObject();\n }\n\n override update(instanceContainer: gdjs.RuntimeInstanceContainer): void {\n this._renderer.ensureUpToDate();\n }\n\n override onDestroyed(): void {\n super.onDestroyed();\n this._renderer.destroy();\n }\n\n override extraInitializationFromInitialInstance(\n initialInstanceData: InstanceData\n ) {\n if (initialInstanceData.customSize) {\n this.setWrappingWidth(initialInstanceData.width);\n this.setWrapping(true);\n } else {\n this.setWrapping(false);\n }\n if (initialInstanceData.opacity !== undefined) {\n this.setOpacity(initialInstanceData.opacity);\n }\n }\n\n /**\n * Update the rendered object position.\n */\n private _updateTextPosition() {\n this.invalidateHitboxes();\n this._renderer.updatePosition();\n }\n\n override setX(x: float): void {\n super.setX(x);\n this._updateTextPosition();\n }\n\n override setY(y: float): void {\n super.setY(y);\n this._updateTextPosition();\n }\n\n override setAngle(angle: float): void {\n super.setAngle(angle);\n this._renderer.updateAngle();\n }\n\n /**\n * Set object opacity.\n */\n setOpacity(opacity: float): void {\n if (opacity < 0) {\n opacity = 0;\n }\n if (opacity > 255) {\n opacity = 255;\n }\n this.opacity = opacity;\n this._renderer.updateOpacity();\n }\n\n /**\n * Get object opacity.\n */\n getOpacity() {\n return this.opacity;\n }\n\n /**\n * Get the string displayed by the object.\n * @deprecated use `getText` instead\n */\n getString(): string {\n return this.getText();\n }\n\n /**\n * Set the string displayed by the object.\n * @param text The new text\n * @deprecated use `setText` instead\n */\n setString(text: string): void {\n this.setText(text);\n }\n\n /**\n * Get the string displayed by the object.\n */\n getText(): string {\n return this._str;\n }\n\n /**\n * Set the string displayed by the object.\n * @param text The new text\n */\n setText(text: string): void {\n if (text === this._str) {\n return;\n }\n this._str = text;\n this._renderer.updateString();\n this._updateTextPosition();\n }\n\n /**\n * Get the font size of the characters of the object.\n */\n getCharacterSize(): number {\n return this._characterSize;\n }\n\n /**\n * Set the font size for characters of the object.\n * @param newSize The new font size for the text.\n */\n setCharacterSize(newSize: number): void {\n if (newSize <= 1) {\n newSize = 1;\n }\n this._characterSize = newSize;\n this._renderer.updateStyle();\n }\n\n /**\n * Get the line height of the text.\n */\n getLineHeight(): float {\n return this._lineHeight;\n }\n\n /**\n * Set the line height of the text.\n * @param value The new line height for the text.\n */\n setLineHeight(value: float): void {\n this._lineHeight = value;\n this._renderer.updateStyle();\n }\n\n /**\n * Set the name of the resource to use for the font.\n * @param fontResourceName The name of the font resource.\n */\n setFontName(fontResourceName: string): void {\n this._fontName = fontResourceName;\n this._renderer.updateStyle();\n }\n\n /**\n * Return true if the text is bold.\n */\n isBold(): boolean {\n return this._bold;\n }\n\n /**\n * Set bold for the object text.\n * @param enable {boolean} true to have a bold text, false otherwise.\n */\n setBold(enable: boolean): void {\n this._bold = enable;\n this._renderer.updateStyle();\n }\n\n /**\n * Return true if the text is italic.\n */\n isItalic(): boolean {\n return this._italic;\n }\n\n /**\n * Set italic for the object text.\n * @param enable {boolean} true to have an italic text, false otherwise.\n */\n setItalic(enable: boolean): void {\n this._italic = enable;\n this._renderer.updateStyle();\n }\n\n /**\n * Get width of the text.\n */\n override getWidth(): float {\n return this._wrapping ? this._wrappingWidth : this._renderer.getWidth();\n }\n\n /**\n * Get height of the text.\n */\n override getHeight(): float {\n return this._renderer.getHeight();\n }\n\n /**\n * Get the scale of the object (or the arithmetic mean of the X and Y scale in case they are different).\n *\n * @return the scale of the object (or the arithmetic mean of the X and Y scale in case they are different).\n * @deprecated Use `getScale` instead.\n */\n getScaleMean(): float {\n return (Math.abs(this._scaleX) + Math.abs(this._scaleY)) / 2.0;\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 /**\n * Get x-scale of the text.\n */\n getScaleX(): float {\n return this._scaleX;\n }\n\n /**\n * Get y-scale of the text.\n */\n getScaleY(): float {\n return this._scaleY;\n }\n\n /**\n * Set the text object scale.\n * @param newScale The new scale for the text object.\n */\n setScale(newScale: float): void {\n if (this._scaleX === newScale && this._scaleY === newScale) return;\n\n this._scaleX = newScale;\n this._scaleY = newScale;\n this._renderer.setScale(newScale);\n this.invalidateHitboxes();\n }\n\n /**\n * Set the text object x-scale.\n * @param newScale The new x-scale for the text object.\n */\n setScaleX(newScale: float): void {\n if (this._scaleX === newScale) return;\n\n this._scaleX = newScale;\n this._renderer.setScaleX(newScale);\n this.invalidateHitboxes();\n }\n\n /**\n * Set the text object y-scale.\n * @param newScale The new y-scale for the text object.\n */\n setScaleY(newScale: float): void {\n if (this._scaleY === newScale) return;\n\n this._scaleY = newScale;\n this._renderer.setScaleY(newScale);\n this.invalidateHitboxes();\n }\n\n /**\n * Change the text color.\n * @param rgbOrHexColor color as a \"R;G;B\" string, for example: \"255;0;0\"\n */\n setColor(rgbOrHexColor: string): void {\n this._color = gdjs.rgbOrHexToRGBColor(rgbOrHexColor);\n this._useGradient = false;\n this._renderer.updateStyle();\n }\n\n /**\n * Get the text color.\n * @return The color as a \"R;G;B\" string, for example: \"255;0;0\"\n */\n getColor(): string {\n return this._color[0] + ';' + this._color[1] + ';' + this._color[2];\n }\n\n /**\n * Set the text alignment on Y axis for multiline text objects.\n * @param alignment The text alignment.\n */\n setVerticalTextAlignment(alignment: string): void {\n this._verticalTextAlignment = alignment;\n this._renderer.updateStyle();\n }\n\n /**\n * Get the text alignment on Y axis of text object.\n * @return The text alignment.\n */\n getVerticalTextAlignment(): string {\n return this._verticalTextAlignment;\n }\n\n /**\n * Set the text alignment for multiline text objects.\n * @param alignment The text alignment.\n */\n setTextAlignment(alignment: string): void {\n this._textAlign = alignment;\n this._renderer.updateStyle();\n }\n\n /**\n * Get the text alignment of text object.\n * @return The text alignment.\n */\n getTextAlignment(): string {\n return this._textAlign;\n }\n\n /**\n * Return true if word wrapping is enabled for the text.\n */\n isWrapping(): boolean {\n return this._wrapping;\n }\n\n /**\n * Set word wrapping for the object text.\n * @param enable true to enable word wrapping, false to disable it.\n */\n setWrapping(enable: boolean): void {\n if (this._wrapping === enable) return;\n\n this._wrapping = enable;\n this._renderer.updateStyle();\n this.invalidateHitboxes();\n }\n\n /**\n * Get the word wrapping width for the text object.\n */\n getWrappingWidth(): float {\n return this._wrappingWidth;\n }\n\n /**\n * Set the word wrapping width for the text object.\n * @param width The new width to set.\n */\n setWrappingWidth(width: float): void {\n if (width <= 1) {\n width = 1;\n }\n if (this._wrappingWidth === width) {\n return;\n }\n this._wrappingWidth = width;\n\n if (this._wrapping) {\n this._renderer.updateStyle();\n this.invalidateHitboxes();\n }\n }\n\n override setWidth(width: float): void {\n this.setWrappingWidth(width);\n }\n\n override getDrawableY(): float {\n return (\n this.getY() -\n (this._verticalTextAlignment === 'center'\n ? this.getHeight() / 2\n : this._verticalTextAlignment === 'bottom'\n ? this.getHeight()\n : 0)\n );\n }\n\n /**\n * Set the outline for the text object.\n * @param rgbOrHexColor color as a \"R;G;B\" string, for example: \"255;0;0\"\n * @param thickness thickness of the outline (0 = disabled)\n * @deprecated Prefer independent setters.\n */\n setOutline(rgbOrHexColor: string, thickness: number): void {\n this._outlineColor = gdjs.rgbOrHexToRGBColor(rgbOrHexColor);\n this._outlineThickness = thickness;\n this._renderer.updateStyle();\n }\n\n isOutlineEnabled(): boolean {\n return this._isOutlineEnabled;\n }\n\n setOutlineEnabled(enable: boolean): void {\n this._isOutlineEnabled = enable;\n this._renderer.updateStyle();\n }\n\n /**\n * Get the outline thickness of the text object.\n * @return the outline thickness\n */\n getOutlineThickness(): number {\n return this._outlineThickness;\n }\n\n /**\n * Set the outline thickness of the text object.\n * @param value the outline thickness\n */\n setOutlineThickness(value: float): void {\n this._outlineThickness = value;\n this._renderer.updateStyle();\n }\n\n /**\n * Set the shadow color of the text object.\n * @param color the shadow color as a \"R;G;B\" string, for example: \"255;0;0\"\n */\n setOutlineColor(color: string): void {\n this._outlineColor = gdjs.rgbOrHexToRGBColor(color);\n this._renderer.updateStyle();\n }\n\n /**\n * Set the shadow for the text object.\n * @param rgbOrHexColor color as a \"R;G;B\" string, for example: \"255;0;0\"\n * @param distance distance between the shadow and the text, in pixels.\n * @param blur amount of shadow blur, in pixels.\n * @param angle shadow offset direction, in degrees.\n * @deprecated Prefer independent setters.\n */\n setShadow(\n rgbOrHexColor: string,\n distance: number,\n blur: integer,\n angle: float\n ): void {\n this._shadowColor = gdjs.rgbOrHexToRGBColor(rgbOrHexColor);\n this._shadowDistance = distance;\n this._shadowBlur = blur;\n this._shadowAngle = angle;\n this._shadow = true;\n this._renderer.updateStyle();\n }\n\n isShadowEnabled(): boolean {\n return this._shadow;\n }\n\n /**\n * Show the shadow of the text object.\n * @param enable true to show the shadow, false to hide it\n */\n showShadow(enable: boolean): void {\n this._shadow = enable;\n this._renderer.updateStyle();\n }\n\n /**\n * Get the shadow opacity of the text object.\n * @return the opacity (0 - 255)\n */\n getShadowOpacity(): number {\n return this._shadowOpacity;\n }\n\n /**\n * Set the shadow opacity of the text object.\n * @param value the opacity (0 - 255)\n */\n setShadowOpacity(value: float): void {\n this._shadowOpacity = value;\n this._renderer.updateStyle();\n }\n\n /**\n * Get the shadow offset distance of the text object.\n * @return the shadow offset distance\n */\n getShadowDistance(): number {\n return this._shadowDistance;\n }\n\n /**\n * Set the shadow offset distance of the text object.\n * @param value the shadow offset distance\n */\n setShadowDistance(value: float): void {\n this._shadowDistance = value;\n this._renderer.updateStyle();\n }\n\n /**\n * Get the shadow offset angle of the text object.\n * @return the shadow offset angle in degrees\n */\n getShadowAngle(): number {\n return this._shadowAngle;\n }\n\n /**\n * Set the shadow offset angle of the text object.\n * @param value the shadow offset angle in degrees\n */\n setShadowAngle(value: float): void {\n this._shadowAngle = value;\n this._renderer.updateStyle();\n }\n\n /**\n * Get the shadow blur radius of the text object.\n * @return the shadow blur radius\n */\n getShadowBlurRadius(): number {\n return this._shadowBlur;\n }\n\n /**\n * Set the shadow blur radius of the text object.\n * @param value the shadow blur radius\n */\n setShadowBlurRadius(value: float): void {\n this._shadowBlur = value;\n this._renderer.updateStyle();\n }\n\n /**\n * Set the shadow color of the text object.\n * @param color the shadow color as a \"R;G;B\" string, for example: \"255;0;0\"\n */\n setShadowColor(color: string): void {\n this._shadowColor = gdjs.rgbOrHexToRGBColor(color);\n this._renderer.updateStyle();\n }\n\n /**\n * Set the gradient for the text object.\n * @param strFirstColor color as a \"R;G;B\" string, for example: \"255;0;0\"\n * @param strSecondColor color as a \"R;G;B\" string, for example: \"255;0;0\"\n * @param strThirdColor color as a \"R;G;B\" string, for example: \"255;0;0\"\n * @param strFourthColor color as a \"R;G;B\" string, for example: \"255;0;0\"\n * @param strGradientType gradient type\n */\n setGradient(\n strGradientType: string,\n strFirstColor: string,\n strSecondColor: string,\n strThirdColor: string,\n strFourthColor: string\n ): void {\n this._gradient = [];\n if (strFirstColor) {\n this._gradient.push(gdjs.rgbOrHexToRGBColor(strFirstColor));\n }\n if (strSecondColor) {\n this._gradient.push(gdjs.rgbOrHexToRGBColor(strSecondColor));\n }\n if (strThirdColor) {\n this._gradient.push(gdjs.rgbOrHexToRGBColor(strThirdColor));\n }\n if (strFourthColor) {\n this._gradient.push(gdjs.rgbOrHexToRGBColor(strFourthColor));\n }\n this._gradientType = strGradientType;\n this._useGradient = this._gradient.length > 1 ? true : false;\n this._renderer.updateStyle();\n }\n\n /**\n * Get padding of the text object.\n * @return number of pixels around the text before it gets cropped\n */\n getPadding(): number {\n return this._padding;\n }\n\n /**\n * Set padding of the text object.\n * @param value number of pixels around the text before it gets cropped\n */\n setPadding(value: float): void {\n this._padding = value;\n this._renderer.updateStyle();\n }\n }\n gdjs.registerObject('TextObject::Text', gdjs.TextRuntimeObject);\n}\n"],
|
|
5
|
-
"mappings": "AAIA,GAAU,MAAV,UAAU,EAAV,
|
|
4
|
+
"sourcesContent": ["/*\n * GDevelop JS Platform\n * 2013-2016 Florian Rival (Florian.Rival@gmail.com)\n */\nnamespace gdjs {\n /** Base parameters for gdjs.TextRuntimeObject */\n export type TextObjectDataType = {\n content: {\n /** The size of the characters */\n characterSize: number;\n /** The font name */\n font: string;\n /** Is Bold? */\n bold: boolean;\n /** Is Italic? */\n italic: boolean;\n /** Is Underlined? */\n underlined: boolean;\n /** The text color in an RGB representation */\n color: string;\n /** The text of the object */\n text: string;\n textAlignment: string;\n verticalTextAlignment: string;\n /** The line height */\n lineHeight: float;\n\n isOutlineEnabled: boolean;\n outlineThickness: float;\n /** The outline color in an RGB representation */\n outlineColor: string;\n isShadowEnabled: boolean;\n /** The shadow color in an RGB representation */\n shadowColor: string;\n shadowOpacity: float;\n shadowDistance: float;\n shadowAngle: float;\n shadowBlurRadius: float;\n };\n };\n\n export type TextObjectData = ObjectData & TextObjectDataType;\n\n export type TextObjectNetworkSyncDataType = {\n str: string;\n o: float;\n cs: number;\n fn: string;\n b: boolean;\n i: boolean;\n u: boolean;\n c: number[];\n scale: number;\n ta: string;\n vta: string;\n wrap: boolean;\n wrapw: float;\n oena: boolean;\n ot: float;\n oc: number[];\n sh: boolean;\n shc: number[];\n sho: float;\n shd: float;\n sha: float;\n shb: float;\n pad: integer;\n lh: float;\n };\n\n export type TextObjectNetworkSyncData = ObjectNetworkSyncData &\n TextObjectNetworkSyncDataType;\n\n /**\n * Displays a text.\n */\n export class TextRuntimeObject\n extends gdjs.RuntimeObject\n implements gdjs.TextContainer, gdjs.OpacityHandler\n {\n _characterSize: number;\n _fontName: string;\n _bold: boolean;\n _italic: boolean;\n _underlined: boolean;\n _color: integer[];\n _useGradient: boolean = false;\n _gradient: Array<Array<integer>> = [];\n _gradientType: string = '';\n opacity: float = 255;\n _textAlign: string;\n _verticalTextAlignment: string;\n _wrapping: boolean = false;\n // A wrapping of 1 makes games crash on Firefox\n _wrappingWidth: float = 100;\n\n _isOutlineEnabled: boolean;\n _outlineThickness: float;\n _outlineColor: integer[];\n\n _shadow: boolean;\n _shadowColor: integer[];\n _shadowOpacity: float;\n _shadowDistance: float;\n _shadowAngle: float;\n _shadowBlur: float;\n\n _lineHeight: float;\n\n _padding: integer = 5;\n _str: string;\n _renderer: gdjs.TextRuntimeObjectRenderer;\n\n // We can store the scale as nothing else can change it.\n _scaleX: number = 1;\n _scaleY: number = 1;\n\n /**\n * @param instanceContainer The container the object belongs to.\n * @param textObjectData The initial properties of the object\n */\n constructor(\n instanceContainer: gdjs.RuntimeInstanceContainer,\n textObjectData: TextObjectData\n ) {\n super(instanceContainer, textObjectData);\n const content = textObjectData.content;\n this._characterSize = Math.max(1, content.characterSize);\n this._fontName = content.font;\n this._bold = content.bold;\n this._italic = content.italic;\n this._underlined = content.underlined;\n this._color = gdjs.rgbOrHexToRGBColor(content.color);\n this._str = content.text;\n this._textAlign = content.textAlignment || 'left';\n this._verticalTextAlignment = content.verticalTextAlignment || 'top';\n\n this._isOutlineEnabled = content.isOutlineEnabled;\n this._outlineThickness = content.outlineThickness;\n this._outlineColor = gdjs.rgbOrHexToRGBColor(content.outlineColor);\n\n this._shadow = content.isShadowEnabled;\n this._shadowColor = gdjs.rgbOrHexToRGBColor(content.shadowColor);\n this._shadowOpacity = content.shadowOpacity;\n this._shadowDistance = content.shadowDistance;\n this._shadowBlur = content.shadowBlurRadius;\n this._shadowAngle = content.shadowAngle;\n this._lineHeight = content.lineHeight || 0;\n\n this._renderer = new gdjs.TextRuntimeObjectRenderer(\n this,\n instanceContainer\n );\n\n // *ALWAYS* call `this.onCreated()` at the very end of your object constructor.\n this.onCreated();\n }\n\n override updateFromObjectData(\n oldObjectData: TextObjectData,\n newObjectData: TextObjectData\n ): boolean {\n const oldContent = oldObjectData.content;\n const newContent = newObjectData.content;\n if (oldContent.characterSize !== newContent.characterSize) {\n this.setCharacterSize(newContent.characterSize);\n }\n if (oldContent.font !== newContent.font) {\n this.setFontName(newContent.font);\n }\n if (oldContent.bold !== newContent.bold) {\n this.setBold(newContent.bold);\n }\n if (oldContent.italic !== newContent.italic) {\n this.setItalic(newContent.italic);\n }\n if (oldContent.color !== newContent.color) {\n this.setColor(newContent.color);\n }\n if (oldContent.text !== newContent.text) {\n this.setText(newContent.text);\n }\n if (oldContent.textAlignment !== newContent.textAlignment) {\n this.setTextAlignment(newContent.textAlignment);\n }\n if (\n oldContent.verticalTextAlignment !== newContent.verticalTextAlignment\n ) {\n this.setVerticalTextAlignment(newContent.verticalTextAlignment);\n }\n if (oldContent.isOutlineEnabled !== newContent.isOutlineEnabled) {\n this.setOutlineEnabled(newContent.isOutlineEnabled);\n }\n if (oldContent.outlineThickness !== newContent.outlineThickness) {\n this.setOutlineThickness(newContent.outlineThickness);\n }\n if (oldContent.outlineColor !== newContent.outlineColor) {\n this.setOutlineColor(newContent.outlineColor);\n }\n if (oldContent.isShadowEnabled !== newContent.isShadowEnabled) {\n this.showShadow(newContent.isShadowEnabled);\n }\n if (oldContent.shadowColor !== newContent.shadowColor) {\n this.setShadowColor(newContent.shadowColor);\n }\n if (oldContent.shadowOpacity !== newContent.shadowOpacity) {\n this.setShadowOpacity(newContent.shadowOpacity);\n }\n if (oldContent.shadowDistance !== newContent.shadowDistance) {\n this.setShadowDistance(newContent.shadowDistance);\n }\n if (oldContent.shadowAngle !== newContent.shadowAngle) {\n this.setShadowAngle(newContent.shadowAngle);\n }\n if (oldContent.shadowBlurRadius !== newContent.shadowBlurRadius) {\n this.setShadowBlurRadius(newContent.shadowBlurRadius);\n }\n if ((oldContent.lineHeight || 0) !== (newContent.lineHeight || 0)) {\n this.setLineHeight(newContent.lineHeight || 0);\n }\n if (oldContent.underlined !== newContent.underlined) {\n return false;\n }\n\n return true;\n }\n\n override getNetworkSyncData(\n syncOptions: GetNetworkSyncDataOptions\n ): TextObjectNetworkSyncData {\n return {\n ...super.getNetworkSyncData(syncOptions),\n str: this._str,\n o: this.opacity,\n cs: this._characterSize,\n fn: this._fontName,\n b: this._bold,\n i: this._italic,\n u: this._underlined,\n c: this._color,\n scale: this.getScale(),\n ta: this._textAlign,\n vta: this._verticalTextAlignment,\n wrap: this._wrapping,\n wrapw: this._wrappingWidth,\n oena: this._isOutlineEnabled,\n ot: this._outlineThickness,\n oc: this._outlineColor,\n sh: this._shadow,\n shc: this._shadowColor,\n sho: this._shadowOpacity,\n shd: this._shadowDistance,\n sha: this._shadowAngle,\n shb: this._shadowBlur,\n lh: this._lineHeight,\n pad: this._padding,\n };\n }\n\n override updateFromNetworkSyncData(\n networkSyncData: TextObjectNetworkSyncData,\n options: UpdateFromNetworkSyncDataOptions\n ): void {\n super.updateFromNetworkSyncData(networkSyncData, options);\n if (networkSyncData.str !== undefined) {\n this.setText(networkSyncData.str);\n }\n if (networkSyncData.o !== undefined) {\n this.setOpacity(networkSyncData.o);\n }\n if (networkSyncData.cs !== undefined) {\n this.setCharacterSize(networkSyncData.cs);\n }\n if (networkSyncData.fn !== undefined) {\n this.setFontName(networkSyncData.fn);\n }\n if (networkSyncData.b !== undefined) {\n this.setBold(networkSyncData.b);\n }\n if (networkSyncData.i !== undefined) {\n this.setItalic(networkSyncData.i);\n }\n if (networkSyncData.u !== undefined) {\n this._underlined = networkSyncData.u;\n }\n if (networkSyncData.c !== undefined) {\n this._color = networkSyncData.c;\n }\n if (networkSyncData.scale !== undefined) {\n this.setScale(networkSyncData.scale);\n }\n if (networkSyncData.ta !== undefined) {\n this.setTextAlignment(networkSyncData.ta);\n }\n if (networkSyncData.vta !== undefined) {\n this.setVerticalTextAlignment(networkSyncData.vta);\n }\n if (networkSyncData.wrap !== undefined) {\n this.setWrapping(networkSyncData.wrap);\n }\n if (networkSyncData.wrapw !== undefined) {\n this.setWrappingWidth(networkSyncData.wrapw);\n }\n if (networkSyncData.oena !== undefined) {\n this.setOutlineEnabled(networkSyncData.oena);\n }\n if (networkSyncData.ot !== undefined) {\n this.setOutlineThickness(networkSyncData.ot);\n }\n if (networkSyncData.oc !== undefined) {\n this._outlineColor = networkSyncData.oc;\n }\n if (networkSyncData.sh !== undefined) {\n this.showShadow(networkSyncData.sh);\n }\n if (networkSyncData.shc !== undefined) {\n this._shadowColor = networkSyncData.shc;\n }\n if (networkSyncData.sho !== undefined) {\n this.setShadowOpacity(networkSyncData.sho);\n }\n if (networkSyncData.shd !== undefined) {\n this.setShadowDistance(networkSyncData.shd);\n }\n if (networkSyncData.sha !== undefined) {\n this.setShadowAngle(networkSyncData.sha);\n }\n if (networkSyncData.shb !== undefined) {\n this.setShadowBlurRadius(networkSyncData.shb);\n }\n if (networkSyncData.lh !== undefined) {\n this.setLineHeight(networkSyncData.lh);\n }\n if (networkSyncData.pad !== undefined) {\n this.setPadding(networkSyncData.pad);\n }\n }\n\n override getRendererObject() {\n return this._renderer.getRendererObject();\n }\n\n override update(instanceContainer: gdjs.RuntimeInstanceContainer): void {\n this._renderer.ensureUpToDate();\n }\n\n override onDestroyed(): void {\n super.onDestroyed();\n this._renderer.destroy();\n }\n\n override extraInitializationFromInitialInstance(\n initialInstanceData: InstanceData\n ) {\n if (initialInstanceData.customSize) {\n this.setWrappingWidth(initialInstanceData.width);\n this.setWrapping(true);\n } else {\n this.setWrapping(false);\n }\n if (initialInstanceData.opacity !== undefined) {\n this.setOpacity(initialInstanceData.opacity);\n }\n }\n\n /**\n * Update the rendered object position.\n */\n private _updateTextPosition() {\n this.invalidateHitboxes();\n this._renderer.updatePosition();\n }\n\n override setX(x: float): void {\n super.setX(x);\n this._updateTextPosition();\n }\n\n override setY(y: float): void {\n super.setY(y);\n this._updateTextPosition();\n }\n\n override setAngle(angle: float): void {\n super.setAngle(angle);\n this._renderer.updateAngle();\n }\n\n /**\n * Set object opacity.\n */\n setOpacity(opacity: float): void {\n if (opacity < 0) {\n opacity = 0;\n }\n if (opacity > 255) {\n opacity = 255;\n }\n this.opacity = opacity;\n this._renderer.updateOpacity();\n }\n\n /**\n * Get object opacity.\n */\n getOpacity() {\n return this.opacity;\n }\n\n /**\n * Get the string displayed by the object.\n * @deprecated use `getText` instead\n */\n getString(): string {\n return this.getText();\n }\n\n /**\n * Set the string displayed by the object.\n * @param text The new text\n * @deprecated use `setText` instead\n */\n setString(text: string): void {\n this.setText(text);\n }\n\n /**\n * Get the string displayed by the object.\n */\n getText(): string {\n return this._str;\n }\n\n /**\n * Set the string displayed by the object.\n * @param text The new text\n */\n setText(text: string): void {\n if (text === this._str) {\n return;\n }\n this._str = text;\n this._renderer.updateString();\n this._updateTextPosition();\n }\n\n /**\n * Get the font size of the characters of the object.\n */\n getCharacterSize(): number {\n return this._characterSize;\n }\n\n /**\n * Set the font size for characters of the object.\n * @param newSize The new font size for the text.\n */\n setCharacterSize(newSize: number): void {\n if (newSize <= 1) {\n newSize = 1;\n }\n this._characterSize = newSize;\n this._renderer.updateStyle();\n }\n\n /**\n * Get the line height of the text.\n */\n getLineHeight(): float {\n return this._lineHeight;\n }\n\n /**\n * Set the line height of the text.\n * @param value The new line height for the text.\n */\n setLineHeight(value: float): void {\n this._lineHeight = value;\n this._renderer.updateStyle();\n }\n\n /**\n * Set the name of the resource to use for the font.\n * @param fontResourceName The name of the font resource.\n */\n setFontName(fontResourceName: string): void {\n this._fontName = fontResourceName;\n this._renderer.updateStyle();\n }\n\n /**\n * Return true if the text is bold.\n */\n isBold(): boolean {\n return this._bold;\n }\n\n /**\n * Set bold for the object text.\n * @param enable {boolean} true to have a bold text, false otherwise.\n */\n setBold(enable: boolean): void {\n this._bold = enable;\n this._renderer.updateStyle();\n }\n\n /**\n * Return true if the text is italic.\n */\n isItalic(): boolean {\n return this._italic;\n }\n\n /**\n * Set italic for the object text.\n * @param enable {boolean} true to have an italic text, false otherwise.\n */\n setItalic(enable: boolean): void {\n this._italic = enable;\n this._renderer.updateStyle();\n }\n\n /**\n * Get width of the text.\n */\n override getWidth(): float {\n return this._wrapping ? this._wrappingWidth : this._renderer.getWidth();\n }\n\n /**\n * Get height of the text.\n */\n override getHeight(): float {\n return this._renderer.getHeight();\n }\n\n /**\n * Get the scale of the object (or the arithmetic mean of the X and Y scale in case they are different).\n *\n * @return the scale of the object (or the arithmetic mean of the X and Y scale in case they are different).\n * @deprecated Use `getScale` instead.\n */\n getScaleMean(): float {\n return (Math.abs(this._scaleX) + Math.abs(this._scaleY)) / 2.0;\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 /**\n * Get x-scale of the text.\n */\n getScaleX(): float {\n return this._scaleX;\n }\n\n /**\n * Get y-scale of the text.\n */\n getScaleY(): float {\n return this._scaleY;\n }\n\n /**\n * Set the text object scale.\n * @param newScale The new scale for the text object.\n */\n setScale(newScale: float): void {\n if (this._scaleX === newScale && this._scaleY === newScale) return;\n\n this._scaleX = newScale;\n this._scaleY = newScale;\n this._renderer.setScale(newScale);\n this.invalidateHitboxes();\n }\n\n /**\n * Set the text object x-scale.\n * @param newScale The new x-scale for the text object.\n */\n setScaleX(newScale: float): void {\n if (this._scaleX === newScale) return;\n\n this._scaleX = newScale;\n this._renderer.setScaleX(newScale);\n this.invalidateHitboxes();\n }\n\n /**\n * Set the text object y-scale.\n * @param newScale The new y-scale for the text object.\n */\n setScaleY(newScale: float): void {\n if (this._scaleY === newScale) return;\n\n this._scaleY = newScale;\n this._renderer.setScaleY(newScale);\n this.invalidateHitboxes();\n }\n\n /**\n * Change the text color.\n * @param rgbOrHexColor color as a \"R;G;B\" string, for example: \"255;0;0\"\n */\n setColor(rgbOrHexColor: string): void {\n this._color = gdjs.rgbOrHexToRGBColor(rgbOrHexColor);\n this._useGradient = false;\n this._renderer.updateStyle();\n }\n\n /**\n * Get the text color.\n * @return The color as a \"R;G;B\" string, for example: \"255;0;0\"\n */\n getColor(): string {\n return this._color[0] + ';' + this._color[1] + ';' + this._color[2];\n }\n\n /**\n * Set the text alignment on Y axis for multiline text objects.\n * @param alignment The text alignment.\n */\n setVerticalTextAlignment(alignment: string): void {\n this._verticalTextAlignment = alignment;\n this._renderer.updateStyle();\n }\n\n /**\n * Get the text alignment on Y axis of text object.\n * @return The text alignment.\n */\n getVerticalTextAlignment(): string {\n return this._verticalTextAlignment;\n }\n\n /**\n * Set the text alignment for multiline text objects.\n * @param alignment The text alignment.\n */\n setTextAlignment(alignment: string): void {\n this._textAlign = alignment;\n this._renderer.updateStyle();\n }\n\n /**\n * Get the text alignment of text object.\n * @return The text alignment.\n */\n getTextAlignment(): string {\n return this._textAlign;\n }\n\n /**\n * Return true if word wrapping is enabled for the text.\n */\n isWrapping(): boolean {\n return this._wrapping;\n }\n\n /**\n * Set word wrapping for the object text.\n * @param enable true to enable word wrapping, false to disable it.\n */\n setWrapping(enable: boolean): void {\n if (this._wrapping === enable) return;\n\n this._wrapping = enable;\n this._renderer.updateStyle();\n this.invalidateHitboxes();\n }\n\n /**\n * Get the word wrapping width for the text object.\n */\n getWrappingWidth(): float {\n return this._wrappingWidth;\n }\n\n /**\n * Set the word wrapping width for the text object.\n * @param width The new width to set.\n */\n setWrappingWidth(width: float): void {\n if (width <= 1) {\n width = 1;\n }\n if (this._wrappingWidth === width) {\n return;\n }\n this._wrappingWidth = width;\n\n if (this._wrapping) {\n this._renderer.updateStyle();\n this.invalidateHitboxes();\n }\n }\n\n override setWidth(width: float): void {\n this.setWrappingWidth(width);\n }\n\n override getDrawableY(): float {\n return (\n this.getY() -\n (this._verticalTextAlignment === 'center'\n ? this.getHeight() / 2\n : this._verticalTextAlignment === 'bottom'\n ? this.getHeight()\n : 0)\n );\n }\n\n /**\n * Set the outline for the text object.\n * @param rgbOrHexColor color as a \"R;G;B\" string, for example: \"255;0;0\"\n * @param thickness thickness of the outline (0 = disabled)\n * @deprecated Prefer independent setters.\n */\n setOutline(rgbOrHexColor: string, thickness: number): void {\n this._outlineColor = gdjs.rgbOrHexToRGBColor(rgbOrHexColor);\n this._outlineThickness = thickness;\n this._renderer.updateStyle();\n }\n\n isOutlineEnabled(): boolean {\n return this._isOutlineEnabled;\n }\n\n setOutlineEnabled(enable: boolean): void {\n this._isOutlineEnabled = enable;\n this._renderer.updateStyle();\n }\n\n /**\n * Get the outline thickness of the text object.\n * @return the outline thickness\n */\n getOutlineThickness(): number {\n return this._outlineThickness;\n }\n\n /**\n * Set the outline thickness of the text object.\n * @param value the outline thickness\n */\n setOutlineThickness(value: float): void {\n this._outlineThickness = value;\n this._renderer.updateStyle();\n }\n\n /**\n * Set the shadow color of the text object.\n * @param color the shadow color as a \"R;G;B\" string, for example: \"255;0;0\"\n */\n setOutlineColor(color: string): void {\n this._outlineColor = gdjs.rgbOrHexToRGBColor(color);\n this._renderer.updateStyle();\n }\n\n /**\n * Set the shadow for the text object.\n * @param rgbOrHexColor color as a \"R;G;B\" string, for example: \"255;0;0\"\n * @param distance distance between the shadow and the text, in pixels.\n * @param blur amount of shadow blur, in pixels.\n * @param angle shadow offset direction, in degrees.\n * @deprecated Prefer independent setters.\n */\n setShadow(\n rgbOrHexColor: string,\n distance: number,\n blur: integer,\n angle: float\n ): void {\n this._shadowColor = gdjs.rgbOrHexToRGBColor(rgbOrHexColor);\n this._shadowDistance = distance;\n this._shadowBlur = blur;\n this._shadowAngle = angle;\n this._shadow = true;\n this._renderer.updateStyle();\n }\n\n isShadowEnabled(): boolean {\n return this._shadow;\n }\n\n /**\n * Show the shadow of the text object.\n * @param enable true to show the shadow, false to hide it\n */\n showShadow(enable: boolean): void {\n this._shadow = enable;\n this._renderer.updateStyle();\n }\n\n /**\n * Get the shadow opacity of the text object.\n * @return the opacity (0 - 255)\n */\n getShadowOpacity(): number {\n return this._shadowOpacity;\n }\n\n /**\n * Set the shadow opacity of the text object.\n * @param value the opacity (0 - 255)\n */\n setShadowOpacity(value: float): void {\n this._shadowOpacity = value;\n this._renderer.updateStyle();\n }\n\n /**\n * Get the shadow offset distance of the text object.\n * @return the shadow offset distance\n */\n getShadowDistance(): number {\n return this._shadowDistance;\n }\n\n /**\n * Set the shadow offset distance of the text object.\n * @param value the shadow offset distance\n */\n setShadowDistance(value: float): void {\n this._shadowDistance = value;\n this._renderer.updateStyle();\n }\n\n /**\n * Get the shadow offset angle of the text object.\n * @return the shadow offset angle in degrees\n */\n getShadowAngle(): number {\n return this._shadowAngle;\n }\n\n /**\n * Set the shadow offset angle of the text object.\n * @param value the shadow offset angle in degrees\n */\n setShadowAngle(value: float): void {\n this._shadowAngle = value;\n this._renderer.updateStyle();\n }\n\n /**\n * Get the shadow blur radius of the text object.\n * @return the shadow blur radius\n */\n getShadowBlurRadius(): number {\n return this._shadowBlur;\n }\n\n /**\n * Set the shadow blur radius of the text object.\n * @param value the shadow blur radius\n */\n setShadowBlurRadius(value: float): void {\n this._shadowBlur = value;\n this._renderer.updateStyle();\n }\n\n /**\n * Set the shadow color of the text object.\n * @param color the shadow color as a \"R;G;B\" string, for example: \"255;0;0\"\n */\n setShadowColor(color: string): void {\n this._shadowColor = gdjs.rgbOrHexToRGBColor(color);\n this._renderer.updateStyle();\n }\n\n /**\n * Set the gradient for the text object.\n * @param strFirstColor color as a \"R;G;B\" string, for example: \"255;0;0\"\n * @param strSecondColor color as a \"R;G;B\" string, for example: \"255;0;0\"\n * @param strThirdColor color as a \"R;G;B\" string, for example: \"255;0;0\"\n * @param strFourthColor color as a \"R;G;B\" string, for example: \"255;0;0\"\n * @param strGradientType gradient type\n */\n setGradient(\n strGradientType: string,\n strFirstColor: string,\n strSecondColor: string,\n strThirdColor: string,\n strFourthColor: string\n ): void {\n this._gradient = [];\n if (strFirstColor) {\n this._gradient.push(gdjs.rgbOrHexToRGBColor(strFirstColor));\n }\n if (strSecondColor) {\n this._gradient.push(gdjs.rgbOrHexToRGBColor(strSecondColor));\n }\n if (strThirdColor) {\n this._gradient.push(gdjs.rgbOrHexToRGBColor(strThirdColor));\n }\n if (strFourthColor) {\n this._gradient.push(gdjs.rgbOrHexToRGBColor(strFourthColor));\n }\n this._gradientType = strGradientType;\n this._useGradient = this._gradient.length > 1 ? true : false;\n this._renderer.updateStyle();\n }\n\n /**\n * Get padding of the text object.\n * @return number of pixels around the text before it gets cropped\n */\n getPadding(): number {\n return this._padding;\n }\n\n /**\n * Set padding of the text object.\n * @param value number of pixels around the text before it gets cropped\n */\n setPadding(value: float): void {\n this._padding = value;\n this._renderer.updateStyle();\n }\n }\n gdjs.registerObject('TextObject::Text', gdjs.TextRuntimeObject);\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
* A tile map model.
|
|
10
10
|
*
|
|
11
11
|
* Tile map files are parsed into this model by {@link TiledTileMapLoader} or {@link LDtkTileMapLoader}.
|
|
12
|
-
* This model is used for
|
|
12
|
+
* This model is used for rendering ({@link TileMapRuntimeObjectPixiRenderer})
|
|
13
13
|
* and hitboxes handling ({@link TransformedCollisionTileMap}).
|
|
14
14
|
* This allows to support new file format with only a new parser.
|
|
15
15
|
*/
|
|
@@ -71,7 +71,7 @@ export declare class EditableTileMap {
|
|
|
71
71
|
tileSetRowCount: number;
|
|
72
72
|
}
|
|
73
73
|
): EditableTileMap;
|
|
74
|
-
toJSObject():
|
|
74
|
+
toJSObject(): EditableTileMapAsJsObject;
|
|
75
75
|
/**
|
|
76
76
|
* @returns The tile map width in pixels.
|
|
77
77
|
*/
|
|
@@ -205,7 +205,7 @@ declare abstract class AbstractEditableLayer {
|
|
|
205
205
|
*/
|
|
206
206
|
constructor(tileMap: EditableTileMap, id: integer);
|
|
207
207
|
setVisible(visible: boolean): void;
|
|
208
|
-
toJSObject():
|
|
208
|
+
toJSObject(): EditableTileMapLayerAsJsObject;
|
|
209
209
|
/**
|
|
210
210
|
* @returns true if the layer is visible.
|
|
211
211
|
*/
|
|
@@ -284,7 +284,7 @@ export declare class EditableTileMapLayer extends AbstractEditableLayer {
|
|
|
284
284
|
tileMap: EditableTileMap,
|
|
285
285
|
isTileIdValid: (tileId: number) => boolean
|
|
286
286
|
): EditableTileMapLayer;
|
|
287
|
-
toJSObject():
|
|
287
|
+
toJSObject(): EditableTileMapLayerAsJsObject;
|
|
288
288
|
/**
|
|
289
289
|
* The opacity (between 0-1) of the layer
|
|
290
290
|
*/
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var gdjs;(function(a){const s=class extends a.RuntimeObject{constructor(e,t){super(e,t);this._opacity=255;this._displayMode="all";this._layerIndex=0;this._isTileMapDirty=!1;this._sceneToTileMapTransformation=new a.AffineTransformation;this._tileMapToSceneTransformation=new a.AffineTransformation;this._collisionTileMap=null;this._hitBoxTag="collision";this._transformationIsUpToDate=!1;this._opacity=t.content.opacity,this._atlasImage=t.content.atlasImage,this._rowCount=t.content.rowCount,this._columnCount=t.content.columnCount,this._tileSize=t.content.tileSize,this._initialTileMapAsJsObject={tileWidth:this._tileSize,tileHeight:this._tileSize,dimX:1,dimY:1,layers:[{id:0,alpha:this._opacity/255,tiles:[]}]},this._initialTilesWithHitBox=t.content.tilesWithHitBox.split(",").filter(i=>!!i).map(i=>parseInt(i,10)),this._tileMapManager=a.TileMap.TileMapRuntimeManager.getManager(e),this._renderer=new a.TileMapRuntimeObjectRenderer(this,e),this._loadInitialTileMap(i=>{this._renderer.updatePosition(),this._collisionTileMap=new a.TileMap.TransformedCollisionTileMap(i,this._hitBoxTag),this.updateTransformation()}),this.onCreated()}getRendererObject(){return this._renderer.getRendererObject()}updatePreRender(e){if(this._isTileMapDirty){let t=!0;if(this._tileMapManager.getOrLoadSimpleTileMapTextureCache(i=>this.getInstanceContainer().getGame().getImageManager().getPIXITexture(i),this._atlasImage,this._tileSize,this._columnCount,this._rowCount,i=>{!i||this._renderer.refreshPixiTileMap(i)},i=>{t=!1,console.error(`Could not load texture cache for atlas ${this._atlasImage} during prerender. The tilemap might be badly configured or an issues happened with the loaded atlas image:`,i)}),!t)return;if(this._collisionTileMap){const i=this._renderer.getTileMap();i&&this._collisionTileMap.updateFromTileMap(i)}this._isTileMapDirty=!1}}updateFromObjectData(e,t){return e.content.opacity!==t.content.opacity&&this.setOpacity(t.content.opacity),e.content.atlasImage===t.content.atlasImage}getNetworkSyncData(){return{...super.getNetworkSyncData(),op:this._opacity,ai:this._atlasImage}}updateFromNetworkSyncData(e){super.updateFromNetworkSyncData(e),e.op!==void 0&&e.op!==this._opacity&&this.setOpacity(e.op),e.ai!==void 0}extraInitializationFromInitialInstance(e){for(const t of e.stringProperties)t.name==="tilemap"&&(this._initialTileMapAsJsObject=JSON.parse(t.value));this._loadInitialTileMap(t=>{e.customSize&&(this.setWidth(e.width),this.setHeight(e.height)),e.opacity!==void 0&&this.setOpacity(e.opacity),this._renderer.updatePosition(),this._collisionTileMap?this._collisionTileMap.updateFromTileMap(t):this._collisionTileMap=new a.TileMap.TransformedCollisionTileMap(t,this._hitBoxTag),this.updateTransformation()})}_loadInitialTileMap(e){if(!!this._initialTileMapAsJsObject){if(this._columnCount<=0||this._rowCount<=0){console.error(`Tilemap object ${this.name} is not configured properly.`);return}this._tileMapManager.getOrLoadSimpleTileMap(this._initialTileMapAsJsObject,this.name,this._tileSize,this._columnCount,this._rowCount,t=>{this._initialTilesWithHitBox.forEach(i=>{const o=t.getTileDefinition(i);if(!o){console.warn(`Could not set hit box for tile with id ${i}. Continuing.`);return}o.addHitBox(this._hitBoxTag,[[0,0],[0,t.getTileHeight()],[t.getTileWidth(),t.getTileHeight()],[t.getTileWidth(),0]],!0)}),this._tileMapManager.getOrLoadSimpleTileMapTextureCache(i=>this.getInstanceContainer().getGame().getImageManager().getPIXITexture(i),this._atlasImage,this._tileSize,this._columnCount,this._rowCount,i=>{!i||(this._renderer.updatePixiTileMap(t,i),e(t))},i=>{console.error(`Could not load texture cache for atlas ${this._atlasImage} during initial loading. The tilemap might be badly configured or an issues happened with the loaded atlas image:`,i)})})}}onDestroyed(){super.onDestroyed(),this._renderer.destroy()}setWidth(e){this.getWidth()!==e&&(this._transformationIsUpToDate=!1,this._renderer.setWidth(e),this.invalidateHitboxes())}setHeight(e){this.getHeight()!==e&&(this._transformationIsUpToDate=!1,this._renderer.setHeight(e),this.invalidateHitboxes())}setSize(e,t){this.setWidth(e),this.setHeight(t),this._transformationIsUpToDate=!1}getScale(){const e=this.getScaleX(),t=this.getScaleY();return e===t?e:Math.sqrt(e*t)}setScale(e){this.setScaleX(e),this.setScaleY(e),this._transformationIsUpToDate=!1}setScaleX(e){e<0&&(e=0),this.getScaleX()!==e&&(this._renderer.setScaleX(e),this.invalidateHitboxes(),this._transformationIsUpToDate=!1)}setScaleY(e){e<0&&(e=0),this.getScaleY()!==e&&(this._renderer.setScaleY(e),this.invalidateHitboxes(),this._transformationIsUpToDate=!1)}setX(e){super.setX(e),this._renderer.updatePosition(),this._transformationIsUpToDate=!1}setY(e){super.setY(e),this._renderer.updatePosition(),this._transformationIsUpToDate=!1}setAngle(e){super.setAngle(e),this._renderer.updateAngle(),this._transformationIsUpToDate=!1}setOpacity(e){this._opacity=e,this._renderer.updateOpacity(),this._isTileMapDirty=!0}getOpacity(){return this._opacity}getWidth(){return this._renderer.getWidth()}getHeight(){return this._renderer.getHeight()}getScaleX(){return this._renderer.getScaleX()}getScaleY(){return this._renderer.getScaleY()}getHitBoxes(){return this.hitBoxesDirty&&(this.updateHitBoxes(),this.updateAABB(),this.hitBoxesDirty=!1),this.hitBoxes}updateHitBoxes(){this.updateTransformation(),!!this._collisionTileMap&&(this.hitBoxes=Array.from(this._collisionTileMap.getAllHitboxes(this._hitBoxTag)),this.hitBoxesDirty=!1,this.updateAABB())}updateAABB(){if(this.getAngle()===0)this.aabb.min[0]=this.x,this.aabb.min[1]=this.y,this.aabb.max[0]=this.aabb.min[0]+this.getWidth(),this.aabb.max[1]=this.aabb.min[1]+this.getHeight();else{if(!this._collisionTileMap)return;const e=this._collisionTileMap.getTransformation(),t=0,i=this._collisionTileMap.getWidth(),o=0,r=this._collisionTileMap.getHeight(),n=this.aabb.min;n[0]=t,n[1]=o,e.transform(n,n);const l=n[0],h=n[1];n[0]=i,n[1]=o,e.transform(n,n);const d=n[0],p=n[1];n[0]=i,n[1]=r,e.transform(n,n);const g=n[0],c=n[1];n[0]=t,n[1]=r,e.transform(n,n);const f=n[0],u=n[1];this.aabb.min[0]=Math.min(l,d,g,f),this.aabb.max[0]=Math.max(l,d,g,f),this.aabb.min[1]=Math.min(h,p,c,u),this.aabb.max[1]=Math.max(h,p,c,u)}}getHitBoxesAround(e,t,i,o){return this.updateTransformation(),this._collisionTileMap?this._collisionTileMap.getHitboxesAround(this._hitBoxTag,e,t,i,o):[]}updateTransformation(){if(this._transformationIsUpToDate)return;const e=Math.abs(this._renderer.getScaleX()),t=Math.abs(this._renderer.getScaleY());this._tileMapToSceneTransformation.setToIdentity(),this._tileMapToSceneTransformation.translate(this.getX(),this.getY());const i=this.getAngle()*Math.PI/180;if(this._tileMapToSceneTransformation.rotateAround(i,this.getCenterX(),this.getCenterY()),this._tileMapToSceneTransformation.scale(e,t),this._collisionTileMap){const o=this._collisionTileMap.getTransformation();o.copyFrom(this._tileMapToSceneTransformation),this._collisionTileMap.setTransformation(o)}this._sceneToTileMapTransformation.copyFrom(this._tileMapToSceneTransformation),this._sceneToTileMapTransformation.invert(),this._transformationIsUpToDate=!0}getSceneXCoordinateOfTileCenter(e,t){const i=s.workingPoint;return this._tileMapToSceneTransformation.transform([(e+.5)*this._tileSize,(t+.5)*this._tileSize],i),i[0]}getSceneYCoordinateOfTileCenter(e,t){const i=s.workingPoint;return this._tileMapToSceneTransformation.transform([(e+.5)*this._tileSize,(t+.5)*this._tileSize],i),i[1]}getGridCoordinatesFromSceneCoordinates(e,t){this.updateTransformation();const i=s.workingPoint;this._sceneToTileMapTransformation.transform([e,t],i);const o=Math.floor(i[0]/this._tileSize),r=Math.floor(i[1]/this._tileSize);return[o,r]}getColumnIndexAtPosition(e,t){return this.getGridCoordinatesFromSceneCoordinates(e,t)[0]}getRowIndexAtPosition(e,t){return this.getGridCoordinatesFromSceneCoordinates(e,t)[1]}getTileAtPosition(e,t){const[i,o]=this.getGridCoordinatesFromSceneCoordinates(e,t);return this.getTileAtGridCoordinates(i,o)}getTileAtGridCoordinates(e,t){return this._renderer.getTileId(e,t,0)}setTileAtPosition(e,t,i){const[o,r]=this.getGridCoordinatesFromSceneCoordinates(t,i);this.setTileAtGridCoordinates(e,o,r)}setTileAtGridCoordinates(e,t,i){const o=this._renderer._tileMap;if(!o)return;const r=o.getTileLayer(this._layerIndex);if(!r)return;const n=r.getTileId(t,i);if(e!==n){if(r.setTile(t,i,e),this._collisionTileMap){const l=n!==void 0&&o.getTileDefinition(n),h=o.getTileDefinition(e),d=!!l&&l.hasFullHitBox(this._hitBoxTag),p=!!h&&h.hasFullHitBox(this._hitBoxTag);d!==p&&this._collisionTileMap.invalidateTile(this._layerIndex,t,i)}this._isTileMapDirty=!0,this.invalidateHitboxes()}}flipTileOnYAtPosition(e,t,i){const[o,r]=this.getGridCoordinatesFromSceneCoordinates(e,t);this.flipTileOnYAtGridCoordinates(o,r,i)}flipTileOnXAtPosition(e,t,i){const[o,r]=this.getGridCoordinatesFromSceneCoordinates(e,t);this.flipTileOnXAtGridCoordinates(o,r,i)}flipTileOnYAtGridCoordinates(e,t,i){this._renderer.flipTileOnY(e,t,0,i),this._isTileMapDirty=!0}flipTileOnXAtGridCoordinates(e,t,i){this._renderer.flipTileOnX(e,t,0,i),this._isTileMapDirty=!0}isTileFlippedOnXAtPosition(e,t){const[i,o]=this.getGridCoordinatesFromSceneCoordinates(e,t);return this._renderer.isTileFlippedOnX(i,o,0)}isTileFlippedOnXAtGridCoordinates(e,t){return this._renderer.isTileFlippedOnX(e,t,0)}isTileFlippedOnYAtPosition(e,t){const[i,o]=this.getGridCoordinatesFromSceneCoordinates(e,t);return this._renderer.isTileFlippedOnY(i,o,0)}isTileFlippedOnYAtGridCoordinates(e,t){return this._renderer.isTileFlippedOnY(e,t,0)}removeTileAtPosition(e,t){const[i,o]=this.getGridCoordinatesFromSceneCoordinates(e,t);this.removeTileAtGridCoordinates(i,o)}removeTileAtGridCoordinates(e,t){const i=this._renderer._tileMap;if(!i)return;const o=i.getTileLayer(this._layerIndex);!o||o.getTileId(e,t)===void 0||(o.removeTile(e,t),this._collisionTileMap&&this._collisionTileMap.invalidateTile(this._layerIndex,e,t),this._isTileMapDirty=!0,this.invalidateHitboxes())}setGridRowCount(e){e<=0||(this._renderer.setGridRowCount(e),this._isTileMapDirty=!0,this.invalidateHitboxes())}setGridColumnCount(e){e<=0||(this._renderer.setGridColumnCount(e),this._isTileMapDirty=!0,this.invalidateHitboxes())}getGridRowCount(){return this._renderer.getGridRowCount()}getGridColumnCount(){return this._renderer.getGridColumnCount()}getTilesetColumnCount(){return this._columnCount}getTilesetRowCount(){return this._rowCount}};let T=s;T.workingPoint=[0,0],a.SimpleTileMapRuntimeObject=T,a.registerObject("TileMap::SimpleTileMap",a.SimpleTileMapRuntimeObject)})(gdjs||(gdjs={}));
|
|
1
|
+
var gdjs;(function(s){const r=class extends s.RuntimeObject{constructor(e,t){super(e,t);this._opacity=255;this._tileMap=null;this._displayMode="all";this._layerIndex=0;this._isTileMapDirty=!1;this._sceneToTileMapTransformation=new s.AffineTransformation;this._tileMapToSceneTransformation=new s.AffineTransformation;this._collisionTileMap=null;this._hitBoxTag="collision";this._transformationIsUpToDate=!1;this._atlasImage=t.content.atlasImage,this._rowCount=t.content.rowCount,this._columnCount=t.content.columnCount,this._tileSize=t.content.tileSize,this._initialTileMapAsJsObject={tileWidth:this._tileSize,tileHeight:this._tileSize,dimX:1,dimY:1,layers:[{id:0,alpha:this._opacity/255,tiles:[]}]},this._initialTilesWithHitBox=t.content.tilesWithHitBox.split(",").filter(i=>!!i).map(i=>parseInt(i,10)),this._tileMapManager=s.TileMap.TileMapRuntimeManager.getManager(e),this._renderer=new s.TileMapRuntimeObjectRenderer(this,e),this._loadTileMap(this._initialTileMapAsJsObject,i=>{this._renderer.updatePosition(),this._collisionTileMap=new s.TileMap.TransformedCollisionTileMap(i,this._hitBoxTag),this.updateTransformation()}),this.onCreated()}getRendererObject(){return this._renderer.getRendererObject()}updatePreRender(e){if(this._isTileMapDirty){let t=!0;if(this._tileMapManager.getOrLoadSimpleTileMapTextureCache(i=>this.getInstanceContainer().getGame().getImageManager().getPIXITexture(i),this._atlasImage,this._tileSize,this._columnCount,this._rowCount,i=>{!i||this._renderer.refreshPixiTileMap(i)},i=>{t=!1,console.error(`Could not load texture cache for atlas ${this._atlasImage} during prerender. The tilemap might be badly configured or an issues happened with the loaded atlas image:`,i)}),!t)return;this._collisionTileMap&&this._tileMap&&this._collisionTileMap.updateFromTileMap(this._tileMap),this._isTileMapDirty=!1}}updateFromObjectData(e,t){return e.content.atlasImage===t.content.atlasImage}getNetworkSyncData(e){const t={...super.getNetworkSyncData(e),op:this._opacity};if(this._tileMap&&e.syncFullTileMaps){const i=this._tileMap.toJSObject();t.tm=i}return t}updateFromNetworkSyncData(e,t){super.updateFromNetworkSyncData(e,t),e.tm!==void 0&&this._loadTileMap(e.tm,i=>{e.w!==void 0&&this.setWidth(e.w),e.h!==void 0&&this.setHeight(e.h),e.op!==void 0&&this.setOpacity(e.op),this._renderer.updatePosition(),this._collisionTileMap?this._collisionTileMap.updateFromTileMap(i):this._collisionTileMap=new s.TileMap.TransformedCollisionTileMap(i,this._hitBoxTag),this.updateTransformation()})}extraInitializationFromInitialInstance(e){for(const t of e.stringProperties)t.name==="tilemap"&&(this._initialTileMapAsJsObject=JSON.parse(t.value));this._loadTileMap(this._initialTileMapAsJsObject,t=>{e.customSize&&(this.setWidth(e.width),this.setHeight(e.height)),e.opacity!==void 0&&this.setOpacity(e.opacity),this._renderer.updatePosition(),this._collisionTileMap?this._collisionTileMap.updateFromTileMap(t):this._collisionTileMap=new s.TileMap.TransformedCollisionTileMap(t,this._hitBoxTag),this.updateTransformation()})}_loadTileMap(e,t){if(this._columnCount<=0||this._rowCount<=0){console.error(`Tilemap object ${this.name} is not configured properly.`);return}this._tileMapManager.getOrLoadSimpleTileMap(e,this.name,this._tileSize,this._columnCount,this._rowCount,i=>{this._initialTilesWithHitBox.forEach(n=>{const a=i.getTileDefinition(n);if(!a){console.warn(`Could not set hit box for tile with id ${n}. Continuing.`);return}a.addHitBox(this._hitBoxTag,[[0,0],[0,i.getTileHeight()],[i.getTileWidth(),i.getTileHeight()],[i.getTileWidth(),0]],!0)}),this._tileMapManager.getOrLoadSimpleTileMapTextureCache(n=>this.getInstanceContainer().getGame().getImageManager().getPIXITexture(n),this._atlasImage,this._tileSize,this._columnCount,this._rowCount,n=>{!n||(this._tileMap=i,this._renderer.refreshPixiTileMap(n),t(i))},n=>{console.error(`Could not load texture cache for atlas ${this._atlasImage} during initial loading. The tilemap might be badly configured or an issues happened with the loaded atlas image:`,n)})})}onDestroyed(){super.onDestroyed(),this._renderer.destroy()}setWidth(e){this.getWidth()!==e&&(this._transformationIsUpToDate=!1,this._renderer.setWidth(e),this.invalidateHitboxes())}setHeight(e){this.getHeight()!==e&&(this._transformationIsUpToDate=!1,this._renderer.setHeight(e),this.invalidateHitboxes())}setSize(e,t){this.setWidth(e),this.setHeight(t),this._transformationIsUpToDate=!1}getScale(){const e=this.getScaleX(),t=this.getScaleY();return e===t?e:Math.sqrt(e*t)}setScale(e){this.setScaleX(e),this.setScaleY(e),this._transformationIsUpToDate=!1}setScaleX(e){e<0&&(e=0),this.getScaleX()!==e&&(this._renderer.setScaleX(e),this.invalidateHitboxes(),this._transformationIsUpToDate=!1)}setScaleY(e){e<0&&(e=0),this.getScaleY()!==e&&(this._renderer.setScaleY(e),this.invalidateHitboxes(),this._transformationIsUpToDate=!1)}setX(e){super.setX(e),this._renderer.updatePosition(),this._transformationIsUpToDate=!1}setY(e){super.setY(e),this._renderer.updatePosition(),this._transformationIsUpToDate=!1}setAngle(e){super.setAngle(e),this._renderer.updateAngle(),this._transformationIsUpToDate=!1}setOpacity(e){this._opacity=e,this._renderer.updateOpacity(),this._isTileMapDirty=!0}getOpacity(){return this._opacity}getWidth(){return this._renderer.getWidth()}getHeight(){return this._renderer.getHeight()}getScaleX(){return this._renderer.getScaleX()}getScaleY(){return this._renderer.getScaleY()}getHitBoxes(){return this.hitBoxesDirty&&(this.updateHitBoxes(),this.updateAABB(),this.hitBoxesDirty=!1),this.hitBoxes}updateHitBoxes(){this.updateTransformation(),!!this._collisionTileMap&&(this.hitBoxes=Array.from(this._collisionTileMap.getAllHitboxes(this._hitBoxTag)),this.hitBoxesDirty=!1,this.updateAABB())}updateAABB(){if(this.getAngle()===0)this.aabb.min[0]=this.x,this.aabb.min[1]=this.y,this.aabb.max[0]=this.aabb.min[0]+this.getWidth(),this.aabb.max[1]=this.aabb.min[1]+this.getHeight();else{if(!this._collisionTileMap)return;const e=this._collisionTileMap.getTransformation(),t=0,i=this._collisionTileMap.getWidth(),n=0,a=this._collisionTileMap.getHeight(),o=this.aabb.min;o[0]=t,o[1]=n,e.transform(o,o);const l=o[0],h=o[1];o[0]=i,o[1]=n,e.transform(o,o);const p=o[0],T=o[1];o[0]=i,o[1]=a,e.transform(o,o);const g=o[0],f=o[1];o[0]=t,o[1]=a,e.transform(o,o);const u=o[0],c=o[1];this.aabb.min[0]=Math.min(l,p,g,u),this.aabb.max[0]=Math.max(l,p,g,u),this.aabb.min[1]=Math.min(h,T,f,c),this.aabb.max[1]=Math.max(h,T,f,c)}}getHitBoxesAround(e,t,i,n){return this.updateTransformation(),this._collisionTileMap?this._collisionTileMap.getHitboxesAround(this._hitBoxTag,e,t,i,n):[]}updateTransformation(){if(this._transformationIsUpToDate)return;const e=Math.abs(this._renderer.getScaleX()),t=Math.abs(this._renderer.getScaleY());this._tileMapToSceneTransformation.setToIdentity(),this._tileMapToSceneTransformation.translate(this.getX(),this.getY());const i=this.getAngle()*Math.PI/180;if(this._tileMapToSceneTransformation.rotateAround(i,this.getCenterX(),this.getCenterY()),this._tileMapToSceneTransformation.scale(e,t),this._collisionTileMap){const n=this._collisionTileMap.getTransformation();n.copyFrom(this._tileMapToSceneTransformation),this._collisionTileMap.setTransformation(n)}this._sceneToTileMapTransformation.copyFrom(this._tileMapToSceneTransformation),this._sceneToTileMapTransformation.invert(),this._transformationIsUpToDate=!0}getSceneXCoordinateOfTileCenter(e,t){const i=r.workingPoint;return this._tileMapToSceneTransformation.transform([(e+.5)*this._tileSize,(t+.5)*this._tileSize],i),i[0]}getSceneYCoordinateOfTileCenter(e,t){const i=r.workingPoint;return this._tileMapToSceneTransformation.transform([(e+.5)*this._tileSize,(t+.5)*this._tileSize],i),i[1]}getGridCoordinatesFromSceneCoordinates(e,t){this.updateTransformation();const i=r.workingPoint;this._sceneToTileMapTransformation.transform([e,t],i);const n=Math.floor(i[0]/this._tileSize),a=Math.floor(i[1]/this._tileSize);return[n,a]}getColumnIndexAtPosition(e,t){return this.getGridCoordinatesFromSceneCoordinates(e,t)[0]}getRowIndexAtPosition(e,t){return this.getGridCoordinatesFromSceneCoordinates(e,t)[1]}getTileAtPosition(e,t){const[i,n]=this.getGridCoordinatesFromSceneCoordinates(e,t);return this.getTileAtGridCoordinates(i,n)}getTileAtGridCoordinates(e,t){return this.getTileId(e,t,0)}setTileAtPosition(e,t,i){const[n,a]=this.getGridCoordinatesFromSceneCoordinates(t,i);this.setTileAtGridCoordinates(e,n,a)}setTileAtGridCoordinates(e,t,i){if(!this._tileMap)return;const n=this._tileMap.getTileLayer(this._layerIndex);if(!n)return;const a=n.getTileId(t,i);if(e!==a){if(n.setTile(t,i,e),this._collisionTileMap){const o=a!==void 0&&this._tileMap.getTileDefinition(a),l=this._tileMap.getTileDefinition(e),h=!!o&&o.hasFullHitBox(this._hitBoxTag),p=!!l&&l.hasFullHitBox(this._hitBoxTag);h!==p&&this._collisionTileMap.invalidateTile(this._layerIndex,t,i)}this._isTileMapDirty=!0,this.invalidateHitboxes()}}flipTileOnYAtPosition(e,t,i){const[n,a]=this.getGridCoordinatesFromSceneCoordinates(e,t);this.flipTileOnYAtGridCoordinates(n,a,i)}flipTileOnXAtPosition(e,t,i){const[n,a]=this.getGridCoordinatesFromSceneCoordinates(e,t);this.flipTileOnXAtGridCoordinates(n,a,i)}flipTileOnYAtGridCoordinates(e,t,i){this.flipTileOnY(e,t,0,i),this._isTileMapDirty=!0}flipTileOnXAtGridCoordinates(e,t,i){this.flipTileOnX(e,t,0,i),this._isTileMapDirty=!0}isTileFlippedOnXAtPosition(e,t){const[i,n]=this.getGridCoordinatesFromSceneCoordinates(e,t);return this.isTileFlippedOnX(i,n,0)}isTileFlippedOnXAtGridCoordinates(e,t){return this.isTileFlippedOnX(e,t,0)}isTileFlippedOnYAtPosition(e,t){const[i,n]=this.getGridCoordinatesFromSceneCoordinates(e,t);return this.isTileFlippedOnY(i,n,0)}isTileFlippedOnYAtGridCoordinates(e,t){return this.isTileFlippedOnY(e,t,0)}removeTileAtPosition(e,t){const[i,n]=this.getGridCoordinatesFromSceneCoordinates(e,t);this.removeTileAtGridCoordinates(i,n)}removeTileAtGridCoordinates(e,t){if(!this._tileMap)return;const i=this._tileMap.getTileLayer(this._layerIndex);!i||i.getTileId(e,t)===void 0||(i.removeTile(e,t),this._collisionTileMap&&this._collisionTileMap.invalidateTile(this._layerIndex,e,t),this._isTileMapDirty=!0,this.invalidateHitboxes())}setGridRowCount(e){e<=0||!this._tileMap||(this._tileMap.setDimensionY(e),this._isTileMapDirty=!0,this.invalidateHitboxes())}setGridColumnCount(e){e<=0||!this._tileMap||(this._tileMap.setDimensionX(e),this._isTileMapDirty=!0,this.invalidateHitboxes())}getGridRowCount(){return this._tileMap?this._tileMap.getDimensionY():0}getGridColumnCount(){return this._tileMap?this._tileMap.getDimensionX():0}getTilesetColumnCount(){return this._columnCount}getTilesetRowCount(){return this._rowCount}getTileMap(){return this._tileMap}getTileMapWidth(){const e=this._tileMap;return e?e.getWidth():20}getTileMapHeight(){const e=this._tileMap;return e?e.getHeight():20}getTileId(e,t,i){return this._tileMap?this._tileMap.getTileId(e,t,i):-1}flipTileOnY(e,t,i,n){!this._tileMap||this._tileMap.flipTileOnY(e,t,i,n)}flipTileOnX(e,t,i,n){!this._tileMap||this._tileMap.flipTileOnX(e,t,i,n)}isTileFlippedOnX(e,t,i){return this._tileMap?this._tileMap.isTileFlippedOnX(e,t,i):!1}isTileFlippedOnY(e,t,i){return this._tileMap?this._tileMap.isTileFlippedOnY(e,t,i):!1}};let d=r;d.workingPoint=[0,0],s.SimpleTileMapRuntimeObject=d,s.registerObject("TileMap::SimpleTileMap",s.SimpleTileMapRuntimeObject)})(gdjs||(gdjs={}));
|
|
2
2
|
//# sourceMappingURL=simpletilemapruntimeobject.js.map
|