2024-11-19 23:54:25 +01:00

75 lines
2.5 KiB
TypeScript

import * as PIXI from 'pixi.js';
import { CreepStatsDefinition, MissionDefinition, TowerDefinition } from './Definitions';
export default class Assets {
public static async LoadAssets() {
console.log('Loading Texture Assets');
Assets.ButtonTexture = await PIXI.Assets.load({
src: '/assets/gui/button_02.png',
});
Assets.SidebarTexture = await PIXI.Assets.load({
src: '/assets/gui/frame.png',
});
Assets.Frame2Texture = await PIXI.Assets.load({
src: '/assets/gui/frame_02.png',
});
Assets.HealthTexture = await PIXI.Assets.load({
src: '/assets/gui/heart.png',
});
Assets.GoldTexture = await PIXI.Assets.load({
src: '/assets/gui/star.png',
});
Assets.BasicCreepTexture = await PIXI.Assets.load({
src: '/assets/creeps/basic.jpg',
});
await this.LoadMissions();
await this.LoadTowers();
await this.LoadCreepStats();
}
public static async LoadCreepStats() {
const res = await fetch('/assets/CreepStats.json');
const stats = await res.json();
this.CreepStats = stats;
}
private static async LoadMissions() {
Assets.Missions = [await this.LoadMission('/assets/missions/mission_01.json')];
}
private static async LoadTowers() {
const res = await fetch('/assets/Towers.json');
const towers = await res.json();
Assets.Towers = towers;
}
private static async LoadMission(missionUrl: string) {
const res = await fetch(missionUrl);
const mission = await res.json();
await this.LoadBackground(mission.mapImage.url);
return mission;
}
private static async LoadBackground(backgroundUrl: string) {
let index = this.MissionBackgrounds.length - 1;
if (index == -1) index = 0;
this.MissionBackgrounds[index] = await PIXI.Assets.load({
src: backgroundUrl,
});
}
public static BasicCreepTexture: PIXI.Texture;
public static ButtonTexture: PIXI.Texture;
public static SidebarTexture: PIXI.Texture;
public static Frame2Texture: PIXI.Texture;
public static HealthTexture: PIXI.Texture;
public static GoldTexture: PIXI.Texture;
public static MissionBackgrounds: PIXI.Texture[] = [];
public static Missions: MissionDefinition[];
public static Towers: TowerDefinition[];
public static CreepStats: CreepStatsDefinition[];
public static DebuggingEnabled: boolean = true;
}