initial jsdoc
This commit is contained in:
parent
99703e03d7
commit
cb6a64d8c3
174
src/gamelib.js
174
src/gamelib.js
@ -150,6 +150,7 @@ export class Gamelib {
|
|||||||
|
|
||||||
drawSprite(x, y, sprite) {
|
drawSprite(x, y, sprite) {
|
||||||
const cx = this.cx;
|
const cx = this.cx;
|
||||||
|
console.log(sprite);
|
||||||
|
|
||||||
cx.drawImage(sprite, x, y);
|
cx.drawImage(sprite, x, y);
|
||||||
}
|
}
|
||||||
@ -276,7 +277,58 @@ export class Gamelib {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A function that is called whenever the Key it is registered to is pressed or released.
|
||||||
|
* @callback OnKeyEventHandler
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A function that is called whenever the MouseButton it is registered to is pressed or released.
|
||||||
|
* @callback OnClickEventHandler
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A function that is called whenever the mouse is moved.
|
||||||
|
* @callback OnMouseMoveEventHandler
|
||||||
|
* @param {number} positionX The mouse x position
|
||||||
|
* @param {number} positionY The mouse y position
|
||||||
|
* @param {number} deltaX The difference in x position between this and the last onMouseMove event
|
||||||
|
* @param {number} deltaY The difference in y position between this and the last onMouseMove event
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A loaded sprite
|
||||||
|
* @typedef {object} Sprite
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A html color
|
||||||
|
* @typedef {string} Color
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A component of `[x, y]` of a path.
|
||||||
|
* @typedef {[number, number]} PathComponent
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Text style
|
||||||
|
* @typedef TextStyle
|
||||||
|
* @type {object}
|
||||||
|
* @property {number} fontWeight Font weight
|
||||||
|
* @property {number} fontStyle !!!!!!!!!!!!!!!!!!!!! no idea what this does, needs better docs
|
||||||
|
* @property {number} fontSize Font size in pixels
|
||||||
|
* @property {string} fontFamily Font family
|
||||||
|
* @property {"left"|"center"|"right"} align Text alignment
|
||||||
|
* @property {string} baseline !!!!!!!!!!!!!!!!!!!!! no idea what this does, needs better docs
|
||||||
|
* @property {string} direction !!!!!!!!!!!!!!!!!!!!! no idea what this does, needs better docs
|
||||||
|
* @property {Color} color
|
||||||
|
*/
|
||||||
|
|
||||||
export class GamelibAdapter {
|
export class GamelibAdapter {
|
||||||
|
/* Enum for MouseButton values
|
||||||
|
* @enum {number}
|
||||||
|
*/
|
||||||
MouseButton = {
|
MouseButton = {
|
||||||
Left: 0,
|
Left: 0,
|
||||||
Right: 1,
|
Right: 1,
|
||||||
@ -311,74 +363,192 @@ export class GamelibAdapter {
|
|||||||
this.gamelib.startGameLoop(loopFunction);
|
this.gamelib.startGameLoop(loopFunction);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns whether or not `key` is currently pressed.
|
||||||
|
* `Key` can any one of [KeyBoardEvent.key](https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values)'s values
|
||||||
|
* @param {Key} key
|
||||||
|
* @return {boolean} Whether `key` is pressed.
|
||||||
|
*/
|
||||||
isPressed(key) {
|
isPressed(key) {
|
||||||
return this.gamelib.keysPressed.has(key);
|
return this.gamelib.keysPressed.has(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a `handlerFunction` that is called when `key` is pressed.
|
||||||
|
* Key can be any of [KeyBoardEvent.key](https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values)'s values
|
||||||
|
* @param {Key} key
|
||||||
|
* @param {OnKeyEventHandler} handlerFunction
|
||||||
|
* @return {void}
|
||||||
|
*/
|
||||||
onPress(key, handlerFunction) {
|
onPress(key, handlerFunction) {
|
||||||
this.gamelib.keyPressHandlers.set(key, handlerFunction);
|
this.gamelib.keyPressHandlers.set(key, handlerFunction);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a `handlerFunction` that is called when `key` is pressed.
|
||||||
|
* Key can be any of [KeyBoardEvent.key](https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values)'s values
|
||||||
|
* @param {Key} key
|
||||||
|
* @param {OnKeyEventHandler} handlerFunction
|
||||||
|
*/
|
||||||
onRelease(key, handlerFunction) {
|
onRelease(key, handlerFunction) {
|
||||||
this.gamelib.keyReleaseHandlers.set(key, handlerFunction);
|
this.gamelib.keyReleaseHandlers.set(key, handlerFunction);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a `handlerFunction` that is called when mouse is moved.
|
||||||
|
* @param {OnMouseMoveEventHandler} handlerFunction
|
||||||
|
*/
|
||||||
onMouseMove(handlerFunction) {
|
onMouseMove(handlerFunction) {
|
||||||
this.gamelib.mouseMoveHandler = handlerFunction;
|
this.gamelib.mouseMoveHandler = handlerFunction;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns whether or not `button` is currently clicked.
|
||||||
|
* MouseButton is accessed from `lib.MouseButton`
|
||||||
|
* @param {GamelibAdapter.MouseButton} button defaults to {GamelibAdapter.MouseButton.Left}
|
||||||
|
* @return {boolean} Whether `key` is pressed.
|
||||||
|
*/
|
||||||
isClicking(button = this.MouseButton.Left) {
|
isClicking(button = this.MouseButton.Left) {
|
||||||
return this.gamelib.mouseButtonsPressed.has(button);
|
return this.gamelib.mouseButtonsPressed.has(button);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a `handlerFunction` that is called when `button` is pressed.
|
||||||
|
* MouseButton is accessed from `lib.MouseButton`
|
||||||
|
* @param {OnClickEventHandler} handlerFunction
|
||||||
|
* @param {GamelibAdapter.MouseButton} button defaults to {GamelibAdapter.MouseButton.Left}
|
||||||
|
*/
|
||||||
onClick(handlerFunction, button = this.MouseButton.Left) {
|
onClick(handlerFunction, button = this.MouseButton.Left) {
|
||||||
this.gamelib.mouseDownHandlers.set(button, handlerFunction);
|
this.gamelib.mouseDownHandlers.set(button, handlerFunction);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a `handlerFunction` that is called when `button` is released.
|
||||||
|
* MouseButton is accessed from `lib.MouseButton`
|
||||||
|
* @param {OnClickEventHandler} handlerFunction
|
||||||
|
* @param {GamelibAdapter.MouseButton} button defaults to {GamelibAdapter.MouseButton.Left}
|
||||||
|
*/
|
||||||
onClickRelease(handlerFunction, button = this.MouseButton.Left) {
|
onClickRelease(handlerFunction, button = this.MouseButton.Left) {
|
||||||
this.gamelib.mouseUpHandlers.set(button, handlerFunction);
|
this.gamelib.mouseUpHandlers.set(button, handlerFunction);
|
||||||
}
|
}
|
||||||
|
|
||||||
loadSprite(name, width, height) {
|
/**
|
||||||
return this.gamelib.loadSprite(name, width, height);
|
* Loads a sprite with `name`, rendered with specified `width` and `height`
|
||||||
|
*
|
||||||
|
* @param {string} name The sprite name
|
||||||
|
* @param {number} width
|
||||||
|
* @param {number} height
|
||||||
|
* @return {Promise<Sprite>} The loaded sprite
|
||||||
|
*/
|
||||||
|
async loadSprite(name, width, height) {
|
||||||
|
return await this.gamelib.loadSprite(name, width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Draws a sprite loaded by {GamelibAdapter.loadSprite}
|
||||||
|
*
|
||||||
|
* @param {number} x
|
||||||
|
* @param {number} y
|
||||||
|
* @param {Sprite} A loaded sprite
|
||||||
|
*/
|
||||||
drawSprite(x, y, sprite) {
|
drawSprite(x, y, sprite) {
|
||||||
this.gamelib.drawSprite(x, y, sprite);
|
this.gamelib.drawSprite(x, y, sprite);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Draws a rotated sprite loaded by {GamelibAdapter.loadSprite}
|
||||||
|
*
|
||||||
|
* @param {number} x
|
||||||
|
* @param {number} y
|
||||||
|
* @param {Sprite} sprite A loaded sprite
|
||||||
|
* @param {number} angle An angle in radians
|
||||||
|
*/
|
||||||
drawSpriteRotated(x, y, sprite, angle) {
|
drawSpriteRotated(x, y, sprite, angle) {
|
||||||
this.gamelib.drawSpriteRotated(x, y, sprite, angle);
|
this.gamelib.drawSpriteRotated(x, y, sprite, angle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates an rgb Color.
|
||||||
|
*
|
||||||
|
* @param {number} red
|
||||||
|
* @param {number} green
|
||||||
|
* @param {number} blue
|
||||||
|
* @return {Color} Formatted {Color} string
|
||||||
|
*/
|
||||||
rgb(red, green, blue) {
|
rgb(red, green, blue) {
|
||||||
return `rgb(${red}, ${green}, ${blue})`;
|
return `rgb(${red}, ${green}, ${blue})`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clears the screen with `color`
|
||||||
|
* @param {Color} color
|
||||||
|
*/
|
||||||
clear(color) {
|
clear(color) {
|
||||||
this.gamelib.clear(color);
|
this.gamelib.clear(color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Draws a rect at `(x,y)` with a size of `(width,height)` in `color`
|
||||||
|
* @param {number} x
|
||||||
|
* @param {number} y
|
||||||
|
* @param {number} width
|
||||||
|
* @param {number} height
|
||||||
|
* @param {Color} color
|
||||||
|
*/
|
||||||
drawRect(x, y, width, height, color) {
|
drawRect(x, y, width, height, color) {
|
||||||
this.gamelib.drawRect(x, y, width, height, color);
|
this.gamelib.drawRect(x, y, width, height, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Draws a circle at `(x,y)` with a radius of `r` in `color`
|
||||||
|
* @param {number} x
|
||||||
|
* @param {number} y
|
||||||
|
* @param {number} r Radius of circle
|
||||||
|
* @param {Color} color
|
||||||
|
*/
|
||||||
drawCircle(x, y, r, color) {
|
drawCircle(x, y, r, color) {
|
||||||
this.gamelib.drawCircle(x, y, r, color);
|
this.gamelib.drawCircle(x, y, r, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Draws a line from `(x0,y0)` to `(x1,y1)` with a thickness of `thickness` in `color`
|
||||||
|
* @param {number} x0
|
||||||
|
* @param {number} y0
|
||||||
|
* @param {number} x1
|
||||||
|
* @param {number} y1
|
||||||
|
* @param {number} thickness
|
||||||
|
* @param {Color} color
|
||||||
|
*/
|
||||||
drawLine(x0, y0, x1, y1, thickness, color) {
|
drawLine(x0, y0, x1, y1, thickness, color) {
|
||||||
this.gamelib.drawLine(x0, y0, x1, y1, thickness, color);
|
this.gamelib.drawLine(x0, y0, x1, y1, thickness, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Draws a polygon in `color` based off of `path` components
|
||||||
|
* @param {PathComponent[]} path
|
||||||
|
* @param {Color} color
|
||||||
|
*/
|
||||||
drawPath(path, color) {
|
drawPath(path, color) {
|
||||||
this.gamelib.drawPath(path, color);
|
this.gamelib.drawPath(path, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Draws an outline in `color` based off of `path` components, with a thickness of `thickness`
|
||||||
|
* @param {PathComponent[]} path
|
||||||
|
* @param {number} thickness
|
||||||
|
* @param {Color} color
|
||||||
|
*/
|
||||||
drawPathLine(path, thickness, color) {
|
drawPathLine(path, thickness, color) {
|
||||||
this.gamelib.drawPathLine(path, thickness, color);
|
this.gamelib.drawPathLine(path, thickness, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Draw text
|
||||||
|
* @param {number} x
|
||||||
|
* @param {number} y
|
||||||
|
* @param {string} text
|
||||||
|
* @param {TextStyle} style
|
||||||
|
*/
|
||||||
drawText(x, y, text, style = {}) {
|
drawText(x, y, text, style = {}) {
|
||||||
this.gamelib.drawText(x, y, text, style);
|
this.gamelib.drawText(x, y, text, style);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user