40 lines
1.1 KiB
JavaScript
40 lines
1.1 KiB
JavaScript
// renderArena.js : dessin de l'arene a partir de la map Tiled + sprite Soulgate
|
|
|
|
import { Sprite, Assets } from 'pixi.js';
|
|
import { loadTiledMap, drawTiledMap } from './tiledLoader.js';
|
|
import { iso, getTw, getTh } from './renderer.js';
|
|
import { SOULGATE_X, SOULGATE_Y } from './constants.js';
|
|
|
|
let _mapData = null;
|
|
|
|
export async function loadArenaMap() {
|
|
if (_mapData) return;
|
|
_mapData = await loadTiledMap('assets/maps/arrena.tmj');
|
|
await Assets.load('assets/soulgate.png');
|
|
}
|
|
|
|
export function drawStaticArena(layer) {
|
|
if (!_mapData) {
|
|
console.warn('arena map not loaded yet');
|
|
return;
|
|
}
|
|
drawTiledMap(layer, _mapData);
|
|
_drawSoulgate(layer);
|
|
}
|
|
|
|
function _drawSoulgate(layer) {
|
|
const tex = Assets.get('assets/soulgate.png');
|
|
if (!tex) return;
|
|
const tw = getTw();
|
|
const th = getTh();
|
|
|
|
const sprite = new Sprite(tex);
|
|
sprite.anchor.set(0.5, 1.0);
|
|
const p = iso(SOULGATE_X, SOULGATE_Y);
|
|
sprite.x = p.x;
|
|
sprite.y = p.y + th / 2;
|
|
// taille : ~1.5 unite monde de large (source 128px), assez present sans ecraser
|
|
sprite.scale.set((tw * 1.5) / 128);
|
|
layer.addChild(sprite);
|
|
}
|