From 867d9dd16445b53b3b1fd6db824a4a4e4d7134f2 Mon Sep 17 00:00:00 2001 From: Mark Date: Sun, 14 Jan 2024 23:55:28 -0500 Subject: [PATCH] feat: add cursor keys --- src/events/cursors.ts | 22 ++++++++++++++++++++++ src/events/index.ts | 1 + src/gameobjects/index.ts | 1 + src/gameobjects/player.ts | 5 +++++ src/scenes/game.ts | 5 +++-- src/types/gameobject.ts | 3 +++ src/types/index.ts | 1 + 7 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 src/events/cursors.ts create mode 100644 src/events/index.ts create mode 100644 src/gameobjects/index.ts create mode 100644 src/gameobjects/player.ts create mode 100644 src/types/gameobject.ts diff --git a/src/events/cursors.ts b/src/events/cursors.ts new file mode 100644 index 0000000..5df6674 --- /dev/null +++ b/src/events/cursors.ts @@ -0,0 +1,22 @@ +import type { Player } from '../types' + +// pixels per second +const SPEED = 320 + +export function addCursorKeys(player: Player) { + onKeyDown('left', () => { + player.move(-SPEED, 0) + }) + + onKeyDown('right', () => { + player.move(SPEED, 0) + }) + + onKeyDown('up', () => { + player.move(0, -SPEED) + }) + + onKeyDown('down', () => { + player.move(0, SPEED) + }) +} diff --git a/src/events/index.ts b/src/events/index.ts new file mode 100644 index 0000000..0d26bb1 --- /dev/null +++ b/src/events/index.ts @@ -0,0 +1 @@ +export * from './cursors' diff --git a/src/gameobjects/index.ts b/src/gameobjects/index.ts new file mode 100644 index 0000000..f7e4a87 --- /dev/null +++ b/src/gameobjects/index.ts @@ -0,0 +1 @@ +export * from './player' diff --git a/src/gameobjects/player.ts b/src/gameobjects/player.ts new file mode 100644 index 0000000..79eb721 --- /dev/null +++ b/src/gameobjects/player.ts @@ -0,0 +1,5 @@ +import { bean } from '../sprites' + +export function addPlayer() { + return add([pos(120, 80), bean]) +} diff --git a/src/scenes/game.ts b/src/scenes/game.ts index 83fe3bf..c4cf182 100644 --- a/src/scenes/game.ts +++ b/src/scenes/game.ts @@ -1,7 +1,8 @@ -import { bean } from '../sprites' +import { addCursorKeys } from '../events' +import { addPlayer } from '../gameobjects' scene('game', () => { - add([pos(120, 80), bean]) + addCursorKeys(addPlayer()) onClick(() => addKaboom(mousePos())) }) diff --git a/src/types/gameobject.ts b/src/types/gameobject.ts new file mode 100644 index 0000000..51aad91 --- /dev/null +++ b/src/types/gameobject.ts @@ -0,0 +1,3 @@ +import type { GameObj, PosComp, SpriteComp } from 'kaboom' + +export type Player = GameObj diff --git a/src/types/index.ts b/src/types/index.ts index a84a35a..87eac29 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -1,2 +1,3 @@ +export * from './gameobject' export * from './scene' export * from './sprite'