@vpmedia/phaser 1.116.0 → 1.118.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.
- package/dist/index.js +195 -229
- package/dist/index.js.map +1 -1
- package/dist/phaser/core/animation.d.ts.map +1 -1
- package/dist/phaser/core/animation_manager.d.ts +16 -15
- package/dist/phaser/core/animation_manager.d.ts.map +1 -1
- package/dist/phaser/core/animation_parser.d.ts.map +1 -1
- package/dist/phaser/core/array_set.d.ts.map +1 -1
- package/dist/phaser/core/cache.d.ts +76 -47
- package/dist/phaser/core/cache.d.ts.map +1 -1
- package/dist/phaser/core/device_util.d.ts.map +1 -1
- package/dist/phaser/core/dom.d.ts.map +1 -1
- package/dist/phaser/core/factory.d.ts.map +1 -1
- package/dist/phaser/core/game.d.ts.map +1 -1
- package/dist/phaser/core/input.d.ts +17 -17
- package/dist/phaser/core/input.d.ts.map +1 -1
- package/dist/phaser/core/input_handler.d.ts +11 -13
- package/dist/phaser/core/input_handler.d.ts.map +1 -1
- package/dist/phaser/core/input_mouse.d.ts.map +1 -1
- package/dist/phaser/core/input_mspointer.d.ts +8 -7
- package/dist/phaser/core/input_mspointer.d.ts.map +1 -1
- package/dist/phaser/core/input_pointer.d.ts +19 -8
- package/dist/phaser/core/input_pointer.d.ts.map +1 -1
- package/dist/phaser/core/input_touch.d.ts.map +1 -1
- package/dist/phaser/core/loader.d.ts +30 -1
- package/dist/phaser/core/loader.d.ts.map +1 -1
- package/dist/phaser/core/loader_parser.d.ts +24 -4
- package/dist/phaser/core/loader_parser.d.ts.map +1 -1
- package/dist/phaser/core/raf.d.ts.map +1 -1
- package/dist/phaser/core/scale_manager.d.ts +37 -12
- package/dist/phaser/core/scale_manager.d.ts.map +1 -1
- package/dist/phaser/core/scene.d.ts.map +1 -1
- package/dist/phaser/core/scene_manager.d.ts.map +1 -1
- package/dist/phaser/core/signal.d.ts.map +1 -1
- package/dist/phaser/core/signal_binding.d.ts.map +1 -1
- package/dist/phaser/core/sound.d.ts +15 -5
- package/dist/phaser/core/sound.d.ts.map +1 -1
- package/dist/phaser/core/sound_manager.d.ts +24 -22
- package/dist/phaser/core/sound_manager.d.ts.map +1 -1
- package/dist/phaser/core/sound_sprite.d.ts.map +1 -1
- package/dist/phaser/core/stage.d.ts.map +1 -1
- package/dist/phaser/core/time.d.ts.map +1 -1
- package/dist/phaser/core/timer.d.ts +1 -1
- package/dist/phaser/core/timer.d.ts.map +1 -1
- package/dist/phaser/core/tween.d.ts +3 -3
- package/dist/phaser/core/tween.d.ts.map +1 -1
- package/dist/phaser/core/tween_data.d.ts +26 -26
- package/dist/phaser/core/tween_data.d.ts.map +1 -1
- package/dist/phaser/core/tween_manager.d.ts +8 -6
- package/dist/phaser/core/tween_manager.d.ts.map +1 -1
- package/dist/phaser/core/world.d.ts.map +1 -1
- package/dist/phaser/display/bitmap_text.d.ts +13 -8
- package/dist/phaser/display/bitmap_text.d.ts.map +1 -1
- package/dist/phaser/display/button.d.ts.map +1 -1
- package/dist/phaser/display/canvas/buffer.d.ts.map +1 -1
- package/dist/phaser/display/canvas/graphics.d.ts.map +1 -1
- package/dist/phaser/display/canvas/masker.d.ts.map +1 -1
- package/dist/phaser/display/canvas/pool.d.ts.map +1 -1
- package/dist/phaser/display/canvas/renderer.d.ts.map +1 -1
- package/dist/phaser/display/canvas/tinter.d.ts +3 -2
- package/dist/phaser/display/canvas/tinter.d.ts.map +1 -1
- package/dist/phaser/display/canvas/util.d.ts.map +1 -1
- package/dist/phaser/display/display_object.d.ts.map +1 -1
- package/dist/phaser/display/graphics.d.ts.map +1 -1
- package/dist/phaser/display/graphics_data.d.ts.map +1 -1
- package/dist/phaser/display/graphics_data_util.d.ts.map +1 -1
- package/dist/phaser/display/group.d.ts.map +1 -1
- package/dist/phaser/display/image.d.ts +2 -2
- package/dist/phaser/display/image.d.ts.map +1 -1
- package/dist/phaser/display/sprite_util.d.ts.map +1 -1
- package/dist/phaser/display/text.d.ts.map +1 -1
- package/dist/phaser/display/webgl/abstract_filter.d.ts.map +1 -1
- package/dist/phaser/display/webgl/base_texture.d.ts +12 -10
- package/dist/phaser/display/webgl/base_texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/blend_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/earcut.d.ts.map +1 -1
- package/dist/phaser/display/webgl/fast_sprite_batch.d.ts +13 -12
- package/dist/phaser/display/webgl/fast_sprite_batch.d.ts.map +1 -1
- package/dist/phaser/display/webgl/filter_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/filter_texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/graphics.d.ts +9 -7
- package/dist/phaser/display/webgl/graphics.d.ts.map +1 -1
- package/dist/phaser/display/webgl/graphics_data.d.ts.map +1 -1
- package/dist/phaser/display/webgl/mask_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/render_texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/renderer.d.ts +12 -10
- package/dist/phaser/display/webgl/renderer.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader/normal.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/sprite_batch.d.ts.map +1 -1
- package/dist/phaser/display/webgl/stencil_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/texture.d.ts +18 -33
- package/dist/phaser/display/webgl/texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/texture_util.d.ts.map +1 -1
- package/dist/phaser/display/webgl/util.d.ts.map +1 -1
- package/dist/phaser/geom/circle.d.ts.map +1 -1
- package/dist/phaser/geom/ellipse.d.ts.map +1 -1
- package/dist/phaser/geom/line.d.ts.map +1 -1
- package/dist/phaser/geom/matrix.d.ts +1 -1
- package/dist/phaser/geom/matrix.d.ts.map +1 -1
- package/dist/phaser/geom/point.d.ts.map +1 -1
- package/dist/phaser/geom/polygon.d.ts.map +1 -1
- package/dist/phaser/geom/rectangle.d.ts.map +1 -1
- package/dist/phaser/geom/rounded_rectangle.d.ts.map +1 -1
- package/dist/phaser/geom/util/circle.d.ts.map +1 -1
- package/dist/phaser/geom/util/ellipse.d.ts.map +1 -1
- package/dist/phaser/geom/util/line.d.ts +5 -4
- package/dist/phaser/geom/util/line.d.ts.map +1 -1
- package/dist/phaser/geom/util/matrix.d.ts.map +1 -1
- package/dist/phaser/geom/util/point.d.ts.map +1 -1
- package/dist/phaser/geom/util/polygon.d.ts.map +1 -1
- package/dist/phaser/geom/util/rectangle.d.ts +10 -1
- package/dist/phaser/geom/util/rectangle.d.ts.map +1 -1
- package/dist/phaser/geom/util/rounded_rectangle.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/phaser/core/animation.ts +20 -20
- package/src/phaser/core/animation_manager.ts +27 -24
- package/src/phaser/core/animation_parser.ts +2 -2
- package/src/phaser/core/array_set.ts +7 -7
- package/src/phaser/core/cache.test.ts +201 -0
- package/src/phaser/core/cache.ts +174 -130
- package/src/phaser/core/device_util.ts +13 -13
- package/src/phaser/core/dom.ts +26 -22
- package/src/phaser/core/factory.ts +6 -6
- package/src/phaser/core/game.ts +10 -10
- package/src/phaser/core/input.ts +36 -38
- package/src/phaser/core/input_handler.ts +90 -93
- package/src/phaser/core/input_mouse.ts +19 -19
- package/src/phaser/core/input_mspointer.ts +25 -28
- package/src/phaser/core/input_pointer.ts +37 -28
- package/src/phaser/core/input_touch.ts +17 -17
- package/src/phaser/core/loader.ts +132 -92
- package/src/phaser/core/loader_parser.test.ts +115 -0
- package/src/phaser/core/loader_parser.ts +66 -38
- package/src/phaser/core/raf.ts +3 -3
- package/src/phaser/core/scale_manager.ts +86 -67
- package/src/phaser/core/scene.ts +7 -7
- package/src/phaser/core/scene_manager.ts +16 -16
- package/src/phaser/core/signal.ts +29 -19
- package/src/phaser/core/signal_binding.ts +4 -4
- package/src/phaser/core/sound.ts +45 -33
- package/src/phaser/core/sound_manager.ts +72 -73
- package/src/phaser/core/sound_sprite.ts +1 -1
- package/src/phaser/core/stage.ts +7 -7
- package/src/phaser/core/time.ts +16 -16
- package/src/phaser/core/timer.ts +36 -26
- package/src/phaser/core/tween.ts +29 -29
- package/src/phaser/core/tween_data.ts +41 -37
- package/src/phaser/core/tween_manager.ts +50 -43
- package/src/phaser/core/world.ts +1 -1
- package/src/phaser/display/bitmap_text.test.ts +212 -0
- package/src/phaser/display/bitmap_text.ts +52 -37
- package/src/phaser/display/button.ts +13 -13
- package/src/phaser/display/canvas/buffer.ts +3 -3
- package/src/phaser/display/canvas/graphics.ts +3 -3
- package/src/phaser/display/canvas/masker.ts +2 -2
- package/src/phaser/display/canvas/pool.ts +6 -6
- package/src/phaser/display/canvas/renderer.ts +6 -6
- package/src/phaser/display/canvas/tinter.ts +39 -8
- package/src/phaser/display/canvas/util.ts +15 -9
- package/src/phaser/display/display_object.ts +38 -38
- package/src/phaser/display/graphics.ts +30 -30
- package/src/phaser/display/graphics_data.ts +1 -1
- package/src/phaser/display/graphics_data_util.ts +1 -1
- package/src/phaser/display/group.ts +16 -16
- package/src/phaser/display/image.ts +30 -26
- package/src/phaser/display/sprite_util.ts +12 -4
- package/src/phaser/display/text.ts +55 -55
- package/src/phaser/display/webgl/abstract_filter.ts +1 -1
- package/src/phaser/display/webgl/base_texture.ts +22 -18
- package/src/phaser/display/webgl/blend_manager.ts +3 -3
- package/src/phaser/display/webgl/earcut.ts +3 -3
- package/src/phaser/display/webgl/fast_sprite_batch.ts +26 -24
- package/src/phaser/display/webgl/filter_manager.ts +7 -7
- package/src/phaser/display/webgl/filter_texture.ts +3 -3
- package/src/phaser/display/webgl/graphics.ts +43 -41
- package/src/phaser/display/webgl/graphics_data.ts +2 -2
- package/src/phaser/display/webgl/mask_manager.ts +2 -2
- package/src/phaser/display/webgl/render_texture.ts +6 -6
- package/src/phaser/display/webgl/renderer.ts +20 -25
- package/src/phaser/display/webgl/shader/normal.ts +3 -3
- package/src/phaser/display/webgl/shader_manager.ts +2 -2
- package/src/phaser/display/webgl/sprite_batch.ts +9 -9
- package/src/phaser/display/webgl/stencil_manager.ts +4 -4
- package/src/phaser/display/webgl/texture.ts +23 -42
- package/src/phaser/display/webgl/texture_util.ts +2 -2
- package/src/phaser/display/webgl/util.ts +11 -7
- package/src/phaser/geom/circle.ts +21 -21
- package/src/phaser/geom/ellipse.ts +7 -7
- package/src/phaser/geom/line.ts +29 -29
- package/src/phaser/geom/matrix.ts +13 -13
- package/src/phaser/geom/point.ts +36 -30
- package/src/phaser/geom/polygon.ts +6 -6
- package/src/phaser/geom/rectangle.ts +42 -42
- package/src/phaser/geom/rounded_rectangle.ts +2 -2
- package/src/phaser/geom/util/circle.ts +7 -7
- package/src/phaser/geom/util/ellipse.ts +1 -1
- package/src/phaser/geom/util/line.ts +13 -5
- package/src/phaser/geom/util/matrix.ts +3 -3
- package/src/phaser/geom/util/point.ts +20 -20
- package/src/phaser/geom/util/polygon.ts +1 -1
- package/src/phaser/geom/util/rectangle.ts +34 -17
- package/src/phaser/geom/util/rounded_rectangle.ts +1 -1
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import type { BaseTexture } from '../display/webgl/base_texture.js';
|
|
3
|
+
import { bitmapFont, jsonBitmapFont, xmlBitmapFont } from './loader_parser.js';
|
|
4
|
+
|
|
5
|
+
const baseTexture = { width: 256, height: 256 } as unknown as BaseTexture;
|
|
6
|
+
|
|
7
|
+
const parseXml = (markup: string): XMLDocument => new DOMParser().parseFromString(markup, 'text/xml');
|
|
8
|
+
|
|
9
|
+
const FONT_XML = `<?xml version="1.0"?>
|
|
10
|
+
<font>
|
|
11
|
+
<info face="Arial" size="32" />
|
|
12
|
+
<common lineHeight="40" />
|
|
13
|
+
<chars>
|
|
14
|
+
<char id="65" x="0" y="0" width="20" height="30" xoffset="1" yoffset="2" xadvance="21" />
|
|
15
|
+
<char id="66" x="20" y="0" width="22" height="30" xoffset="0" yoffset="2" xadvance="23" />
|
|
16
|
+
</chars>
|
|
17
|
+
<kernings>
|
|
18
|
+
<kerning first="65" second="66" amount="-3" />
|
|
19
|
+
</kernings>
|
|
20
|
+
</font>`;
|
|
21
|
+
|
|
22
|
+
const FONT_JSON = {
|
|
23
|
+
font: {
|
|
24
|
+
info: { _face: 'Arial', _size: '32' },
|
|
25
|
+
common: { _lineHeight: '40' },
|
|
26
|
+
chars: {
|
|
27
|
+
char: [
|
|
28
|
+
{ _id: '65', _x: '0', _y: '0', _width: '20', _height: '30', _xoffset: '1', _yoffset: '2', _xadvance: '21' },
|
|
29
|
+
{ _id: '66', _x: '20', _y: '0', _width: '22', _height: '30', _xoffset: '0', _yoffset: '2', _xadvance: '23' },
|
|
30
|
+
],
|
|
31
|
+
},
|
|
32
|
+
kernings: { kerning: [{ _first: '65', _second: '66', _amount: '-3' }] },
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
describe('bitmap font parsing', () => {
|
|
37
|
+
describe('xmlBitmapFont', () => {
|
|
38
|
+
it('reads the font metrics', () => {
|
|
39
|
+
const data = xmlBitmapFont(parseXml(FONT_XML), baseTexture, 0, 0);
|
|
40
|
+
expect(data.font).toBe('Arial');
|
|
41
|
+
expect(data.size).toBe(32);
|
|
42
|
+
expect(data.lineHeight).toBe(40);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it('reads every glyph, keyed by character code', () => {
|
|
46
|
+
const data = xmlBitmapFont(parseXml(FONT_XML), baseTexture, 0, 0);
|
|
47
|
+
expect(Object.keys(data.chars)).toStrictEqual(['65', '66']);
|
|
48
|
+
expect(data.chars[65]).toMatchObject({ x: 0, y: 0, width: 20, height: 30, xOffset: 1, yOffset: 2 });
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it('adds the spacing arguments to advance and line height', () => {
|
|
52
|
+
const data = xmlBitmapFont(parseXml(FONT_XML), baseTexture, 5, 7);
|
|
53
|
+
expect(data.chars[65]?.xAdvance).toBe(26);
|
|
54
|
+
expect(data.lineHeight).toBe(47);
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
it('records kerning against the second character of the pair', () => {
|
|
58
|
+
const data = xmlBitmapFont(parseXml(FONT_XML), baseTexture, 0, 0);
|
|
59
|
+
expect(data.chars[66]?.kerning[65]).toBe(-3);
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
it('attaches a texture to every glyph', () => {
|
|
63
|
+
const data = xmlBitmapFont(parseXml(FONT_XML), baseTexture, 0, 0);
|
|
64
|
+
expect(data.chars[65]?.texture).toBeDefined();
|
|
65
|
+
expect(data.chars[66]?.texture).toBeDefined();
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
it('survives a font with no kerning table', () => {
|
|
69
|
+
const markup = FONT_XML.replace(/<kernings>[\s\S]*<\/kernings>/, '');
|
|
70
|
+
expect(() => xmlBitmapFont(parseXml(markup), baseTexture, 0, 0)).not.toThrow();
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it('ignores kerning that names a character the font does not have', () => {
|
|
74
|
+
const markup = FONT_XML.replace('second="66"', 'second="999"');
|
|
75
|
+
const data = xmlBitmapFont(parseXml(markup), baseTexture, 0, 0);
|
|
76
|
+
expect(data.chars[66]?.kerning).toStrictEqual({});
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
it('falls back to an empty face when the info element is missing', () => {
|
|
80
|
+
const markup = FONT_XML.replace(/<info[^>]*\/>/, '');
|
|
81
|
+
expect(xmlBitmapFont(parseXml(markup), baseTexture, 0, 0).font).toBe('');
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
describe('jsonBitmapFont', () => {
|
|
86
|
+
it('reads the same metrics as the xml form', () => {
|
|
87
|
+
const data = jsonBitmapFont(FONT_JSON, baseTexture, 0, 0);
|
|
88
|
+
expect(data.font).toBe('Arial');
|
|
89
|
+
expect(data.size).toBe(32);
|
|
90
|
+
expect(data.lineHeight).toBe(40);
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
it('produces the same glyphs as the xml form', () => {
|
|
94
|
+
const fromJson = jsonBitmapFont(FONT_JSON, baseTexture, 0, 0);
|
|
95
|
+
const fromXml = xmlBitmapFont(parseXml(FONT_XML), baseTexture, 0, 0);
|
|
96
|
+
for (const code of [65, 66]) {
|
|
97
|
+
expect(fromJson.chars[code]).toMatchObject({
|
|
98
|
+
x: fromXml.chars[code]!.x,
|
|
99
|
+
width: fromXml.chars[code]!.width,
|
|
100
|
+
xAdvance: fromXml.chars[code]!.xAdvance,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
it('records the same kerning as the xml form', () => {
|
|
106
|
+
expect(jsonBitmapFont(FONT_JSON, baseTexture, 0, 0).chars[66]?.kerning[65]).toBe(-3);
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
describe('bitmapFont', () => {
|
|
111
|
+
it('parses the xml form', () => {
|
|
112
|
+
expect(bitmapFont(parseXml(FONT_XML), baseTexture, 0, 0).font).toBe('Arial');
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
});
|
|
@@ -2,17 +2,37 @@ import { Texture } from '../display/webgl/texture.js';
|
|
|
2
2
|
import { Rectangle } from '../geom/rectangle.js';
|
|
3
3
|
import type { BaseTexture } from '../display/webgl/base_texture.js';
|
|
4
4
|
|
|
5
|
+
/** One glyph in a bitmap font, as parsed from the font descriptor. */
|
|
6
|
+
export type BitmapFontChar = {
|
|
7
|
+
x: number;
|
|
8
|
+
y: number;
|
|
9
|
+
width: number;
|
|
10
|
+
height: number;
|
|
11
|
+
xOffset: number;
|
|
12
|
+
yOffset: number;
|
|
13
|
+
xAdvance: number;
|
|
14
|
+
kerning: Record<number, number>;
|
|
15
|
+
texture?: Texture;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
/** A parsed bitmap font: its metrics and the glyphs it can draw. */
|
|
19
|
+
export type BitmapFontData = {
|
|
20
|
+
font: string;
|
|
21
|
+
size: number;
|
|
22
|
+
lineHeight: number;
|
|
23
|
+
chars: Record<number, BitmapFontChar>;
|
|
24
|
+
};
|
|
25
|
+
|
|
5
26
|
/**
|
|
6
27
|
* Finalizes bitmap font data by attaching textures to characters.
|
|
7
28
|
* @param {BaseTexture} baseTexture - The base texture for the font.
|
|
8
29
|
* @param {object} bitmapFontData - The bitmap font data to finalize.
|
|
9
30
|
* @returns {object} The finalized bitmap font data.
|
|
10
31
|
*/
|
|
11
|
-
export const finalizeBitmapFont = (baseTexture: BaseTexture, bitmapFontData:
|
|
12
|
-
Object.
|
|
13
|
-
const letter = bitmapFontData.chars[charCode];
|
|
32
|
+
export const finalizeBitmapFont = (baseTexture: BaseTexture, bitmapFontData: BitmapFontData): BitmapFontData => {
|
|
33
|
+
for (const letter of Object.values(bitmapFontData.chars)) {
|
|
14
34
|
letter.texture = new Texture(baseTexture, new Rectangle(letter.x, letter.y, letter.width, letter.height));
|
|
15
|
-
}
|
|
35
|
+
}
|
|
16
36
|
return bitmapFontData;
|
|
17
37
|
};
|
|
18
38
|
|
|
@@ -24,34 +44,38 @@ export const finalizeBitmapFont = (baseTexture: BaseTexture, bitmapFontData: any
|
|
|
24
44
|
* @param {number} ySpacing - Vertical spacing between characters.
|
|
25
45
|
* @returns {object} The parsed bitmap font data.
|
|
26
46
|
*/
|
|
27
|
-
export const xmlBitmapFont = (
|
|
28
|
-
|
|
47
|
+
export const xmlBitmapFont = (
|
|
48
|
+
xml: XMLDocument,
|
|
49
|
+
baseTexture: BaseTexture,
|
|
50
|
+
xSpacing: number,
|
|
51
|
+
ySpacing: number
|
|
52
|
+
): BitmapFontData => {
|
|
29
53
|
const info = xml.querySelectorAll('info')[0];
|
|
30
54
|
const common = xml.querySelectorAll('common')[0];
|
|
31
|
-
|
|
32
|
-
data
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
55
|
+
const attr = (element: Element | undefined, name: string): number => Math.trunc(Number(element?.getAttribute(name)));
|
|
56
|
+
const data: BitmapFontData = {
|
|
57
|
+
font: info?.getAttribute('face') ?? '',
|
|
58
|
+
size: attr(info, 'size'),
|
|
59
|
+
lineHeight: attr(common, 'lineHeight') + ySpacing,
|
|
60
|
+
chars: {},
|
|
61
|
+
};
|
|
62
|
+
for (const letter of xml.querySelectorAll('char')) {
|
|
63
|
+
data.chars[attr(letter, 'id')] = {
|
|
64
|
+
x: attr(letter, 'x'),
|
|
65
|
+
y: attr(letter, 'y'),
|
|
66
|
+
width: attr(letter, 'width'),
|
|
67
|
+
height: attr(letter, 'height'),
|
|
68
|
+
xOffset: attr(letter, 'xoffset'),
|
|
69
|
+
yOffset: attr(letter, 'yoffset'),
|
|
70
|
+
xAdvance: attr(letter, 'xadvance') + xSpacing,
|
|
46
71
|
kerning: {},
|
|
47
72
|
};
|
|
48
73
|
}
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
data.chars[second].kerning[first] = amount;
|
|
74
|
+
for (const kerning of xml.querySelectorAll('kerning')) {
|
|
75
|
+
const char = data.chars[attr(kerning, 'second')];
|
|
76
|
+
if (char) {
|
|
77
|
+
char.kerning[attr(kerning, 'first')] = attr(kerning, 'amount');
|
|
78
|
+
}
|
|
55
79
|
}
|
|
56
80
|
return finalizeBitmapFont(baseTexture, data);
|
|
57
81
|
};
|
|
@@ -64,8 +88,12 @@ export const xmlBitmapFont = (xml: any, baseTexture: BaseTexture, xSpacing: numb
|
|
|
64
88
|
* @param {number} ySpacing - Vertical spacing between characters.
|
|
65
89
|
* @returns {object} The parsed bitmap font data.
|
|
66
90
|
*/
|
|
67
|
-
export const bitmapFont = (
|
|
68
|
-
|
|
91
|
+
export const bitmapFont = (
|
|
92
|
+
xml: XMLDocument,
|
|
93
|
+
baseTexture: BaseTexture,
|
|
94
|
+
xSpacing: number,
|
|
95
|
+
ySpacing: number
|
|
96
|
+
): BitmapFontData => xmlBitmapFont(xml, baseTexture, xSpacing, ySpacing);
|
|
69
97
|
|
|
70
98
|
/**
|
|
71
99
|
* Parses JSON bitmap font data.
|
|
@@ -75,19 +103,19 @@ export const bitmapFont = (xml: any, baseTexture: BaseTexture, xSpacing: number,
|
|
|
75
103
|
* @param {number} ySpacing - Vertical spacing between characters.
|
|
76
104
|
* @returns {object} The parsed bitmap font data.
|
|
77
105
|
*/
|
|
78
|
-
export const jsonBitmapFont = (
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
106
|
+
export const jsonBitmapFont = (
|
|
107
|
+
json: any,
|
|
108
|
+
baseTexture: BaseTexture,
|
|
109
|
+
xSpacing: number,
|
|
110
|
+
ySpacing: number
|
|
111
|
+
): BitmapFontData => {
|
|
112
|
+
const data: BitmapFontData = {
|
|
85
113
|
font: json.font.info._face,
|
|
86
114
|
size: Math.trunc(Number(json.font.info._size)),
|
|
87
115
|
lineHeight: Math.trunc(Number(json.font.common._lineHeight)) + ySpacing,
|
|
88
116
|
chars: {},
|
|
89
117
|
};
|
|
90
|
-
json.font.chars.char.forEach((letter: Record<string, string>) => {
|
|
118
|
+
json.font.chars.char.forEach((letter: Record<string, string>): void => {
|
|
91
119
|
const charCode = Math.trunc(Number(letter['_id']));
|
|
92
120
|
data.chars[charCode] = {
|
|
93
121
|
x: Math.trunc(Number(letter['_x'])),
|
|
@@ -101,7 +129,7 @@ export const jsonBitmapFont = (json: any, baseTexture: BaseTexture, xSpacing: nu
|
|
|
101
129
|
};
|
|
102
130
|
});
|
|
103
131
|
if (json.font.kernings && json.font.kernings.kerning) {
|
|
104
|
-
json.font.kernings.kerning.forEach((kerning: Record<string, string>) => {
|
|
132
|
+
json.font.kernings.kerning.forEach((kerning: Record<string, string>): void => {
|
|
105
133
|
const char = data.chars[Math.trunc(Number(kerning['_second']))];
|
|
106
134
|
if (char) {
|
|
107
135
|
char.kerning[Math.trunc(Number(kerning['_first']))] = Math.trunc(Number(kerning['_amount']));
|
package/src/phaser/core/raf.ts
CHANGED
|
@@ -15,14 +15,14 @@ export class RequestAnimationFrame {
|
|
|
15
15
|
/**
|
|
16
16
|
* Starts an animation frame request.
|
|
17
17
|
*/
|
|
18
|
-
public start = () => {
|
|
18
|
+
public start = (): void => {
|
|
19
19
|
this.rafId = requestAnimationFrame(this.update);
|
|
20
20
|
};
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* Cancels an animation frame request.
|
|
24
24
|
*/
|
|
25
|
-
public stop = () => {
|
|
25
|
+
public stop = (): void => {
|
|
26
26
|
cancelAnimationFrame(this.rafId);
|
|
27
27
|
};
|
|
28
28
|
|
|
@@ -30,7 +30,7 @@ export class RequestAnimationFrame {
|
|
|
30
30
|
* Performs an animation frame request.
|
|
31
31
|
* @param {number} rafTime - The timestamp provided by the browser's animation frame.
|
|
32
32
|
*/
|
|
33
|
-
public update = (rafTime: number) => {
|
|
33
|
+
public update = (rafTime: number): void => {
|
|
34
34
|
this.game.update(rafTime);
|
|
35
35
|
this.rafId = requestAnimationFrame(this.update);
|
|
36
36
|
};
|