diff --git a/Engine/src/states/Game.ts b/Engine/src/states/Game.ts index ba89b08..beef8f1 100644 --- a/Engine/src/states/Game.ts +++ b/Engine/src/states/Game.ts @@ -42,6 +42,35 @@ export function GameState(ctx: ContextI, selectedAnimal: string, selectedSegment let lastTime: number = performance.now() let player: AnimalEntity + // + let clockCoverSprite = new SpriteInstance('ui.clock.cover.default.0') + let clockMoonSprite = new SpriteInstance('ui.clock.moon.default.0') + let clockSunSprite = new SpriteInstance('ui.clock.sun.default.0') + let clockContainer = new PIXI.Container() + { + clockMoonSprite.container.position.set( + 32, + 0, + ) + clockMoonSprite.container.pivot.set( + 24, + 24, + ) + clockSunSprite.container.position.set( + 32, + 0, + ) + clockSunSprite.container.pivot.set( + 24, + 24, + ) + + clockContainer.scale.set(2, 2) + clockContainer.addChild(clockMoonSprite.container) + clockContainer.addChild(clockSunSprite.container) + clockContainer.addChild(clockCoverSprite.container) + } + let world: planck.World = planck.World({ gravity: planck.Vec2(0, 0), }) @@ -105,6 +134,7 @@ export function GameState(ctx: ContextI, selectedAnimal: string, selectedSegment } }) + let realRootContainer = new PIXI.Container() let rootContainer = new PIXI.Container() let playLayer: Layer let layers: Layer[] = [] @@ -113,6 +143,7 @@ export function GameState(ctx: ContextI, selectedAnimal: string, selectedSegment let spawnZones: Record = {} let enter = () => { + realRootContainer.addChild(rootContainer) lastTime = performance.now() hookKeyboard() // Load the world segment. @@ -230,7 +261,11 @@ export function GameState(ctx: ContextI, selectedAnimal: string, selectedSegment addEntity(entity, 'objects', x, y) } } - ctx.app.stage.addChild(rootContainer) + + // Add clock + + ctx.app.stage.addChild(realRootContainer) + ctx.app.stage.addChild(clockContainer) } let leave = () => { unhookKeyboard() @@ -241,17 +276,36 @@ export function GameState(ctx: ContextI, selectedAnimal: string, selectedSegment removeZone(zone) } stopSong() - ctx.app.stage.removeChild(rootContainer) + ctx.app.stage.removeChild(realRootContainer) + ctx.app.stage.removeChild(clockContainer) } let elapsed: number = 0 let update = (delta: number) => { - let w = segments[selectedSegment] let time = performance.now() let realDelta = time - lastTime lastTime = time checkGamepads() elapsed += delta modeTimer += realDelta + + // Update clock + { + //clockContainer.width = ctx.app.renderer.width + let w = ctx.app.renderer.width + let h = ctx.app.renderer.height + clockContainer.x = w / 2 - clockCoverSprite.container.width + clockContainer.y = h - clockCoverSprite.container.height * 2 - 8 + if (isNight) { + clockMoonSprite.container.angle = 180 + modeTimer / nightTime * 180 + clockSunSprite.container.angle = modeTimer / nightTime * 180 + } else { + clockMoonSprite.container.angle = modeTimer / dayTime * 180 + clockSunSprite.container.angle = 180 + modeTimer / dayTime * 180 + } + clockMoonSprite.container.angle -= 230 + clockSunSprite.container.angle -= 230 + } + if (isNight && modeTimer >= nightTime) { modeTimer = 0 nightfall(false)