mirror of
https://github.com/photonstorm/phaser
synced 2024-12-21 02:23:29 +00:00
177 lines
4.9 KiB
JavaScript
177 lines
4.9 KiB
JavaScript
var GetValue = require('../../utils/object/GetValue');
|
|
|
|
// * @param {number} characterWidth - The width of each character in the font set.
|
|
// * @param {number} characterHeight - The height of each character in the font set.
|
|
// * @param {string} chars - The characters used in the font set, in display order. You can use the TEXT_SET consts for common font set arrangements.
|
|
// * @param {number} [charsPerRow] - The number of characters per row in the font set. If not given charsPerRow will be the image width / characterWidth.
|
|
// * @param {number} [xSpacing=0] - If the characters in the font set have horizontal spacing between them set the required amount here.
|
|
// * @param {number} [ySpacing=0] - If the characters in the font set have vertical spacing between them set the required amount here.
|
|
// * @param {number} [xOffset=0] - If the font set doesn't start at the top left of the given image, specify the X coordinate offset here.
|
|
// * @param {number} [yOffset=0] - If the font set doesn't start at the top left of the given image, specify the Y coordinate offset here.
|
|
// Phaser.GameObject.RetroFont = function (game, key, characterWidth, characterHeight, chars, charsPerRow, xSpacing, ySpacing, xOffset, yOffset)
|
|
|
|
// {
|
|
// image: key,
|
|
// width: 32,
|
|
// height: 32,
|
|
// chars: 'string',
|
|
// charsPerRow: null,
|
|
// spacing: { x: 0, y: 0 },
|
|
// offset: { x: 0, y: 0 }
|
|
// }
|
|
|
|
var ParseRetroFont = function (state, config)
|
|
{
|
|
var w = config.width;
|
|
var h = config.height;
|
|
var cx = Math.floor(w / 2);
|
|
var cy = Math.floor(h / 2);
|
|
var letters = config.chars;
|
|
|
|
var key = GetValue(config, 'image', '');
|
|
var offsetX = GetValue(config, 'offset.x', 0);
|
|
var offsetY = GetValue(config, 'offset.y', 0);
|
|
var spacingX = GetValue(config, 'spacing.x', 0);
|
|
var spacingY = GetValue(config, 'spacing.y', 0);
|
|
|
|
var charsPerRow = GetValue(config, 'charsPerRow', null);
|
|
|
|
if (charsPerRow === null)
|
|
{
|
|
charsPerRow = state.sys.textures.getFrame(key).width / w;
|
|
|
|
if (charsPerRow > letters.length)
|
|
{
|
|
charsPerRow = letters.length;
|
|
}
|
|
}
|
|
|
|
var x = offsetX;
|
|
var y = offsetY;
|
|
|
|
var data = {
|
|
retroFont: true,
|
|
font: key,
|
|
size: w,
|
|
lineHeight: h,
|
|
chars: {}
|
|
};
|
|
|
|
var r = 0;
|
|
|
|
for (var i = 0; i < letters.length; i++)
|
|
{
|
|
var node = letters[i];
|
|
|
|
var charCode = letters.charCodeAt(i);
|
|
|
|
data.chars[charCode] =
|
|
{
|
|
x: x,
|
|
y: y,
|
|
width: w,
|
|
height: h,
|
|
centerX: cx,
|
|
centerY: cy,
|
|
xOffset: 0,
|
|
yOffset: 0,
|
|
xAdvance: w,
|
|
data: {},
|
|
kerning: {}
|
|
};
|
|
|
|
r++;
|
|
|
|
if (r === charsPerRow)
|
|
{
|
|
r = 0;
|
|
x = offsetX;
|
|
y += h + spacingY;
|
|
}
|
|
else
|
|
{
|
|
x += w + spacingX;
|
|
}
|
|
}
|
|
|
|
return data;
|
|
};
|
|
|
|
/**
|
|
* Text Set 1 = !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~
|
|
* @constant
|
|
* @type {string}
|
|
*/
|
|
ParseRetroFont.TEXT_SET1 = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
|
|
|
|
/**
|
|
* Text Set 2 = !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
|
* @constant
|
|
* @type {string}
|
|
*/
|
|
ParseRetroFont.TEXT_SET2 = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
|
|
/**
|
|
* Text Set 3 = ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
|
|
* @constant
|
|
* @type {string}
|
|
*/
|
|
ParseRetroFont.TEXT_SET3 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ";
|
|
|
|
/**
|
|
* Text Set 4 = ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789
|
|
* @constant
|
|
* @type {string}
|
|
*/
|
|
ParseRetroFont.TEXT_SET4 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789";
|
|
|
|
/**
|
|
* Text Set 5 = ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789
|
|
* @constant
|
|
* @type {string}
|
|
*/
|
|
ParseRetroFont.TEXT_SET5 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789";
|
|
|
|
/**
|
|
* Text Set 6 = ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789"(),-.'
|
|
* @constant
|
|
* @type {string}
|
|
*/
|
|
ParseRetroFont.TEXT_SET6 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ";
|
|
|
|
/**
|
|
* Text Set 7 = AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW")28FLRX-'39
|
|
* @constant
|
|
* @type {string}
|
|
*/
|
|
ParseRetroFont.TEXT_SET7 = "AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39";
|
|
|
|
/**
|
|
* Text Set 8 = 0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
|
* @constant
|
|
* @type {string}
|
|
*/
|
|
ParseRetroFont.TEXT_SET8 = "0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
|
|
/**
|
|
* Text Set 9 = ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'"?!
|
|
* @constant
|
|
* @type {string}
|
|
*/
|
|
ParseRetroFont.TEXT_SET9 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!";
|
|
|
|
/**
|
|
* Text Set 10 = ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
|
* @constant
|
|
* @type {string}
|
|
*/
|
|
ParseRetroFont.TEXT_SET10 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
|
|
/**
|
|
* Text Set 11 = ABCDEFGHIJKLMNOPQRSTUVWXYZ.,"-+!?()':;0123456789
|
|
* @constant
|
|
* @type {string}
|
|
*/
|
|
ParseRetroFont.TEXT_SET11 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789";
|
|
|
|
module.exports = ParseRetroFont;
|