gdcore-tools 2.0.0-gd-v5.5.228-autobuild → 2.0.0-gd-v5.5.229-autobuild

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/dist/Runtime/CustomRuntimeObject.js +1 -1
  2. package/dist/Runtime/CustomRuntimeObject.js.map +2 -2
  3. package/dist/Runtime/CustomRuntimeObjectInstanceContainer.js.map +2 -2
  4. package/dist/Runtime/Extensions/AnchorBehavior/anchorruntimebehavior.js +1 -1
  5. package/dist/Runtime/Extensions/AnchorBehavior/anchorruntimebehavior.js.map +2 -2
  6. package/dist/Runtime/Extensions/BBText/JsExtension.js +102 -40
  7. package/dist/Runtime/Extensions/BBText/bbtextruntimeobject-pixi-renderer.js +1 -1
  8. package/dist/Runtime/Extensions/BBText/bbtextruntimeobject-pixi-renderer.js.map +2 -2
  9. package/dist/Runtime/Extensions/BBText/bbtextruntimeobject.js +1 -1
  10. package/dist/Runtime/Extensions/BBText/bbtextruntimeobject.js.map +2 -2
  11. package/dist/Runtime/Extensions/BitmapText/JsExtension.js +80 -38
  12. package/dist/Runtime/Extensions/BitmapText/bitmaptextruntimeobject-pixi-renderer.js +1 -1
  13. package/dist/Runtime/Extensions/BitmapText/bitmaptextruntimeobject-pixi-renderer.js.map +2 -2
  14. package/dist/Runtime/Extensions/BitmapText/bitmaptextruntimeobject.js +1 -1
  15. package/dist/Runtime/Extensions/BitmapText/bitmaptextruntimeobject.js.map +2 -2
  16. package/dist/Runtime/Extensions/JsExtensionTypes.d.ts +3 -1
  17. package/dist/Runtime/Extensions/Physics3DBehavior/JsExtension.js +17 -17
  18. package/dist/Runtime/Extensions/Physics3DBehavior/Physics3DRuntimeBehavior.js +1 -1
  19. package/dist/Runtime/Extensions/Physics3DBehavior/Physics3DRuntimeBehavior.js.map +2 -2
  20. package/dist/Runtime/Extensions/Physics3DBehavior/PhysicsCharacter3DRuntimeBehavior.js +1 -1
  21. package/dist/Runtime/Extensions/Physics3DBehavior/PhysicsCharacter3DRuntimeBehavior.js.map +2 -2
  22. package/dist/Runtime/Extensions/Spine/CMakeLists.txt +12 -9
  23. package/dist/Runtime/Extensions/TileMap/JsExtension.js +4 -2
  24. package/dist/Runtime/types/project-data.d.ts +11 -1
  25. package/dist/lib/libGD.cjs +1 -1
  26. package/dist/lib/libGD.wasm +0 -0
  27. package/gd.d.ts +49 -0
  28. package/package.json +1 -1
@@ -81,6 +81,19 @@ module.exports = {
81
81
  .setLabel(_('Base alignment'))
82
82
  .setGroup(_('Appearance'));
83
83
 
84
+ if (!objectContent.verticalTextAlignment) {
85
+ objectContent.verticalTextAlignment = 'top';
86
+ }
87
+ objectProperties
88
+ .getOrCreate('verticalTextAlignment')
89
+ .setValue(objectContent.verticalTextAlignment)
90
+ .setType('choice')
91
+ .addExtraInfo('top')
92
+ .addExtraInfo('center')
93
+ .addExtraInfo('bottom')
94
+ .setLabel(_('Vertical alignment'))
95
+ .setGroup(_('Appearance'));
96
+
84
97
  objectProperties
85
98
  .getOrCreate('fontFamily')
86
99
  .setValue(objectContent.fontFamily)
@@ -89,13 +102,6 @@ module.exports = {
89
102
  .setLabel(_('Font'))
90
103
  .setGroup(_('Font'));
91
104
 
92
- objectProperties
93
- .getOrCreate('wordWrap')
94
- .setValue(objectContent.wordWrap ? 'true' : 'false')
95
- .setType('boolean')
96
- .setLabel(_('Word wrapping'))
97
- .setGroup(_('Appearance'));
98
-
99
105
  objectProperties
100
106
  .getOrCreate('visible')
101
107
  .setValue(objectContent.visible ? 'true' : 'false')
@@ -113,7 +119,7 @@ module.exports = {
113
119
  color: '0;0;0',
114
120
  fontFamily: 'Arial',
115
121
  align: 'left',
116
- wordWrap: true,
122
+ verticalTextAlignment: 'top',
117
123
  };
118
124
 
119
125
  objectBBText.updateInitialInstanceProperty = function (
@@ -371,19 +377,6 @@ module.exports = {
371
377
  expressionLabel: _('Get the text alignment'),
372
378
  expressionDescription: _('Get the text alignment'),
373
379
  },
374
- {
375
- functionName: 'WordWrap',
376
- iconPath: 'res/actions/scaleWidth24_black.png',
377
- type: 'boolean',
378
- instructionLabel: _('Word wrap'),
379
- paramLabel: _('Word wrap'),
380
- conditionDescription: _('Check if word wrap is enabled.'),
381
- conditionSentence: _('Word wrap is enabled'),
382
- actionDescription: _('Set word wrap'),
383
- actionSentence: _('Activate word wrap for _PARAM0_: _PARAM1_'),
384
- expressionLabel: '',
385
- expressionDescription: '',
386
- },
387
380
  {
388
381
  functionName: 'WrappingWidth',
389
382
  iconPath: 'res/actions/scaleWidth24_black.png',
@@ -405,6 +398,35 @@ module.exports = {
405
398
 
406
399
  addSettersAndGettersToObject(object, setterAndGetterProperties, 'BBText');
407
400
 
401
+ object
402
+ .addCondition(
403
+ 'IsWordWrap',
404
+ _('Word wrapping'),
405
+ _('Check if word wrapping is enabled.'),
406
+ _('_PARAM0_ word wrapping is enabled'),
407
+ '',
408
+ 'res/conditions/wordWrap24_black.png',
409
+ 'res/conditions/wordWrap_black.png'
410
+ )
411
+ .addParameter('object', 'BBText', 'BBText', false)
412
+ .getCodeExtraInformation()
413
+ .setFunctionName('isWrapping');
414
+
415
+ object
416
+ .addAction(
417
+ 'SetWordWrap',
418
+ _('Word wrapping'),
419
+ _('De/activate word wrapping.'),
420
+ _('Activate word wrapping of _PARAM0_: _PARAM1_'),
421
+ '',
422
+ 'res/actions/wordWrap24_black.png',
423
+ 'res/actions/wordWrap_black.png'
424
+ )
425
+ .addParameter('object', 'BBText', 'BBText', false)
426
+ .addParameter('yesorno', _('Activate word wrapping'), '', false)
427
+ .getCodeExtraInformation()
428
+ .setFunctionName('setWrapping');
429
+
408
430
  object
409
431
  .addAction(
410
432
  `SetFontFamily2`,
@@ -485,14 +507,16 @@ module.exports = {
485
507
  instance,
486
508
  associatedObjectConfiguration,
487
509
  pixiContainer,
488
- pixiResourcesLoader
510
+ pixiResourcesLoader,
511
+ propertyOverridings
489
512
  ) {
490
513
  super(
491
514
  project,
492
515
  instance,
493
516
  associatedObjectConfiguration,
494
517
  pixiContainer,
495
- pixiResourcesLoader
518
+ pixiResourcesLoader,
519
+ propertyOverridings
496
520
  );
497
521
 
498
522
  const bbTextStyles = {
@@ -502,7 +526,6 @@ module.exports = {
502
526
  fontSize: '24px',
503
527
  fill: '#cccccc',
504
528
  tagStyle: 'bbcode',
505
- wordWrap: true,
506
529
  wordWrapWidth: 250, // This value is the default wrapping width of the runtime object.
507
530
  align: 'left',
508
531
  },
@@ -532,7 +555,9 @@ module.exports = {
532
555
  gd.ObjectJsImplementation
533
556
  );
534
557
 
535
- const rawText = object.content.text;
558
+ const rawText = this._propertyOverridings.has('Text')
559
+ ? this._propertyOverridings.get('Text')
560
+ : object.content.text;
536
561
  if (rawText !== this._pixiObject.text) {
537
562
  this._pixiObject.text = rawText;
538
563
  }
@@ -574,11 +599,18 @@ module.exports = {
574
599
  });
575
600
  }
576
601
 
577
- const wordWrap = object.content.wordWrap;
602
+ const wordWrap = this._instance.hasCustomSize();
578
603
  if (wordWrap !== this._pixiObject._style.wordWrap) {
579
604
  this._pixiObject._style.wordWrap = wordWrap;
580
605
  this._pixiObject.dirty = true;
581
606
  }
607
+ if (this._instance.hasCustomSize()) {
608
+ const customWidth = this.getCustomWidth();
609
+ if (this._pixiObject._style.wordWrapWidth !== customWidth) {
610
+ this._pixiObject._style.wordWrapWidth = customWidth;
611
+ this._pixiObject.dirty = true;
612
+ }
613
+ }
582
614
 
583
615
  const align = object.content.align;
584
616
  if (align !== this._pixiObject._style.align) {
@@ -586,25 +618,42 @@ module.exports = {
586
618
  this._pixiObject.dirty = true;
587
619
  }
588
620
 
589
- this._pixiObject.position.x =
590
- this._instance.getX() + this._pixiObject.width / 2;
621
+ if (this._instance.hasCustomSize()) {
622
+ const alignmentX =
623
+ object.content.align === 'right'
624
+ ? 1
625
+ : object.content.align === 'center'
626
+ ? 0.5
627
+ : 0;
628
+
629
+ const width = this.getCustomWidth();
630
+
631
+ // A vector from the custom size center to the renderer center.
632
+ const centerToCenterX =
633
+ (width - this._pixiObject.width) * (alignmentX - 0.5);
634
+
635
+ this._pixiObject.position.x = this._instance.getX() + width / 2;
636
+ this._pixiObject.anchor.x =
637
+ 0.5 - centerToCenterX / this._pixiObject.width;
638
+ } else {
639
+ this._pixiObject.position.x =
640
+ this._instance.getX() + this._pixiObject.width / 2;
641
+ this._pixiObject.anchor.x = 0.5;
642
+ }
643
+ const alignmentY =
644
+ object.content.verticalTextAlignment === 'bottom'
645
+ ? 1
646
+ : object.content.verticalTextAlignment === 'center'
647
+ ? 0.5
648
+ : 0;
591
649
  this._pixiObject.position.y =
592
- this._instance.getY() + this._pixiObject.height / 2;
650
+ this._instance.getY() + this._pixiObject.height * (0.5 - alignmentY);
651
+ this._pixiObject.anchor.y = 0.5;
652
+
593
653
  this._pixiObject.rotation = RenderedInstance.toRad(
594
654
  this._instance.getAngle()
595
655
  );
596
656
 
597
- if (this._instance.hasCustomSize() && this._pixiObject) {
598
- const customWidth = this.getCustomWidth();
599
- if (
600
- this._pixiObject &&
601
- this._pixiObject._style.wordWrapWidth !== customWidth
602
- ) {
603
- this._pixiObject._style.wordWrapWidth = customWidth;
604
- this._pixiObject.dirty = true;
605
- }
606
- }
607
-
608
657
  // Do not hide completely an object so it can still be manipulated
609
658
  const alphaForDisplay = Math.max(
610
659
  this._instance.getOpacity() / 255,
@@ -626,6 +675,19 @@ module.exports = {
626
675
  getDefaultHeight() {
627
676
  return this._pixiObject.height;
628
677
  }
678
+
679
+ getOriginY() {
680
+ const object = gd.castObject(
681
+ this._associatedObjectConfiguration,
682
+ gd.ObjectJsImplementation
683
+ );
684
+ const height = this.getHeight();
685
+ return object.content.verticalTextAlignment === 'bottom'
686
+ ? height
687
+ : object.content.verticalTextAlignment === 'center'
688
+ ? height / 2
689
+ : 0;
690
+ }
629
691
  }
630
692
 
631
693
  objectsRenderingService.registerInstanceRenderer(
@@ -1,2 +1,2 @@
1
- var gdjs;(function(i){class o{constructor(t,e){this._object=t,this._pixiObject=new MultiStyleText(t._text,{default:{fontFamily:e.getGame().getFontManager().getFontFamily(t._fontFamily),fontSize:t._fontSize+"px",fill:i.rgbToHexNumber(t._color[0],t._color[1],t._color[2]),tagStyle:"bbcode",wordWrap:t._wordWrap,wordWrapWidth:t._wrappingWidth,align:t._align}}),e.getLayer("").getRenderer().addRendererObject(this._pixiObject,t.getZOrder()),this._pixiObject.anchor.x=.5,this._pixiObject.anchor.y=.5,this.updateText(),this.updatePosition(),this.updateAngle(),this.updateOpacity()}getRendererObject(){return this._pixiObject}updateWordWrap(){this._pixiObject._style.wordWrap=this._object._wordWrap,this._pixiObject.dirty=!0,this.updatePosition()}updateWrappingWidth(){this._pixiObject._style.wordWrapWidth=this._object._wrappingWidth,this._pixiObject.dirty=!0,this.updatePosition()}updateText(){this._pixiObject.text=this._object._text,this.updatePosition()}updateColor(){this._pixiObject.textStyles.default.fill=i.rgbToHexNumber(this._object._color[0],this._object._color[1],this._object._color[2]),this._pixiObject.dirty=!0}updateAlignment(){this._pixiObject._style.align=this._object._align,this._pixiObject.dirty=!0}updateFontFamily(){this._pixiObject.textStyles.default.fontFamily=this._object.getInstanceContainer().getGame().getFontManager().getFontFamily(this._object._fontFamily),this._pixiObject.dirty=!0}updateFontSize(){this._pixiObject.textStyles.default.fontSize=this._object._fontSize+"px",this._pixiObject.dirty=!0}updatePosition(){this._pixiObject.position.x=this._object.x+this._pixiObject.width/2,this._pixiObject.position.y=this._object.y+this._pixiObject.height/2}updateAngle(){this._pixiObject.rotation=i.toRad(this._object.angle)}updateOpacity(){this._pixiObject.alpha=this._object._opacity/255}getWidth(){return this._pixiObject.width}getHeight(){return this._pixiObject.height}destroy(){this._pixiObject.destroy(!0)}}i.BBTextRuntimeObjectPixiRenderer=o,i.BBTextRuntimeObjectRenderer=o})(gdjs||(gdjs={}));
1
+ var gdjs;(function(i){class s{constructor(t,e){this._object=t,this._pixiObject=new MultiStyleText(t._text,{default:{fontFamily:e.getGame().getFontManager().getFontFamily(t._fontFamily),fontSize:t._fontSize+"px",fill:i.rgbToHexNumber(t._color[0],t._color[1],t._color[2]),tagStyle:"bbcode",wordWrap:t._wrapping,wordWrapWidth:t._wrappingWidth,align:t._textAlign}}),e.getLayer("").getRenderer().addRendererObject(this._pixiObject,t.getZOrder()),this.updateAlignment(),this.updateText(),this.updatePosition(),this.updateAngle(),this.updateOpacity()}getRendererObject(){return this._pixiObject}updateWordWrap(){this._pixiObject._style.wordWrap=this._object._wrapping,this._pixiObject.dirty=!0,this.updatePosition()}updateWrappingWidth(){this._pixiObject._style.wordWrapWidth=this._object._wrappingWidth,this._pixiObject.dirty=!0,this.updatePosition()}updateText(){this._pixiObject.text=this._object._text,this.updatePosition()}updateColor(){this._pixiObject.textStyles.default.fill=i.rgbToHexNumber(this._object._color[0],this._object._color[1],this._object._color[2]),this._pixiObject.dirty=!0}updateAlignment(){this._pixiObject._style.align=this._object._textAlign,this._pixiObject.dirty=!0}updateFontFamily(){this._pixiObject.textStyles.default.fontFamily=this._object.getInstanceContainer().getGame().getFontManager().getFontFamily(this._object._fontFamily),this._pixiObject.dirty=!0}updateFontSize(){this._pixiObject.textStyles.default.fontSize=this._object._fontSize+"px",this._pixiObject.dirty=!0}updatePosition(){if(this._object.isWrapping()){const e=this._object._textAlign==="right"?1:this._object._textAlign==="center"?.5:0,o=this._object.getWrappingWidth(),h=(o-this._pixiObject.width)*(e-.5);this._pixiObject.position.x=this._object.x+o/2,this._pixiObject.anchor.x=.5-h/this._pixiObject.width}else this._pixiObject.position.x=this._object.x+this._pixiObject.width/2,this._pixiObject.anchor.x=.5;const t=this._object._verticalTextAlignment==="bottom"?1:this._object._verticalTextAlignment==="center"?.5:0;this._pixiObject.position.y=this._object.y+this._pixiObject.height*(.5-t),this._pixiObject.anchor.y=.5}updateAngle(){this._pixiObject.rotation=i.toRad(this._object.angle)}updateOpacity(){this._pixiObject.alpha=this._object._opacity/255}getWidth(){return this._pixiObject.width}getHeight(){return this._pixiObject.height}destroy(){this._pixiObject.destroy(!0)}}i.BBTextRuntimeObjectPixiRenderer=s,i.BBTextRuntimeObjectRenderer=s})(gdjs||(gdjs={}));
2
2
  //# sourceMappingURL=bbtextruntimeobject-pixi-renderer.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../GDevelop/Extensions/BBText/bbtextruntimeobject-pixi-renderer.ts"],
4
- "sourcesContent": ["namespace gdjs {\n /**\n * The PIXI.js renderer for the BBCode Text runtime object.\n */\n export class BBTextRuntimeObjectPixiRenderer {\n _object: gdjs.BBTextRuntimeObject;\n _pixiObject: MultiStyleText;\n\n /**\n * @param runtimeObject The object to render\n * @param instanceContainer The gdjs.RuntimeInstanceContainer in which the object is\n */\n constructor(\n runtimeObject: gdjs.BBTextRuntimeObject,\n instanceContainer: gdjs.RuntimeInstanceContainer\n ) {\n this._object = runtimeObject;\n\n this._pixiObject = new MultiStyleText(runtimeObject._text, {\n default: {\n fontFamily: instanceContainer\n .getGame()\n .getFontManager()\n .getFontFamily(runtimeObject._fontFamily),\n fontSize: runtimeObject._fontSize + 'px',\n fill: gdjs.rgbToHexNumber(\n runtimeObject._color[0],\n runtimeObject._color[1],\n runtimeObject._color[2]\n ),\n tagStyle: 'bbcode',\n wordWrap: runtimeObject._wordWrap,\n wordWrapWidth: runtimeObject._wrappingWidth,\n align: runtimeObject._align as PIXI.TextStyleAlign | undefined,\n },\n });\n instanceContainer\n .getLayer('')\n .getRenderer()\n .addRendererObject(this._pixiObject, runtimeObject.getZOrder());\n\n // Set the anchor in the center, so that the object rotates around\n // its center\n this._pixiObject.anchor.x = 0.5;\n this._pixiObject.anchor.y = 0.5;\n this.updateText();\n this.updatePosition();\n this.updateAngle();\n this.updateOpacity();\n }\n\n getRendererObject() {\n return this._pixiObject;\n }\n\n updateWordWrap(): void {\n //@ts-ignore Private member usage.\n this._pixiObject._style.wordWrap = this._object._wordWrap;\n this._pixiObject.dirty = true;\n this.updatePosition();\n }\n\n updateWrappingWidth(): void {\n //@ts-ignore Private member usage.\n this._pixiObject._style.wordWrapWidth = this._object._wrappingWidth;\n this._pixiObject.dirty = true;\n this.updatePosition();\n }\n\n updateText(): void {\n this._pixiObject.text = this._object._text;\n this.updatePosition();\n }\n\n updateColor(): void {\n //@ts-ignore Private member usage.\n this._pixiObject.textStyles.default.fill = gdjs.rgbToHexNumber(\n this._object._color[0],\n this._object._color[1],\n this._object._color[2]\n );\n this._pixiObject.dirty = true;\n }\n\n updateAlignment(): void {\n //@ts-ignore Private member usage.\n this._pixiObject._style.align = this._object._align;\n this._pixiObject.dirty = true;\n }\n\n updateFontFamily(): void {\n //@ts-ignore Private member usage.\n this._pixiObject.textStyles.default.fontFamily = this._object\n .getInstanceContainer()\n .getGame()\n .getFontManager()\n .getFontFamily(this._object._fontFamily);\n this._pixiObject.dirty = true;\n }\n\n updateFontSize(): void {\n //@ts-ignore Private member usage.\n this._pixiObject.textStyles.default.fontSize =\n this._object._fontSize + 'px';\n this._pixiObject.dirty = true;\n }\n\n updatePosition(): void {\n this._pixiObject.position.x = this._object.x + this._pixiObject.width / 2;\n this._pixiObject.position.y =\n this._object.y + this._pixiObject.height / 2;\n }\n\n updateAngle(): void {\n this._pixiObject.rotation = gdjs.toRad(this._object.angle);\n }\n\n updateOpacity(): void {\n this._pixiObject.alpha = this._object._opacity / 255;\n }\n\n getWidth(): float {\n return this._pixiObject.width;\n }\n\n getHeight(): float {\n return this._pixiObject.height;\n }\n\n destroy(): void {\n this._pixiObject.destroy(true);\n }\n }\n\n export const BBTextRuntimeObjectRenderer = BBTextRuntimeObjectPixiRenderer;\n export type BBTextRuntimeObjectRenderer = BBTextRuntimeObjectPixiRenderer;\n}\n"],
5
- "mappings": "AAAA,GAAU,MAAV,UAAU,EAAV,CAIS,OAAsC,CAQ3C,YACE,EACA,EACA,CACA,KAAK,QAAU,EAEf,KAAK,YAAc,GAAI,gBAAe,EAAc,MAAO,CACzD,QAAS,CACP,WAAY,EACT,UACA,iBACA,cAAc,EAAc,aAC/B,SAAU,EAAc,UAAY,KACpC,KAAM,EAAK,eACT,EAAc,OAAO,GACrB,EAAc,OAAO,GACrB,EAAc,OAAO,IAEvB,SAAU,SACV,SAAU,EAAc,UACxB,cAAe,EAAc,eAC7B,MAAO,EAAc,UAGzB,EACG,SAAS,IACT,cACA,kBAAkB,KAAK,YAAa,EAAc,aAIrD,KAAK,YAAY,OAAO,EAAI,GAC5B,KAAK,YAAY,OAAO,EAAI,GAC5B,KAAK,aACL,KAAK,iBACL,KAAK,cACL,KAAK,gBAGP,mBAAoB,CAClB,MAAO,MAAK,YAGd,gBAAuB,CAErB,KAAK,YAAY,OAAO,SAAW,KAAK,QAAQ,UAChD,KAAK,YAAY,MAAQ,GACzB,KAAK,iBAGP,qBAA4B,CAE1B,KAAK,YAAY,OAAO,cAAgB,KAAK,QAAQ,eACrD,KAAK,YAAY,MAAQ,GACzB,KAAK,iBAGP,YAAmB,CACjB,KAAK,YAAY,KAAO,KAAK,QAAQ,MACrC,KAAK,iBAGP,aAAoB,CAElB,KAAK,YAAY,WAAW,QAAQ,KAAO,EAAK,eAC9C,KAAK,QAAQ,OAAO,GACpB,KAAK,QAAQ,OAAO,GACpB,KAAK,QAAQ,OAAO,IAEtB,KAAK,YAAY,MAAQ,GAG3B,iBAAwB,CAEtB,KAAK,YAAY,OAAO,MAAQ,KAAK,QAAQ,OAC7C,KAAK,YAAY,MAAQ,GAG3B,kBAAyB,CAEvB,KAAK,YAAY,WAAW,QAAQ,WAAa,KAAK,QACnD,uBACA,UACA,iBACA,cAAc,KAAK,QAAQ,aAC9B,KAAK,YAAY,MAAQ,GAG3B,gBAAuB,CAErB,KAAK,YAAY,WAAW,QAAQ,SAClC,KAAK,QAAQ,UAAY,KAC3B,KAAK,YAAY,MAAQ,GAG3B,gBAAuB,CACrB,KAAK,YAAY,SAAS,EAAI,KAAK,QAAQ,EAAI,KAAK,YAAY,MAAQ,EACxE,KAAK,YAAY,SAAS,EACxB,KAAK,QAAQ,EAAI,KAAK,YAAY,OAAS,EAG/C,aAAoB,CAClB,KAAK,YAAY,SAAW,EAAK,MAAM,KAAK,QAAQ,OAGtD,eAAsB,CACpB,KAAK,YAAY,MAAQ,KAAK,QAAQ,SAAW,IAGnD,UAAkB,CAChB,MAAO,MAAK,YAAY,MAG1B,WAAmB,CACjB,MAAO,MAAK,YAAY,OAG1B,SAAgB,CACd,KAAK,YAAY,QAAQ,KA9HtB,EAAM,kCAkIA,8BAA8B,IAtInC",
4
+ "sourcesContent": ["namespace gdjs {\n /**\n * The PIXI.js renderer for the BBCode Text runtime object.\n */\n export class BBTextRuntimeObjectPixiRenderer {\n _object: gdjs.BBTextRuntimeObject;\n _pixiObject: MultiStyleText;\n\n /**\n * @param runtimeObject The object to render\n * @param instanceContainer The gdjs.RuntimeInstanceContainer in which the object is\n */\n constructor(\n runtimeObject: gdjs.BBTextRuntimeObject,\n instanceContainer: gdjs.RuntimeInstanceContainer\n ) {\n this._object = runtimeObject;\n\n this._pixiObject = new MultiStyleText(runtimeObject._text, {\n default: {\n fontFamily: instanceContainer\n .getGame()\n .getFontManager()\n .getFontFamily(runtimeObject._fontFamily),\n fontSize: runtimeObject._fontSize + 'px',\n fill: gdjs.rgbToHexNumber(\n runtimeObject._color[0],\n runtimeObject._color[1],\n runtimeObject._color[2]\n ),\n tagStyle: 'bbcode',\n wordWrap: runtimeObject._wrapping,\n wordWrapWidth: runtimeObject._wrappingWidth,\n align: runtimeObject._textAlign as PIXI.TextStyleAlign | undefined,\n },\n });\n instanceContainer\n .getLayer('')\n .getRenderer()\n .addRendererObject(this._pixiObject, runtimeObject.getZOrder());\n\n this.updateAlignment();\n this.updateText();\n this.updatePosition();\n this.updateAngle();\n this.updateOpacity();\n }\n\n getRendererObject() {\n return this._pixiObject;\n }\n\n updateWordWrap(): void {\n //@ts-ignore Private member usage.\n this._pixiObject._style.wordWrap = this._object._wrapping;\n this._pixiObject.dirty = true;\n this.updatePosition();\n }\n\n updateWrappingWidth(): void {\n //@ts-ignore Private member usage.\n this._pixiObject._style.wordWrapWidth = this._object._wrappingWidth;\n this._pixiObject.dirty = true;\n this.updatePosition();\n }\n\n updateText(): void {\n this._pixiObject.text = this._object._text;\n this.updatePosition();\n }\n\n updateColor(): void {\n //@ts-ignore Private member usage.\n this._pixiObject.textStyles.default.fill = gdjs.rgbToHexNumber(\n this._object._color[0],\n this._object._color[1],\n this._object._color[2]\n );\n this._pixiObject.dirty = true;\n }\n\n updateAlignment(): void {\n //@ts-ignore Private member usage.\n this._pixiObject._style.align = this._object._textAlign;\n this._pixiObject.dirty = true;\n }\n\n updateFontFamily(): void {\n //@ts-ignore Private member usage.\n this._pixiObject.textStyles.default.fontFamily = this._object\n .getInstanceContainer()\n .getGame()\n .getFontManager()\n .getFontFamily(this._object._fontFamily);\n this._pixiObject.dirty = true;\n }\n\n updateFontSize(): void {\n //@ts-ignore Private member usage.\n this._pixiObject.textStyles.default.fontSize =\n this._object._fontSize + 'px';\n this._pixiObject.dirty = true;\n }\n\n updatePosition(): void {\n if (this._object.isWrapping()) {\n const alignmentX =\n this._object._textAlign === 'right'\n ? 1\n : this._object._textAlign === 'center'\n ? 0.5\n : 0;\n\n const width = this._object.getWrappingWidth();\n\n // A vector from the custom size center to the renderer center.\n const centerToCenterX =\n (width - this._pixiObject.width) * (alignmentX - 0.5);\n\n this._pixiObject.position.x = this._object.x + width / 2;\n this._pixiObject.anchor.x =\n 0.5 - centerToCenterX / this._pixiObject.width;\n } else {\n this._pixiObject.position.x =\n this._object.x + this._pixiObject.width / 2;\n this._pixiObject.anchor.x = 0.5;\n }\n\n const alignmentY =\n this._object._verticalTextAlignment === 'bottom'\n ? 1\n : this._object._verticalTextAlignment === 'center'\n ? 0.5\n : 0;\n this._pixiObject.position.y =\n this._object.y + this._pixiObject.height * (0.5 - alignmentY);\n this._pixiObject.anchor.y = 0.5;\n }\n\n updateAngle(): void {\n this._pixiObject.rotation = gdjs.toRad(this._object.angle);\n }\n\n updateOpacity(): void {\n this._pixiObject.alpha = this._object._opacity / 255;\n }\n\n getWidth(): float {\n return this._pixiObject.width;\n }\n\n getHeight(): float {\n return this._pixiObject.height;\n }\n\n destroy(): void {\n this._pixiObject.destroy(true);\n }\n }\n\n export const BBTextRuntimeObjectRenderer = BBTextRuntimeObjectPixiRenderer;\n export type BBTextRuntimeObjectRenderer = BBTextRuntimeObjectPixiRenderer;\n}\n"],
5
+ "mappings": "AAAA,GAAU,MAAV,UAAU,EAAV,CAIS,OAAsC,CAQ3C,YACE,EACA,EACA,CACA,KAAK,QAAU,EAEf,KAAK,YAAc,GAAI,gBAAe,EAAc,MAAO,CACzD,QAAS,CACP,WAAY,EACT,UACA,iBACA,cAAc,EAAc,aAC/B,SAAU,EAAc,UAAY,KACpC,KAAM,EAAK,eACT,EAAc,OAAO,GACrB,EAAc,OAAO,GACrB,EAAc,OAAO,IAEvB,SAAU,SACV,SAAU,EAAc,UACxB,cAAe,EAAc,eAC7B,MAAO,EAAc,cAGzB,EACG,SAAS,IACT,cACA,kBAAkB,KAAK,YAAa,EAAc,aAErD,KAAK,kBACL,KAAK,aACL,KAAK,iBACL,KAAK,cACL,KAAK,gBAGP,mBAAoB,CAClB,MAAO,MAAK,YAGd,gBAAuB,CAErB,KAAK,YAAY,OAAO,SAAW,KAAK,QAAQ,UAChD,KAAK,YAAY,MAAQ,GACzB,KAAK,iBAGP,qBAA4B,CAE1B,KAAK,YAAY,OAAO,cAAgB,KAAK,QAAQ,eACrD,KAAK,YAAY,MAAQ,GACzB,KAAK,iBAGP,YAAmB,CACjB,KAAK,YAAY,KAAO,KAAK,QAAQ,MACrC,KAAK,iBAGP,aAAoB,CAElB,KAAK,YAAY,WAAW,QAAQ,KAAO,EAAK,eAC9C,KAAK,QAAQ,OAAO,GACpB,KAAK,QAAQ,OAAO,GACpB,KAAK,QAAQ,OAAO,IAEtB,KAAK,YAAY,MAAQ,GAG3B,iBAAwB,CAEtB,KAAK,YAAY,OAAO,MAAQ,KAAK,QAAQ,WAC7C,KAAK,YAAY,MAAQ,GAG3B,kBAAyB,CAEvB,KAAK,YAAY,WAAW,QAAQ,WAAa,KAAK,QACnD,uBACA,UACA,iBACA,cAAc,KAAK,QAAQ,aAC9B,KAAK,YAAY,MAAQ,GAG3B,gBAAuB,CAErB,KAAK,YAAY,WAAW,QAAQ,SAClC,KAAK,QAAQ,UAAY,KAC3B,KAAK,YAAY,MAAQ,GAG3B,gBAAuB,CACrB,GAAI,KAAK,QAAQ,aAAc,CAC7B,KAAM,GACJ,KAAK,QAAQ,aAAe,QACxB,EACA,KAAK,QAAQ,aAAe,SAC1B,GACA,EAEF,EAAQ,KAAK,QAAQ,mBAGrB,EACH,GAAQ,KAAK,YAAY,OAAU,GAAa,IAEnD,KAAK,YAAY,SAAS,EAAI,KAAK,QAAQ,EAAI,EAAQ,EACvD,KAAK,YAAY,OAAO,EACtB,GAAM,EAAkB,KAAK,YAAY,UAE3C,MAAK,YAAY,SAAS,EACxB,KAAK,QAAQ,EAAI,KAAK,YAAY,MAAQ,EAC5C,KAAK,YAAY,OAAO,EAAI,GAG9B,KAAM,GACJ,KAAK,QAAQ,yBAA2B,SACpC,EACA,KAAK,QAAQ,yBAA2B,SACtC,GACA,EACR,KAAK,YAAY,SAAS,EACxB,KAAK,QAAQ,EAAI,KAAK,YAAY,OAAU,IAAM,GACpD,KAAK,YAAY,OAAO,EAAI,GAG9B,aAAoB,CAClB,KAAK,YAAY,SAAW,EAAK,MAAM,KAAK,QAAQ,OAGtD,eAAsB,CACpB,KAAK,YAAY,MAAQ,KAAK,QAAQ,SAAW,IAGnD,UAAkB,CAChB,MAAO,MAAK,YAAY,MAG1B,WAAmB,CACjB,MAAO,MAAK,YAAY,OAG1B,SAAgB,CACd,KAAK,YAAY,QAAQ,KAxJtB,EAAM,kCA4JA,8BAA8B,IAhKnC",
6
6
  "names": []
7
7
  }
@@ -1,2 +1,2 @@
1
- var gdjs;(function(i){class n extends i.RuntimeObject{constructor(t,e){super(t,e);this._wrappingWidth=250;this._opacity=parseFloat(e.content.opacity),this._text=e.content.text,this._color=i.rgbOrHexToRGBColor(e.content.color),this._fontFamily=e.content.fontFamily,this._fontSize=parseFloat(e.content.fontSize),this._wordWrap=e.content.wordWrap,this._align=e.content.align,this._renderer=new i.BBTextRuntimeObjectRenderer(this,t),this.hidden=!e.content.visible,this.onCreated()}getRendererObject(){return this._renderer.getRendererObject()}updateFromObjectData(t,e){return t.content.opacity!==e.content.opacity&&this.setOpacity(e.content.opacity),t.content.visible!==e.content.visible&&this.hide(!e.content.visible),t.content.text!==e.content.text&&this.setBBText(e.content.text),t.content.color!==e.content.color&&(this._color=i.rgbOrHexToRGBColor(e.content.color),this._renderer.updateColor()),t.content.fontFamily!==e.content.fontFamily&&this.setFontFamily(e.content.fontFamily),t.content.fontSize!==e.content.fontSize&&this.setFontSize(e.content.fontSize),t.content.wordWrap!==e.content.wordWrap&&this.setWordWrap(e.content.wordWrap),t.content.align!==e.content.align&&this.setAlignment(e.content.align),!0}getNetworkSyncData(){return{...super.getNetworkSyncData(),text:this._text,o:this._opacity,c:this._color,ff:this._fontFamily,fs:this._fontSize,wwrap:this._wordWrap,wwidth:this._wrappingWidth,align:this._align,hidden:this.hidden}}updateFromNetworkSyncData(t){super.updateFromNetworkSyncData(t),this._text!==void 0&&this.setBBText(t.text),this._opacity!==void 0&&this.setOpacity(t.o),this._color!==void 0&&(this._color=t.c,this._renderer.updateColor()),this._fontFamily!==void 0&&this.setFontFamily(t.ff),this._fontSize!==void 0&&this.setFontSize(t.fs),this._wordWrap!==void 0&&this.setWordWrap(t.wwrap),this._wrappingWidth!==void 0&&this.setWrappingWidth(t.wwidth),this._align!==void 0&&this.setAlignment(t.align),this.hidden!==void 0&&this.hide(t.hidden)}extraInitializationFromInitialInstance(t){t.customSize?this.setWrappingWidth(t.width):this.setWrappingWidth(250),t.opacity!==void 0&&this.setOpacity(t.opacity)}onDestroyed(){super.onDestroyed(),this._renderer.destroy()}setBBText(t){this._text=t,this._renderer.updateText(),this.invalidateHitboxes()}getBBText(){return this._text}setColor(t){this._color=i.rgbOrHexToRGBColor(t),this._renderer.updateColor()}getColor(){return this._color[0]+";"+this._color[1]+";"+this._color[2]}setFontSize(t){this._fontSize=t,this._renderer.updateFontSize()}getFontSize(){return this._fontSize}setFontFamily(t){this._fontFamily=t,this._renderer.updateFontFamily()}getFontFamily(){return this._fontFamily}setAlignment(t){this._align=t,this._renderer.updateAlignment()}getAlignment(){return this._align}setX(t){super.setX(t),this._renderer.updatePosition()}setY(t){super.setY(t),this._renderer.updatePosition()}setAngle(t){super.setAngle(t),this._renderer.updateAngle()}setOpacity(t){t<0&&(t=0),t>255&&(t=255),this._opacity=t,this._renderer.updateOpacity()}getOpacity(){return this._opacity}setWrappingWidth(t){this._wrappingWidth!==t&&(this._wrappingWidth=t,this._renderer.updateWrappingWidth(),this.invalidateHitboxes())}getWrappingWidth(){return this._wrappingWidth}setWordWrap(t){this._wordWrap!==t&&(this._wordWrap=t,this._renderer.updateWordWrap(),this.invalidateHitboxes())}getWordWrap(){return this._wordWrap}getWidth(){return this._renderer.getWidth()}getHeight(){return this._renderer.getHeight()}}i.BBTextRuntimeObject=n,i.registerObject("BBText::BBText",i.BBTextRuntimeObject)})(gdjs||(gdjs={}));
1
+ var gdjs;(function(i){class n extends i.RuntimeObject{constructor(t,e){super(t,e);this._wrapping=!1;this._wrappingWidth=250;this._opacity=parseFloat(e.content.opacity),this._text=e.content.text,this._color=i.rgbOrHexToRGBColor(e.content.color),this._fontFamily=e.content.fontFamily,this._fontSize=parseFloat(e.content.fontSize),this._textAlign=e.content.align,this._verticalTextAlignment=e.content.verticalTextAlignment||"top",this.hidden=!e.content.visible,this._renderer=new i.BBTextRuntimeObjectRenderer(this,t),this.onCreated()}getRendererObject(){return this._renderer.getRendererObject()}updateFromObjectData(t,e){return t.content.opacity!==e.content.opacity&&this.setOpacity(e.content.opacity),t.content.visible!==e.content.visible&&this.hide(!e.content.visible),t.content.text!==e.content.text&&this.setBBText(e.content.text),t.content.color!==e.content.color&&(this._color=i.rgbOrHexToRGBColor(e.content.color),this._renderer.updateColor()),t.content.fontFamily!==e.content.fontFamily&&this.setFontFamily(e.content.fontFamily),t.content.fontSize!==e.content.fontSize&&this.setFontSize(e.content.fontSize),t.content.wordWrap!==e.content.wordWrap&&this.setWrapping(e.content.wordWrap),t.content.align!==e.content.align&&this.setTextAlignment(e.content.align),t.content.verticalTextAlignment!==e.content.verticalTextAlignment&&this.setVerticalTextAlignment(e.content.verticalTextAlignment),!0}getNetworkSyncData(){return{...super.getNetworkSyncData(),text:this._text,o:this._opacity,c:this._color,ff:this._fontFamily,fs:this._fontSize,wwrap:this._wrapping,wwidth:this._wrappingWidth,align:this._textAlign,vta:this._verticalTextAlignment,hidden:this.hidden}}updateFromNetworkSyncData(t){super.updateFromNetworkSyncData(t),this._text!==void 0&&this.setBBText(t.text),this._opacity!==void 0&&this.setOpacity(t.o),this._color!==void 0&&(this._color=t.c,this._renderer.updateColor()),this._fontFamily!==void 0&&this.setFontFamily(t.ff),this._fontSize!==void 0&&this.setFontSize(t.fs),this._wrapping!==void 0&&this.setWrapping(t.wwrap),this._wrappingWidth!==void 0&&this.setWrappingWidth(t.wwidth),this._textAlign!==void 0&&this.setTextAlignment(t.align),this._verticalTextAlignment!==void 0&&this.setVerticalTextAlignment(t.vta),this.hidden!==void 0&&this.hide(t.hidden)}extraInitializationFromInitialInstance(t){t.customSize?(this.setWrappingWidth(t.width),this.setWrapping(!0)):this.setWrappingWidth(250),t.opacity!==void 0&&this.setOpacity(t.opacity)}onDestroyed(){super.onDestroyed(),this._renderer.destroy()}setBBText(t){this._text=t,this._renderer.updateText(),this.invalidateHitboxes()}getBBText(){return this._text}setColor(t){this._color=i.rgbOrHexToRGBColor(t),this._renderer.updateColor()}getColor(){return this._color[0]+";"+this._color[1]+";"+this._color[2]}setFontSize(t){this._fontSize=t,this._renderer.updateFontSize()}getFontSize(){return this._fontSize}setFontFamily(t){this._fontFamily=t,this._renderer.updateFontFamily()}getFontFamily(){return this._fontFamily}setAlignment(t){this.setTextAlignment(t)}setTextAlignment(t){this._textAlign=t,this._renderer.updateAlignment()}getAlignment(){return this.getTextAlignment()}getTextAlignment(){return this._textAlign}setVerticalTextAlignment(t){this._verticalTextAlignment=t,this._renderer.updatePosition()}getVerticalTextAlignment(){return this._verticalTextAlignment}setX(t){super.setX(t),this._renderer.updatePosition()}setY(t){super.setY(t),this._renderer.updatePosition()}setAngle(t){super.setAngle(t),this._renderer.updateAngle()}setOpacity(t){t<0&&(t=0),t>255&&(t=255),this._opacity=t,this._renderer.updateOpacity()}getOpacity(){return this._opacity}setWrappingWidth(t){this._wrappingWidth!==t&&(this._wrappingWidth=t,this._renderer.updateWrappingWidth(),this.invalidateHitboxes())}getWrappingWidth(){return this._wrappingWidth}setWrapping(t){this._wrapping!==t&&(this._wrapping=t,this._renderer.updateWordWrap(),this.invalidateHitboxes())}isWrapping(){return this._wrapping}getWidth(){return this._renderer.getWidth()}getHeight(){return this._renderer.getHeight()}getDrawableY(){return this.getY()-(this._verticalTextAlignment==="center"?this.getHeight()/2:this._verticalTextAlignment==="bottom"?this.getHeight():0)}}i.BBTextRuntimeObject=n,i.registerObject("BBText::BBText",i.BBTextRuntimeObject)})(gdjs||(gdjs={}));
2
2
  //# sourceMappingURL=bbtextruntimeobject.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../GDevelop/Extensions/BBText/bbtextruntimeobject.ts"],
4
- "sourcesContent": ["namespace gdjs {\n /** Base parameters for {@link gdjs.BBTextRuntimeObject} */\n export type BBTextObjectDataType = {\n /** The base parameters of the BBText */\n content: {\n /** The opacity of the BBText */\n opacity: number;\n /** Deprecated - Is the text visible? */\n visible: boolean;\n /** Content of the text */\n text: string;\n /** The color of the text */\n color: string;\n /** The font of the text */\n fontFamily: string;\n /** The size of the text */\n fontSize: number;\n /** Activate word wrap if set to true */\n wordWrap: boolean;\n /** Alignment of the text: \"left\", \"center\" or \"right\" */\n align: 'left' | 'center' | 'right';\n };\n };\n export type BBTextObjectData = ObjectData & BBTextObjectDataType;\n\n export type BBTextObjectNetworkSyncDataType = {\n text: string;\n o: float;\n c: number[];\n ff: string;\n fs: number;\n wwrap: boolean;\n wwidth: float;\n align: string;\n hidden: boolean;\n };\n\n export type BBTextObjectNetworkSyncData = ObjectNetworkSyncData &\n BBTextObjectNetworkSyncDataType;\n\n /**\n * Displays a rich text using BBCode markup (allowing to set parts of the text as bold, italic, use different colors and shadows).\n */\n export class BBTextRuntimeObject\n extends gdjs.RuntimeObject\n implements gdjs.OpacityHandler\n {\n _opacity: float;\n\n _text: string;\n\n /** color in format [r, g, b], where each component is in the range [0, 255] */\n _color: integer[];\n _fontFamily: string;\n _fontSize: number;\n\n _wordWrap: boolean;\n _wrappingWidth: float = 250;\n\n // This value is the default wrapping width of the runtime object.\n _align: string;\n _renderer: gdjs.BBTextRuntimeObjectRenderer;\n\n // While this should rather be exposed as a property for all objects, honor the \"visible\"\n // property that is specific to this object.\n hidden: boolean;\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: BBTextObjectData\n ) {\n super(instanceContainer, objectData);\n // @ts-ignore - parseFloat should not be required, but GDevelop 5.0 beta 92 and below were storing it as a string.\n this._opacity = parseFloat(objectData.content.opacity);\n this._text = objectData.content.text;\n this._color = gdjs.rgbOrHexToRGBColor(objectData.content.color);\n this._fontFamily = objectData.content.fontFamily;\n // @ts-ignore - parseFloat should not be required, but GDevelop 5.0 beta 92 and below were storing it as a string.\n this._fontSize = parseFloat(objectData.content.fontSize);\n this._wordWrap = objectData.content.wordWrap;\n this._align = objectData.content.align;\n this._renderer = new gdjs.BBTextRuntimeObjectRenderer(\n this,\n instanceContainer\n );\n this.hidden = !objectData.content.visible;\n\n // *ALWAYS* call `this.onCreated()` at the very end of your object constructor.\n this.onCreated();\n }\n\n getRendererObject() {\n return this._renderer.getRendererObject();\n }\n\n // @ts-ignore\n updateFromObjectData(\n oldObjectData: BBTextObjectDataType,\n newObjectData: BBTextObjectDataType\n ): boolean {\n if (oldObjectData.content.opacity !== newObjectData.content.opacity) {\n this.setOpacity(newObjectData.content.opacity);\n }\n if (oldObjectData.content.visible !== newObjectData.content.visible) {\n this.hide(!newObjectData.content.visible);\n }\n if (oldObjectData.content.text !== newObjectData.content.text) {\n this.setBBText(newObjectData.content.text);\n }\n if (oldObjectData.content.color !== newObjectData.content.color) {\n this._color = gdjs.rgbOrHexToRGBColor(newObjectData.content.color);\n this._renderer.updateColor();\n }\n if (\n oldObjectData.content.fontFamily !== newObjectData.content.fontFamily\n ) {\n this.setFontFamily(newObjectData.content.fontFamily);\n }\n if (oldObjectData.content.fontSize !== newObjectData.content.fontSize) {\n this.setFontSize(newObjectData.content.fontSize);\n }\n if (oldObjectData.content.wordWrap !== newObjectData.content.wordWrap) {\n this.setWordWrap(newObjectData.content.wordWrap);\n }\n if (oldObjectData.content.align !== newObjectData.content.align) {\n this.setAlignment(newObjectData.content.align);\n }\n return true;\n }\n\n getNetworkSyncData(): BBTextObjectNetworkSyncData {\n return {\n ...super.getNetworkSyncData(),\n text: this._text,\n o: this._opacity,\n c: this._color,\n ff: this._fontFamily,\n fs: this._fontSize,\n wwrap: this._wordWrap,\n wwidth: this._wrappingWidth,\n align: this._align,\n hidden: this.hidden,\n };\n }\n\n updateFromNetworkSyncData(\n networkSyncData: BBTextObjectNetworkSyncData\n ): void {\n super.updateFromNetworkSyncData(networkSyncData);\n if (this._text !== undefined) {\n this.setBBText(networkSyncData.text);\n }\n if (this._opacity !== undefined) {\n this.setOpacity(networkSyncData.o);\n }\n if (this._color !== undefined) {\n this._color = networkSyncData.c;\n this._renderer.updateColor();\n }\n if (this._fontFamily !== undefined) {\n this.setFontFamily(networkSyncData.ff);\n }\n if (this._fontSize !== undefined) {\n this.setFontSize(networkSyncData.fs);\n }\n if (this._wordWrap !== undefined) {\n this.setWordWrap(networkSyncData.wwrap);\n }\n if (this._wrappingWidth !== undefined) {\n this.setWrappingWidth(networkSyncData.wwidth);\n }\n if (this._align !== undefined) {\n this.setAlignment(networkSyncData.align);\n }\n if (this.hidden !== undefined) {\n this.hide(networkSyncData.hidden);\n }\n }\n\n /**\n * Initialize the extra parameters that could be set for an instance.\n */\n extraInitializationFromInitialInstance(initialInstanceData: InstanceData) {\n if (initialInstanceData.customSize) {\n this.setWrappingWidth(initialInstanceData.width);\n } else {\n this.setWrappingWidth(\n // This value is the default wrapping width of the runtime object.\n 250\n );\n }\n if (initialInstanceData.opacity !== undefined) {\n this.setOpacity(initialInstanceData.opacity);\n }\n }\n\n onDestroyed(): void {\n super.onDestroyed();\n this._renderer.destroy();\n }\n\n /**\n * Set the markup text to display.\n */\n setBBText(text): void {\n this._text = text;\n this._renderer.updateText();\n this.invalidateHitboxes();\n }\n\n /**\n * Get the markup text displayed by the object.\n */\n getBBText() {\n return this._text;\n }\n\n setColor(rgbColorString): void {\n this._color = gdjs.rgbOrHexToRGBColor(rgbColorString);\n this._renderer.updateColor();\n }\n\n /**\n * Get the base 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 setFontSize(fontSize): void {\n this._fontSize = fontSize;\n this._renderer.updateFontSize();\n }\n\n getFontSize() {\n return this._fontSize;\n }\n\n setFontFamily(fontFamily): void {\n this._fontFamily = fontFamily;\n this._renderer.updateFontFamily();\n }\n\n getFontFamily() {\n return this._fontFamily;\n }\n\n setAlignment(align): void {\n this._align = align;\n this._renderer.updateAlignment();\n }\n\n getAlignment() {\n return this._align;\n }\n\n /**\n * Set object position on X axis.\n * @param x The new position X of the object.\n */\n setX(x: float): void {\n super.setX(x);\n this._renderer.updatePosition();\n }\n\n /**\n * Set object position on Y axis.\n * @param y The new position Y of the object.\n */\n setY(y: float): void {\n super.setY(y);\n this._renderer.updatePosition();\n }\n\n /**\n * Set the angle of the object.\n * @param angle The new angle of the object.\n */\n setAngle(angle: float): void {\n super.setAngle(angle);\n this._renderer.updateAngle();\n }\n\n /**\n * Set object opacity.\n * @param opacity The new opacity of the object (0-255).\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 * Set the width.\n * @param width The new width in pixels.\n */\n setWrappingWidth(width: float): void {\n if (this._wrappingWidth === width) return;\n\n this._wrappingWidth = width;\n this._renderer.updateWrappingWidth();\n this.invalidateHitboxes();\n }\n\n /**\n * Get the wrapping width of the object.\n */\n getWrappingWidth(): float {\n return this._wrappingWidth;\n }\n\n setWordWrap(wordWrap: boolean): void {\n if (this._wordWrap === wordWrap) return;\n\n this._wordWrap = wordWrap;\n this._renderer.updateWordWrap();\n this.invalidateHitboxes();\n }\n\n getWordWrap() {\n return this._wordWrap;\n }\n\n /**\n * Get the width of the object.\n */\n getWidth(): float {\n return this._renderer.getWidth();\n }\n\n /**\n * Get the height of the object.\n */\n getHeight(): float {\n return this._renderer.getHeight();\n }\n }\n // @ts-ignore\n gdjs.registerObject('BBText::BBText', gdjs.BBTextRuntimeObject);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["namespace gdjs {\n /** Base parameters for {@link gdjs.BBTextRuntimeObject} */\n export type BBTextObjectDataType = {\n /** The base parameters of the BBText */\n content: {\n /** The opacity of the BBText */\n opacity: number;\n /** Deprecated - Is the text visible? */\n visible: boolean;\n /** Content of the text */\n text: string;\n /** The color of the text */\n color: string;\n /** The font of the text */\n fontFamily: string;\n /** The size of the text */\n fontSize: number;\n /** Activate word wrap if set to true */\n wordWrap: boolean;\n /** Alignment of the text: \"left\", \"center\" or \"right\" */\n align: 'left' | 'center' | 'right';\n verticalTextAlignment: 'top' | 'center' | 'bottom';\n };\n };\n export type BBTextObjectData = ObjectData & BBTextObjectDataType;\n\n export type BBTextObjectNetworkSyncDataType = {\n text: string;\n o: float;\n c: number[];\n ff: string;\n fs: number;\n wwrap: boolean;\n wwidth: float;\n align: string;\n vta: string;\n hidden: boolean;\n };\n\n export type BBTextObjectNetworkSyncData = ObjectNetworkSyncData &\n BBTextObjectNetworkSyncDataType;\n\n /**\n * Displays a rich text using BBCode markup (allowing to set parts of the text as bold, italic, use different colors and shadows).\n */\n export class BBTextRuntimeObject\n extends gdjs.RuntimeObject\n implements gdjs.OpacityHandler\n {\n _opacity: float;\n\n _text: string;\n\n /** color in format [r, g, b], where each component is in the range [0, 255] */\n _color: integer[];\n _fontFamily: string;\n _fontSize: float;\n\n _wrapping: boolean = false;\n _wrappingWidth: float = 250;\n\n _textAlign: string;\n _verticalTextAlignment: string;\n\n _renderer: gdjs.BBTextRuntimeObjectRenderer;\n\n // While this should rather be exposed as a property for all objects, honor the \"visible\"\n // property that is specific to this object.\n hidden: boolean;\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: BBTextObjectData\n ) {\n super(instanceContainer, objectData);\n // @ts-ignore - parseFloat should not be required, but GDevelop 5.0 beta 92 and below were storing it as a string.\n this._opacity = parseFloat(objectData.content.opacity);\n this._text = objectData.content.text;\n this._color = gdjs.rgbOrHexToRGBColor(objectData.content.color);\n this._fontFamily = objectData.content.fontFamily;\n // @ts-ignore - parseFloat should not be required, but GDevelop 5.0 beta 92 and below were storing it as a string.\n this._fontSize = parseFloat(objectData.content.fontSize);\n this._textAlign = objectData.content.align;\n this._verticalTextAlignment =\n objectData.content.verticalTextAlignment || 'top';\n this.hidden = !objectData.content.visible;\n\n this._renderer = new gdjs.BBTextRuntimeObjectRenderer(\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 getRendererObject() {\n return this._renderer.getRendererObject();\n }\n\n // @ts-ignore\n override updateFromObjectData(\n oldObjectData: BBTextObjectDataType,\n newObjectData: BBTextObjectDataType\n ): boolean {\n if (oldObjectData.content.opacity !== newObjectData.content.opacity) {\n this.setOpacity(newObjectData.content.opacity);\n }\n if (oldObjectData.content.visible !== newObjectData.content.visible) {\n this.hide(!newObjectData.content.visible);\n }\n if (oldObjectData.content.text !== newObjectData.content.text) {\n this.setBBText(newObjectData.content.text);\n }\n if (oldObjectData.content.color !== newObjectData.content.color) {\n this._color = gdjs.rgbOrHexToRGBColor(newObjectData.content.color);\n this._renderer.updateColor();\n }\n if (\n oldObjectData.content.fontFamily !== newObjectData.content.fontFamily\n ) {\n this.setFontFamily(newObjectData.content.fontFamily);\n }\n if (oldObjectData.content.fontSize !== newObjectData.content.fontSize) {\n this.setFontSize(newObjectData.content.fontSize);\n }\n if (oldObjectData.content.wordWrap !== newObjectData.content.wordWrap) {\n this.setWrapping(newObjectData.content.wordWrap);\n }\n if (oldObjectData.content.align !== newObjectData.content.align) {\n this.setTextAlignment(newObjectData.content.align);\n }\n if (\n oldObjectData.content.verticalTextAlignment !==\n newObjectData.content.verticalTextAlignment\n ) {\n this.setVerticalTextAlignment(\n newObjectData.content.verticalTextAlignment\n );\n }\n return true;\n }\n\n override getNetworkSyncData(): BBTextObjectNetworkSyncData {\n return {\n ...super.getNetworkSyncData(),\n text: this._text,\n o: this._opacity,\n c: this._color,\n ff: this._fontFamily,\n fs: this._fontSize,\n wwrap: this._wrapping,\n wwidth: this._wrappingWidth,\n align: this._textAlign,\n vta: this._verticalTextAlignment,\n hidden: this.hidden,\n };\n }\n\n override updateFromNetworkSyncData(\n networkSyncData: BBTextObjectNetworkSyncData\n ): void {\n super.updateFromNetworkSyncData(networkSyncData);\n if (this._text !== undefined) {\n this.setBBText(networkSyncData.text);\n }\n if (this._opacity !== undefined) {\n this.setOpacity(networkSyncData.o);\n }\n if (this._color !== undefined) {\n this._color = networkSyncData.c;\n this._renderer.updateColor();\n }\n if (this._fontFamily !== undefined) {\n this.setFontFamily(networkSyncData.ff);\n }\n if (this._fontSize !== undefined) {\n this.setFontSize(networkSyncData.fs);\n }\n if (this._wrapping !== undefined) {\n this.setWrapping(networkSyncData.wwrap);\n }\n if (this._wrappingWidth !== undefined) {\n this.setWrappingWidth(networkSyncData.wwidth);\n }\n if (this._textAlign !== undefined) {\n this.setTextAlignment(networkSyncData.align);\n }\n if (this._verticalTextAlignment !== undefined) {\n this.setVerticalTextAlignment(networkSyncData.vta);\n }\n if (this.hidden !== undefined) {\n this.hide(networkSyncData.hidden);\n }\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.setWrappingWidth(\n // This value is the default wrapping width of the runtime object.\n 250\n );\n }\n if (initialInstanceData.opacity !== undefined) {\n this.setOpacity(initialInstanceData.opacity);\n }\n }\n\n override onDestroyed(): void {\n super.onDestroyed();\n this._renderer.destroy();\n }\n\n /**\n * Set the markup text to display.\n */\n setBBText(text: string): void {\n this._text = text;\n this._renderer.updateText();\n this.invalidateHitboxes();\n }\n\n /**\n * Get the markup text displayed by the object.\n */\n getBBText() {\n return this._text;\n }\n\n setColor(rgbColorString: string): void {\n this._color = gdjs.rgbOrHexToRGBColor(rgbColorString);\n this._renderer.updateColor();\n }\n\n /**\n * Get the base 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 setFontSize(fontSize: float): void {\n this._fontSize = fontSize;\n this._renderer.updateFontSize();\n }\n\n getFontSize() {\n return this._fontSize;\n }\n\n setFontFamily(fontFamily: string): void {\n this._fontFamily = fontFamily;\n this._renderer.updateFontFamily();\n }\n\n getFontFamily(): string {\n return this._fontFamily;\n }\n\n /**\n * @deprecated Use `setTextAlignment` instead\n */\n setAlignment(align: string): void {\n this.setTextAlignment(align);\n }\n\n setTextAlignment(align: string): void {\n this._textAlign = align;\n this._renderer.updateAlignment();\n }\n\n /**\n * @deprecated Use `getTextAlignment` instead\n */\n getAlignment(): string {\n return this.getTextAlignment();\n }\n\n getTextAlignment(): string {\n return this._textAlign;\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.updatePosition();\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 override setX(x: float): void {\n super.setX(x);\n this._renderer.updatePosition();\n }\n\n override setY(y: float): void {\n super.setY(y);\n this._renderer.updatePosition();\n }\n\n override setAngle(angle: float): void {\n super.setAngle(angle);\n this._renderer.updateAngle();\n }\n\n /**\n * Set object opacity.\n * @param opacity The new opacity of the object (0-255).\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 * Set the width.\n * @param width The new width in pixels.\n */\n setWrappingWidth(width: float): void {\n if (this._wrappingWidth === width) return;\n\n this._wrappingWidth = width;\n this._renderer.updateWrappingWidth();\n this.invalidateHitboxes();\n }\n\n /**\n * Get the wrapping width of the object.\n */\n getWrappingWidth(): float {\n return this._wrappingWidth;\n }\n\n setWrapping(wordWrap: boolean): void {\n if (this._wrapping === wordWrap) return;\n\n this._wrapping = wordWrap;\n this._renderer.updateWordWrap();\n this.invalidateHitboxes();\n }\n\n isWrapping() {\n return this._wrapping;\n }\n\n override getWidth(): float {\n return this._renderer.getWidth();\n }\n\n override getHeight(): float {\n return this._renderer.getHeight();\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 // @ts-ignore\n gdjs.registerObject('BBText::BBText', gdjs.BBTextRuntimeObject);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -67,6 +67,19 @@ module.exports = {
67
67
  .setLabel(_('Alignment'))
68
68
  .setGroup(_('Appearance'));
69
69
 
70
+ if (!objectContent.verticalTextAlignment) {
71
+ objectContent.verticalTextAlignment = 'top';
72
+ }
73
+ objectProperties
74
+ .getOrCreate('verticalTextAlignment')
75
+ .setValue(objectContent.verticalTextAlignment)
76
+ .setType('choice')
77
+ .addExtraInfo('top')
78
+ .addExtraInfo('center')
79
+ .addExtraInfo('bottom')
80
+ .setLabel(_('Vertical alignment'))
81
+ .setGroup(_('Appearance'));
82
+
70
83
  objectProperties
71
84
  .getOrCreate('bitmapFontResourceName')
72
85
  .setValue(objectContent.bitmapFontResourceName)
@@ -97,13 +110,6 @@ module.exports = {
97
110
  .setLabel(_('Font tint'))
98
111
  .setGroup(_('Font'));
99
112
 
100
- objectProperties
101
- .getOrCreate('wordWrap')
102
- .setValue(objectContent.wordWrap ? 'true' : 'false')
103
- .setType('boolean')
104
- .setLabel(_('Word wrapping'))
105
- .setGroup(_('Appearance'));
106
-
107
113
  return objectProperties;
108
114
  };
109
115
  bitmapTextObject.content = {
@@ -115,7 +121,7 @@ module.exports = {
115
121
  bitmapFontResourceName: '',
116
122
  textureAtlasResourceName: '',
117
123
  align: 'left',
118
- wordWrap: true,
124
+ verticalTextAlignment: 'top',
119
125
  };
120
126
 
121
127
  bitmapTextObject.updateInitialInstanceProperty = function (
@@ -341,7 +347,7 @@ module.exports = {
341
347
  _('Alignment ("left", "right" or "center")')
342
348
  )
343
349
  )
344
- .setFunctionName('getAlignment');
350
+ .setFunctionName('getTextAlignment');
345
351
 
346
352
  object
347
353
  .addAction(
@@ -361,36 +367,36 @@ module.exports = {
361
367
  false
362
368
  )
363
369
  .getCodeExtraInformation()
364
- .setFunctionName('setAlignment');
370
+ .setFunctionName('setTextAlignment');
365
371
 
366
372
  object
367
373
  .addCondition(
368
374
  'WordWrap',
369
- _('Word wrap'),
370
- _('Check if word wrap is enabled.'),
371
- _('_PARAM0_ word wrap is enabled'),
375
+ _('Word wrapping'),
376
+ _('Check if word wrapping is enabled.'),
377
+ _('_PARAM0_ word wrapping is enabled'),
372
378
  '',
373
379
  'res/conditions/wordWrap24_black.png',
374
380
  'res/conditions/wordWrap_black.png'
375
381
  )
376
382
  .addParameter('object', _('Bitmap text'), 'BitmapTextObject', false)
377
383
  .getCodeExtraInformation()
378
- .setFunctionName('getWordWrap');
384
+ .setFunctionName('isWrapping');
379
385
 
380
386
  object
381
387
  .addAction(
382
388
  'SetWordWrap',
383
- _('Word wrap'),
389
+ _('Word wrapping'),
384
390
  _('De/activate word wrapping.'),
385
- _('Activate word wrap of _PARAM0_: _PARAM1_'),
391
+ _('Activate word wrapping of _PARAM0_: _PARAM1_'),
386
392
  '',
387
393
  'res/actions/wordWrap24_black.png',
388
394
  'res/actions/wordWrap_black.png'
389
395
  )
390
396
  .addParameter('object', _('Bitmap text'), 'BitmapTextObject', false)
391
- .addParameter('yesorno', _('Activate word wrap'), '', false)
397
+ .addParameter('yesorno', _('Activate word wrapping'), '', false)
392
398
  .getCodeExtraInformation()
393
- .setFunctionName('setWordWrap');
399
+ .setFunctionName('setWrapping');
394
400
 
395
401
  object
396
402
  .addExpressionAndConditionAndAction(
@@ -624,14 +630,16 @@ module.exports = {
624
630
  instance,
625
631
  associatedObjectConfiguration,
626
632
  pixiContainer,
627
- pixiResourcesLoader
633
+ pixiResourcesLoader,
634
+ propertyOverridings
628
635
  ) {
629
636
  super(
630
637
  project,
631
638
  instance,
632
639
  associatedObjectConfiguration,
633
640
  pixiContainer,
634
- pixiResourcesLoader
641
+ pixiResourcesLoader,
642
+ propertyOverridings
635
643
  );
636
644
 
637
645
  // We'll track changes of the font to trigger the loading of the new font.
@@ -657,8 +665,9 @@ module.exports = {
657
665
 
658
666
  // Update the rendered text properties (note: Pixi is only
659
667
  // applying changes if there were changed).
660
- const rawText = object.content.text;
661
- this._pixiObject.text = rawText;
668
+ this._pixiObject.text = this._propertyOverridings.has('Text')
669
+ ? this._propertyOverridings.get('Text')
670
+ : object.content.text;
662
671
 
663
672
  const align = object.content.align;
664
673
  this._pixiObject.align = align;
@@ -704,20 +713,46 @@ module.exports = {
704
713
  }
705
714
 
706
715
  // Set up the wrapping width if enabled.
707
- const wordWrap = object.content.wordWrap;
708
- if (wordWrap && this._instance.hasCustomSize()) {
709
- this._pixiObject.maxWidth =
710
- this.getCustomWidth() / this._pixiObject.scale.x;
711
- this._pixiObject.dirty = true;
712
- } else {
713
- this._pixiObject.maxWidth = 0;
716
+ const oldMaxWidth = this._pixiObject.maxWidth;
717
+ this._pixiObject.maxWidth = this._instance.hasCustomSize()
718
+ ? this.getCustomWidth() / this._pixiObject.scale.x
719
+ : 0;
720
+ if (oldMaxWidth !== this._pixiObject.maxWidth) {
714
721
  this._pixiObject.dirty = true;
715
722
  }
716
723
 
717
- this._pixiObject.position.x =
718
- this._instance.getX() + (this._pixiObject.textWidth * scale) / 2;
724
+ if (this._instance.hasCustomSize()) {
725
+ const alignmentX =
726
+ object.content.align === 'right'
727
+ ? 1
728
+ : object.content.align === 'center'
729
+ ? 0.5
730
+ : 0;
731
+
732
+ const width = this.getCustomWidth();
733
+
734
+ // A vector from the custom size center to the renderer center.
735
+ const centerToCenterX =
736
+ (width - this._pixiObject.width) * (alignmentX - 0.5);
737
+
738
+ this._pixiObject.position.x = this._instance.getX() + width / 2;
739
+ this._pixiObject.anchor.x =
740
+ 0.5 - centerToCenterX / this._pixiObject.width;
741
+ } else {
742
+ this._pixiObject.position.x =
743
+ this._instance.getX() + this._pixiObject.width / 2;
744
+ this._pixiObject.anchor.x = 0.5;
745
+ }
746
+ const alignmentY =
747
+ object.content.verticalTextAlignment === 'bottom'
748
+ ? 1
749
+ : object.content.verticalTextAlignment === 'center'
750
+ ? 0.5
751
+ : 0;
719
752
  this._pixiObject.position.y =
720
- this._instance.getY() + (this._pixiObject.textHeight * scale) / 2;
753
+ this._instance.getY() + this._pixiObject.height * (0.5 - alignmentY);
754
+ this._pixiObject.anchor.y = 0.5;
755
+
721
756
  this._pixiObject.rotation = RenderedInstance.toRad(
722
757
  this._instance.getAngle()
723
758
  );
@@ -738,19 +773,26 @@ module.exports = {
738
773
  releaseBitmapFont(fontName);
739
774
  }
740
775
 
741
- /**
742
- * Return the width of the instance, when it's not resized.
743
- */
744
776
  getDefaultWidth() {
745
777
  return this._pixiObject.width;
746
778
  }
747
779
 
748
- /**
749
- * Return the height of the instance, when it's not resized.
750
- */
751
780
  getDefaultHeight() {
752
781
  return this._pixiObject.height;
753
782
  }
783
+
784
+ getOriginY() {
785
+ const object = gd.castObject(
786
+ this._associatedObjectConfiguration,
787
+ gd.ObjectJsImplementation
788
+ );
789
+ const height = this.getHeight();
790
+ return object.content.verticalTextAlignment === 'bottom'
791
+ ? height
792
+ : object.content.verticalTextAlignment === 'center'
793
+ ? height / 2
794
+ : 0;
795
+ }
754
796
  }
755
797
 
756
798
  objectsRenderingService.registerInstanceRenderer(
@@ -1,2 +1,2 @@
1
- var gdjs;(function(e){class s{constructor(t,i){this._object=t;const a=i.getGame().getBitmapFontManager().obtainBitmapFont(t._bitmapFontResourceName,t._textureAtlasResourceName);this._pixiObject=new PIXI.BitmapText(t._text,{fontName:a.font,fontSize:a.size}),i.getLayer("").getRenderer().addRendererObject(this._pixiObject,t.getZOrder()),this._pixiObject.anchor.x=.5,this._pixiObject.anchor.y=.5,this.updateAlignment(),this.updateTextContent(),this.updateAngle(),this.updateOpacity(),this.updateScale(),this.updateWrappingWidth(),this.updateTint()}getRendererObject(){return this._pixiObject}onDestroy(){this._object.getInstanceContainer().getGame().getBitmapFontManager().releaseBitmapFont(this._pixiObject.fontName),this._pixiObject.destroy()}getFontSize(){return this._pixiObject.fontSize}updateFont(){const t=this._object.getInstanceContainer().getGame().getBitmapFontManager().obtainBitmapFont(this._object._bitmapFontResourceName,this._object._textureAtlasResourceName);this._object.getInstanceContainer().getGame().getBitmapFontManager().releaseBitmapFont(this._pixiObject.fontName),this._pixiObject.fontName=t.font,this._pixiObject.fontSize=t.size,this.updatePosition()}updateTint(){this._pixiObject.tint=e.rgbToHexNumber(this._object._tint[0],this._object._tint[1],this._object._tint[2]),this._pixiObject.dirty=!0}getTint(){return this._object._tint[0]+";"+this._object._tint[1]+";"+this._object._tint[2]}updateScale(){this._pixiObject.scale.set(Math.max(this._object._scaleX,0),Math.max(this._object._scaleY,0)),this.updatePosition()}getScale(){return Math.max(this._pixiObject.scale.x,this._pixiObject.scale.y)}updateWrappingWidth(){this._object._wordWrap?(this._pixiObject.maxWidth=this._object._wrappingWidth/this._object._scaleX,this._pixiObject.dirty=!0):(this._pixiObject.maxWidth=0,this._pixiObject.dirty=!0),this.updatePosition()}updateTextContent(){this._pixiObject.text=this._object._text,this.updatePosition()}updateAlignment(){this._pixiObject.align=this._object._align,this.updatePosition()}updatePosition(){this._pixiObject.position.x=this._object.x+this.getWidth()/2,this._pixiObject.position.y=this._object.y+this.getHeight()/2}updateAngle(){this._pixiObject.rotation=e.toRad(this._object.angle)}updateOpacity(){this._pixiObject.alpha=this._object._opacity/255}getWidth(){return this._pixiObject.textWidth*this.getScale()}getHeight(){return this._pixiObject.textHeight*this.getScale()}}e.BitmapTextRuntimeObjectPixiRenderer=s,e.BitmapTextRuntimeObjectRenderer=s})(gdjs||(gdjs={}));
1
+ var gdjs;(function(s){class n{constructor(t,e){this._object=t;const i=e.getGame().getBitmapFontManager().obtainBitmapFont(t._bitmapFontResourceName,t._textureAtlasResourceName);this._pixiObject=new PIXI.BitmapText(t._text,{fontName:i.font,fontSize:i.size}),e.getLayer("").getRenderer().addRendererObject(this._pixiObject,t.getZOrder()),this.updateAlignment(),this.updateTextContent(),this.updateAngle(),this.updateOpacity(),this.updateScale(),this.updateWrappingWidth(),this.updateTint()}getRendererObject(){return this._pixiObject}onDestroy(){this._object.getInstanceContainer().getGame().getBitmapFontManager().releaseBitmapFont(this._pixiObject.fontName),this._pixiObject.destroy()}getFontSize(){return this._pixiObject.fontSize}updateFont(){const t=this._object.getInstanceContainer().getGame().getBitmapFontManager().obtainBitmapFont(this._object._bitmapFontResourceName,this._object._textureAtlasResourceName);this._object.getInstanceContainer().getGame().getBitmapFontManager().releaseBitmapFont(this._pixiObject.fontName),this._pixiObject.fontName=t.font,this._pixiObject.fontSize=t.size,this.updatePosition()}updateTint(){this._pixiObject.tint=s.rgbToHexNumber(this._object._tint[0],this._object._tint[1],this._object._tint[2]),this._pixiObject.dirty=!0}getTint(){return this._object._tint[0]+";"+this._object._tint[1]+";"+this._object._tint[2]}updateScale(){this._pixiObject.scale.set(Math.max(this._object._scaleX,0),Math.max(this._object._scaleY,0)),this.updatePosition()}getScale(){return Math.max(this._pixiObject.scale.x,this._pixiObject.scale.y)}updateWrappingWidth(){this._object._wrapping?(this._pixiObject.maxWidth=this._object._wrappingWidth/this._object._scaleX,this._pixiObject.dirty=!0):(this._pixiObject.maxWidth=0,this._pixiObject.dirty=!0),this.updatePosition()}updateTextContent(){this._pixiObject.text=this._object._text,this.updatePosition()}updateAlignment(){this._pixiObject.align=this._object._textAlign,this.updatePosition()}updatePosition(){if(this._object.isWrapping()){const e=this._object._textAlign==="right"?1:this._object._textAlign==="center"?.5:0,i=this._object.getWrappingWidth(),a=(i-this._pixiObject.width)*(e-.5);this._pixiObject.position.x=this._object.x+i/2,this._pixiObject.anchor.x=.5-a/this._pixiObject.width}else this._pixiObject.position.x=this._object.x+this._pixiObject.width/2,this._pixiObject.anchor.x=.5;const t=this._object._verticalTextAlignment==="bottom"?1:this._object._verticalTextAlignment==="center"?.5:0;this._pixiObject.position.y=this._object.y+this._pixiObject.height*(.5-t),this._pixiObject.anchor.y=.5}updateAngle(){this._pixiObject.rotation=s.toRad(this._object.angle)}updateOpacity(){this._pixiObject.alpha=this._object._opacity/255}getWidth(){return this._pixiObject.textWidth*this.getScale()}getHeight(){return this._pixiObject.textHeight*this.getScale()}}s.BitmapTextRuntimeObjectPixiRenderer=n,s.BitmapTextRuntimeObjectRenderer=n})(gdjs||(gdjs={}));
2
2
  //# sourceMappingURL=bitmaptextruntimeobject-pixi-renderer.js.map