@vpmedia/phaser 1.113.0 → 1.114.0
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.
|
@@ -29,10 +29,10 @@ export declare class Text extends Image {
|
|
|
29
29
|
* @param {Game} game - The game instance this text belongs to.
|
|
30
30
|
* @param {number} x - The x position of the text.
|
|
31
31
|
* @param {number} y - The y position of the text.
|
|
32
|
-
* @param {string} text - The text content to display.
|
|
32
|
+
* @param {string | number} text - The text content to display.
|
|
33
33
|
* @param {object} style - The style settings for the text.
|
|
34
34
|
*/
|
|
35
|
-
constructor(game: Game, x: number, y: number, text?: string, style?: any);
|
|
35
|
+
constructor(game: Game, x: number, y: number, text?: string | number, style?: any);
|
|
36
36
|
/**
|
|
37
37
|
* Destroys this text object and cleans up resources.
|
|
38
38
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/phaser/display/text.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,qBAAa,IAAK,SAAQ,KAAK;IACd,IAAI,EAAE,MAAM,CAAC;IACrB,MAAM,EAAG,GAAG,CAAC;IACb,OAAO,EAAG,GAAG,CAAC;IACd,OAAO,EAAG,KAAK,CAAC;IAChB,UAAU,EAAG,SAAS,GAAG,IAAI,CAAC;IAC9B,KAAK,EAAG,GAAG,CAAC;IACZ,MAAM,EAAG,GAAG,CAAC;IACb,YAAY,EAAG,GAAG,CAAC;IACnB,UAAU,EAAG,GAAG,CAAC;IACjB,WAAW,EAAG,GAAG,CAAC;IAClB,SAAS,EAAG,OAAO,CAAC;IACpB,eAAe,EAAG,OAAO,CAAC;IAC1B,IAAI,EAAG,MAAM,CAAC;IACd,KAAK,EAAG,MAAM,CAAC;IACf,eAAe,EAAG,GAAG,CAAC;IACtB,YAAY,EAAG,MAAM,CAAC;IACtB,UAAU,EAAG,MAAM,CAAC;IACZ,MAAM,EAAE,GAAG,CAAC;IACZ,OAAO,EAAE,GAAG,CAAC;IACrB,KAAK,EAAG,OAAO,CAAC;IACvB;;;;;;;OAOG;IACH,YAAmB,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/phaser/display/text.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vpmedia/phaser",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.114.0",
|
|
4
4
|
"description": "@vpmedia/phaser is the modern ECMAScript port of the popular Phaser game engine v2.6.2",
|
|
5
5
|
"author": "Andras Csizmadia <andras@vpmedia.hu> (www.vpmedia.hu)",
|
|
6
6
|
"license": "MIT",
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { afterAll, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
2
|
+
import type { Game } from '../core/game.js';
|
|
3
|
+
import { getRegistry } from '../core/registry.js';
|
|
4
|
+
import { Text } from './text.js';
|
|
5
|
+
import { textureFromCanvas } from './webgl/texture_util.js';
|
|
6
|
+
|
|
7
|
+
// happy-dom has no 2D canvas implementation, so Text cannot be constructed without one. This is the
|
|
8
|
+
// smallest surface updateText() touches.
|
|
9
|
+
const createContext2D = (): CanvasRenderingContext2D =>
|
|
10
|
+
({
|
|
11
|
+
font: '',
|
|
12
|
+
fillStyle: '',
|
|
13
|
+
strokeStyle: '',
|
|
14
|
+
textBaseline: '',
|
|
15
|
+
lineWidth: 0,
|
|
16
|
+
lineJoin: '',
|
|
17
|
+
globalAlpha: 1,
|
|
18
|
+
measureText: (value: string) => ({
|
|
19
|
+
width: value.length * 8,
|
|
20
|
+
actualBoundingBoxAscent: 8,
|
|
21
|
+
actualBoundingBoxDescent: 2,
|
|
22
|
+
}),
|
|
23
|
+
clearRect: vi.fn(),
|
|
24
|
+
fillRect: vi.fn(),
|
|
25
|
+
fillText: vi.fn(),
|
|
26
|
+
strokeText: vi.fn(),
|
|
27
|
+
save: vi.fn(),
|
|
28
|
+
restore: vi.fn(),
|
|
29
|
+
scale: vi.fn(),
|
|
30
|
+
translate: vi.fn(),
|
|
31
|
+
setTransform: vi.fn(),
|
|
32
|
+
getImageData: () => ({ data: new Uint8ClampedArray(4) }),
|
|
33
|
+
putImageData: vi.fn(),
|
|
34
|
+
}) as unknown as CanvasRenderingContext2D;
|
|
35
|
+
|
|
36
|
+
const createGame = (): Game =>
|
|
37
|
+
({
|
|
38
|
+
renderer: { resolution: 1 },
|
|
39
|
+
cache: { getImage: () => null },
|
|
40
|
+
add: { existing: (child: unknown) => child },
|
|
41
|
+
}) as unknown as Game;
|
|
42
|
+
|
|
43
|
+
const createText = (value: string | number): Text => new Text(createGame(), 0, 0, value);
|
|
44
|
+
|
|
45
|
+
describe('Text', () => {
|
|
46
|
+
const originalGetContext = HTMLCanvasElement.prototype.getContext;
|
|
47
|
+
|
|
48
|
+
beforeAll(() => {
|
|
49
|
+
HTMLCanvasElement.prototype.getContext = function getContext(this: HTMLCanvasElement, id: string) {
|
|
50
|
+
return id === '2d' ? createContext2D() : null;
|
|
51
|
+
} as typeof HTMLCanvasElement.prototype.getContext;
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
beforeEach(() => {
|
|
55
|
+
getRegistry().CACHE_MISSING_IMAGE = textureFromCanvas(document.createElement('canvas'));
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
afterAll(() => {
|
|
59
|
+
HTMLCanvasElement.prototype.getContext = originalGetContext;
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
describe('constructor', () => {
|
|
63
|
+
it('keeps a string as-is', () => {
|
|
64
|
+
expect(createText('hello').text).toBe('hello');
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
// The game clients pass numbers straight into game.add.text(). The constructor must coerce:
|
|
68
|
+
// updateText() calls .split() on the value, which throws on a number.
|
|
69
|
+
it('coerces a number to its string form', () => {
|
|
70
|
+
expect(createText(42).text).toBe('42');
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it('coerces zero rather than falling back to the empty string', () => {
|
|
74
|
+
expect(createText(0).text).toBe('0');
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
it('coerces a negative number', () => {
|
|
78
|
+
expect(createText(-7).text).toBe('-7');
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it('defaults to the empty string', () => {
|
|
82
|
+
expect(new Text(createGame(), 0, 0).text).toBe('');
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
it('renders a numeric label without throwing', () => {
|
|
86
|
+
expect(() => createText(2026)).not.toThrow();
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
describe('text setter', () => {
|
|
91
|
+
it('coerces a number assigned after construction', () => {
|
|
92
|
+
const text = createText('start');
|
|
93
|
+
text.text = 99;
|
|
94
|
+
expect(text.text).toBe('99');
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
describe('setText', () => {
|
|
99
|
+
it('coerces a number', () => {
|
|
100
|
+
const text = createText('start');
|
|
101
|
+
text.setText(123);
|
|
102
|
+
expect(text.text).toBe('123');
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
it('returns itself for chaining', () => {
|
|
106
|
+
const text = createText('start');
|
|
107
|
+
expect(text.setText('next')).toBe(text);
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
});
|
|
@@ -36,10 +36,10 @@ export class Text extends Image {
|
|
|
36
36
|
* @param {Game} game - The game instance this text belongs to.
|
|
37
37
|
* @param {number} x - The x position of the text.
|
|
38
38
|
* @param {number} y - The y position of the text.
|
|
39
|
-
* @param {string} text - The text content to display.
|
|
39
|
+
* @param {string | number} text - The text content to display.
|
|
40
40
|
* @param {object} style - The style settings for the text.
|
|
41
41
|
*/
|
|
42
|
-
public constructor(game: Game, x: number, y: number, text = '', style: any = {}) {
|
|
42
|
+
public constructor(game: Game, x: number, y: number, text: string | number = '', style: any = {}) {
|
|
43
43
|
super(game, x, y, null);
|
|
44
44
|
this.game = game;
|
|
45
45
|
/** @type {number} */
|
|
@@ -60,7 +60,7 @@ export class Text extends Image {
|
|
|
60
60
|
this.autoRound = false;
|
|
61
61
|
this.useAdvancedWrap = false;
|
|
62
62
|
this._res = game.renderer.resolution;
|
|
63
|
-
this._text = text;
|
|
63
|
+
this._text = text.toString();
|
|
64
64
|
this._fontComponents = null;
|
|
65
65
|
/** @type {number} */
|
|
66
66
|
this._lineSpacing = 0;
|