Add an absolutely awful clock

This commit is contained in:
Ketchetwahmeegwun T. Southall 2022-01-30 08:21:48 -08:00
parent 850a5486bf
commit 754d1ec1a3

View File

@ -42,6 +42,35 @@ export function GameState(ctx: ContextI, selectedAnimal: string, selectedSegment
let lastTime: number = performance.now() let lastTime: number = performance.now()
let player: AnimalEntity 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({ let world: planck.World = planck.World({
gravity: planck.Vec2(0, 0), 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 rootContainer = new PIXI.Container()
let playLayer: Layer let playLayer: Layer
let layers: Layer[] = [] let layers: Layer[] = []
@ -113,6 +143,7 @@ export function GameState(ctx: ContextI, selectedAnimal: string, selectedSegment
let spawnZones: Record<string, Zone[]> = {} let spawnZones: Record<string, Zone[]> = {}
let enter = () => { let enter = () => {
realRootContainer.addChild(rootContainer)
lastTime = performance.now() lastTime = performance.now()
hookKeyboard() hookKeyboard()
// Load the world segment. // Load the world segment.
@ -230,7 +261,11 @@ export function GameState(ctx: ContextI, selectedAnimal: string, selectedSegment
addEntity(entity, 'objects', x, y) addEntity(entity, 'objects', x, y)
} }
} }
ctx.app.stage.addChild(rootContainer)
// Add clock
ctx.app.stage.addChild(realRootContainer)
ctx.app.stage.addChild(clockContainer)
} }
let leave = () => { let leave = () => {
unhookKeyboard() unhookKeyboard()
@ -241,17 +276,36 @@ export function GameState(ctx: ContextI, selectedAnimal: string, selectedSegment
removeZone(zone) removeZone(zone)
} }
stopSong() stopSong()
ctx.app.stage.removeChild(rootContainer) ctx.app.stage.removeChild(realRootContainer)
ctx.app.stage.removeChild(clockContainer)
} }
let elapsed: number = 0 let elapsed: number = 0
let update = (delta: number) => { let update = (delta: number) => {
let w = segments[selectedSegment]
let time = performance.now() let time = performance.now()
let realDelta = time - lastTime let realDelta = time - lastTime
lastTime = time lastTime = time
checkGamepads() checkGamepads()
elapsed += delta elapsed += delta
modeTimer += realDelta 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) { if (isNight && modeTimer >= nightTime) {
modeTimer = 0 modeTimer = 0
nightfall(false) nightfall(false)