54 lines
1.7 KiB
TypeScript
54 lines
1.7 KiB
TypeScript
import {ITiledMapObject} from "../Map/ITiledMap";
|
|
import Text = Phaser.GameObjects.Text;
|
|
import {GameScene} from "../Game/GameScene";
|
|
import TextStyle = Phaser.GameObjects.TextStyle;
|
|
|
|
export class TextUtils {
|
|
public static createTextFromITiledMapObject(scene: GameScene, object: ITiledMapObject): void {
|
|
if (object.text === undefined) {
|
|
throw new Error('This object has not textual representation.');
|
|
}
|
|
const options: {
|
|
fontStyle?: string,
|
|
fontSize?: string,
|
|
fontFamily?: string,
|
|
color?: string,
|
|
align?: string,
|
|
wordWrap?: {
|
|
width: number,
|
|
useAdvancedWrap?: boolean
|
|
}
|
|
} = {};
|
|
if (object.text.italic) {
|
|
options.fontStyle = 'italic';
|
|
}
|
|
// Note: there is no support for "strikeout" and "underline"
|
|
let fontSize: number = 16;
|
|
if (object.text.pixelsize) {
|
|
fontSize = object.text.pixelsize;
|
|
}
|
|
options.fontSize = fontSize + 'px';
|
|
if (object.text.fontfamily) {
|
|
options.fontFamily = '"'+object.text.fontfamily+'"';
|
|
}
|
|
let color = '#000000';
|
|
if (object.text.color !== undefined) {
|
|
color = object.text.color;
|
|
}
|
|
options.color = color;
|
|
if (object.text.wrap === true) {
|
|
options.wordWrap = {
|
|
width: object.width,
|
|
//useAdvancedWrap: true
|
|
}
|
|
}
|
|
if (object.text.halign !== undefined) {
|
|
options.align = object.text.halign;
|
|
}
|
|
|
|
console.warn(options);
|
|
const textElem = scene.add.text(object.x, object.y, object.text.text, options);
|
|
textElem.setAngle(object.rotation);
|
|
}
|
|
}
|