import { ContextI } from "../ContextI" import { segments } from "../shared/segments" import { StateI } from "./StateI" import * as PIXI from 'pixi.js' import { DecorationInstance } from "../shared/decors" export function GameState(ctx: ContextI): StateI { let rootContainer = new PIXI.Container() let decorations: DecorationInstance[] = [] let enter = () => { console.log('less goooo') // Load the world segment. let w = segments.world if (!w) return ctx.pop() rootContainer.width = w.width rootContainer.height = w.height rootContainer.scale.set(2, 2) for (let l of w.layers) { let container = new PIXI.Container() container.width = w.width container.height = w.height for (let d of l.decorations) { let di = new DecorationInstance(d.decor, d.decoration) di.elapsed = d.timeOffset di.container.x = d.x di.container.y = d.y if (d.flip) { console.log('friggin flip it') di.container.pivot.y = 1 di.container.scale.y *= -1 di.container.position.y-- } if (d.mirror) { di.container.pivot.x = 1 di.container.scale.x *= -1 di.container.position.x-- } container.addChild(di.container) decorations.push(di) } rootContainer.addChild(container) } ctx.app.stage.addChild(rootContainer) } let leave = () => { ctx.app.stage.removeChild(rootContainer) } let update = (delta: number) => { for (let decoration of decorations) { decoration.update(delta) } } return { enter, leave, update, } }