2017-10-08 21:25:24 +00:00
|
|
|
/// <reference path="BaseView.ts"/>
|
|
|
|
|
|
|
|
module TK.SpaceTac.UI {
|
|
|
|
export enum AssetLoadingRange {
|
|
|
|
NONE,
|
|
|
|
MENU,
|
|
|
|
BATTLE,
|
|
|
|
CAMPAIGN
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Loader of all game assets
|
|
|
|
*/
|
|
|
|
export class AssetLoading extends BaseView {
|
|
|
|
private static loaded = AssetLoadingRange.NONE
|
|
|
|
private required = AssetLoadingRange.NONE
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Check if an asset range is loaded
|
|
|
|
*/
|
|
|
|
static isRangeLoaded(game: Phaser.Game, range: AssetLoadingRange): boolean {
|
|
|
|
if (range > AssetLoading.loaded) {
|
|
|
|
return false;
|
|
|
|
} else {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-05-15 14:57:45 +00:00
|
|
|
init(data: any) {
|
|
|
|
super.init(data);
|
2017-10-08 21:25:24 +00:00
|
|
|
|
2018-05-15 14:57:45 +00:00
|
|
|
this.required = data ? data.range : AssetLoadingRange.NONE;
|
2017-10-08 21:25:24 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
preload() {
|
2018-04-12 22:38:46 +00:00
|
|
|
let bg = this.add.image(643, 435, "preload-background");
|
2018-05-15 14:57:45 +00:00
|
|
|
bg.setOrigin(0);
|
2018-04-12 22:38:46 +00:00
|
|
|
let bar = this.add.image(643, 435, "preload-bar");
|
2018-05-15 14:57:45 +00:00
|
|
|
bar.setOrigin(0);
|
|
|
|
let mask = this.make.graphics({ x: bar.x, y: bar.y, add: false });
|
|
|
|
mask.fillStyle(0xffffff);
|
|
|
|
bar.setMask(new Phaser.Display.Masks.GeometryMask(this, mask));
|
|
|
|
|
|
|
|
this.load.on('progress', (value: number) => {
|
|
|
|
mask.clear();
|
|
|
|
mask.fillRect(0, 0, value * bar.width, bar.height);
|
|
|
|
});
|
2017-10-08 21:25:24 +00:00
|
|
|
|
2018-04-12 22:38:46 +00:00
|
|
|
let text = this.add.text(this.getMidWidth(), 466, "... Loading ...", { font: "normal 36pt SpaceTac", fill: "#dbeff9" });
|
2018-05-15 14:57:45 +00:00
|
|
|
text.setOrigin(0.5);
|
2018-04-12 22:38:46 +00:00
|
|
|
|
2017-10-08 21:25:24 +00:00
|
|
|
if (this.required >= AssetLoadingRange.MENU && AssetLoading.loaded < AssetLoadingRange.MENU) {
|
|
|
|
console.log("Loading menu assets");
|
2018-03-08 21:11:14 +00:00
|
|
|
this.load.pack("stage1", `assets/pack1.json?t=${Date.now()}`);
|
2017-10-08 21:25:24 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if (this.required >= AssetLoadingRange.BATTLE && AssetLoading.loaded < AssetLoadingRange.BATTLE) {
|
|
|
|
console.log("Loading battle assets");
|
2018-03-08 21:11:14 +00:00
|
|
|
this.load.pack("stage2", `assets/pack2.json?t=${Date.now()}`);
|
2017-10-08 21:25:24 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if (this.required >= AssetLoadingRange.CAMPAIGN && AssetLoading.loaded < AssetLoadingRange.CAMPAIGN) {
|
|
|
|
console.log("Loading campaign assets");
|
2018-03-08 21:11:14 +00:00
|
|
|
this.load.pack("stage3", `assets/pack3.json?t=${Date.now()}`);
|
2017-10-08 21:25:24 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
create() {
|
|
|
|
super.create();
|
|
|
|
|
|
|
|
AssetLoading.loaded = Math.max(AssetLoading.loaded, this.required);
|
2018-05-15 14:57:45 +00:00
|
|
|
this.backToRouter();
|
2017-10-08 21:25:24 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static getKey(path: string): string {
|
|
|
|
return path.replace(/\//g, "-").replace(/\.[a-z0-9]+$/, '');
|
|
|
|
}
|
|
|
|
|
|
|
|
loadSheet(path: string, frame_width: number, frame_height = frame_width) {
|
2018-05-15 14:57:45 +00:00
|
|
|
this.load.spritesheet(AssetLoading.getKey(path), "images/" + path, {
|
|
|
|
frameWidth: frame_width,
|
|
|
|
frameHeight: frame_height,
|
|
|
|
});
|
2017-10-08 21:25:24 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|