diff options
Diffstat (limited to 'src/view/scene.ts')
-rw-r--r-- | src/view/scene.ts | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/src/view/scene.ts b/src/view/scene.ts index fe88c12..6d35edc 100644 --- a/src/view/scene.ts +++ b/src/view/scene.ts @@ -1,35 +1,53 @@ import * as Ship from 'view/ship' import * as Colors from 'view/colors' -import * as Screen from 'screen' +import * as Vec2 from 'model/vec2' +import * as Size from 'model/size' export interface State { + canvas: HTMLCanvasElement, context: CanvasRenderingContext2D, timestamp: number, ship: Ship.State, + windowSize: Size.Size, } export function init(): State { - let canvas = document.querySelector('canvas') as HTMLCanvasElement - let context = canvas.getContext("2d") as CanvasRenderingContext2D + const canvas = document.querySelector('canvas') as HTMLCanvasElement + const context = canvas.getContext("2d") as CanvasRenderingContext2D + const windowSize = { + width: window.innerWidth, + height: window.innerHeight + } + canvas.width = windowSize.width + canvas.height = windowSize.height return { + canvas, context, timestamp: 0, - ship: Ship.init(), + ship: Ship.init(windowSize), + windowSize } } export function update(state: State, timestamp: number) { - let delta = timestamp - state.timestamp + const dt = timestamp - state.timestamp state.timestamp = timestamp - Ship.update(state.ship, state.timestamp, delta) + Ship.update(state.ship, dt, state.windowSize) +} + +export function resize(state: State, size: Size.Size) { + Ship.project(state.ship, state.windowSize, size) + state.windowSize = size + state.canvas.width = size.width + state.canvas.height = size.height } export function view(state: State) { // Clear state.context.fillStyle = Colors.colors.blue - state.context.fillRect(0, 0, Screen.width, Screen.height) + state.context.fillRect(0, 0, state.windowSize.width, state.windowSize.height) Ship.view(state.context, state.ship) } |