feat: expose hooks for events levelChanged & gameDone
This commit is contained in:
parent
29bcaace1e
commit
39683946a7
2 changed files with 17 additions and 9 deletions
|
|
@ -1,9 +1,12 @@
|
||||||
import MineSweeper from '../lib/mnswpr.js'
|
import mnswpr from '../lib/mnswpr.js'
|
||||||
import * as pkg from '../package.json'
|
import * as pkg from '../package.json'
|
||||||
|
|
||||||
const version = import.meta.env.MODE === 'development'
|
const version = import.meta.env.MODE === 'development'
|
||||||
? 'dev'
|
? 'dev'
|
||||||
: pkg.version
|
: pkg.version
|
||||||
|
|
||||||
const mnswpr = new MineSweeper('app', version)
|
const game = new mnswpr('app', version, {
|
||||||
mnswpr.initialize()
|
levelChanged: () => console.log('[hook]: level reset'),
|
||||||
|
gameDone: (game) => console.log('[hook] game done', game)
|
||||||
|
})
|
||||||
|
game.initialize()
|
||||||
|
|
@ -20,8 +20,12 @@ const PC_BUSY_DELAY = 500
|
||||||
* Create Minesweeper game board
|
* Create Minesweeper game board
|
||||||
* @param {String} appId
|
* @param {String} appId
|
||||||
* @param {String} version
|
* @param {String} version
|
||||||
|
* @param {{
|
||||||
|
* levelChanged: () => {},
|
||||||
|
* gameDone: (game: any) => {}
|
||||||
|
* }} hooks
|
||||||
*/
|
*/
|
||||||
const Minesweeper = function(appId, version) {
|
const Minesweeper = function(appId, version, hooks) {
|
||||||
const _this = this
|
const _this = this
|
||||||
const storageService = new StorageService()
|
const storageService = new StorageService()
|
||||||
const timerService = new TimerService()
|
const timerService = new TimerService()
|
||||||
|
|
@ -86,7 +90,7 @@ const Minesweeper = function(appId, version) {
|
||||||
appElement.append(headingElement, gameBoard)
|
appElement.append(headingElement, gameBoard)
|
||||||
appElement.append(initializeSourceLink())
|
appElement.append(initializeSourceLink())
|
||||||
}
|
}
|
||||||
generateGrid()
|
generateGrid(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
function initializeSourceLink() {
|
function initializeSourceLink() {
|
||||||
|
|
@ -171,11 +175,11 @@ const Minesweeper = function(appId, version) {
|
||||||
function updateSetting(key) {
|
function updateSetting(key) {
|
||||||
setting = levels[key]
|
setting = levels[key]
|
||||||
storageService.saveToLocal('setting', setting)
|
storageService.saveToLocal('setting', setting)
|
||||||
generateGrid()
|
generateGrid(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function generateGrid() {
|
function generateGrid(initial = false) {
|
||||||
firstClick = true
|
firstClick = true
|
||||||
grid.innerHTML = ''
|
grid.innerHTML = ''
|
||||||
grid.oncontextmenu = () => false
|
grid.oncontextmenu = () => false
|
||||||
|
|
@ -212,7 +216,8 @@ const Minesweeper = function(appId, version) {
|
||||||
* TODO: add hook afterGridGenerated
|
* TODO: add hook afterGridGenerated
|
||||||
* - for initializing the leaderboard
|
* - for initializing the leaderboard
|
||||||
*/
|
*/
|
||||||
console.log('[hook]: after grid generated')
|
if (initial)
|
||||||
|
hooks.levelChanged()
|
||||||
|
|
||||||
|
|
||||||
timerService.initialize(timerDisplay)
|
timerService.initialize(timerDisplay)
|
||||||
|
|
@ -479,7 +484,7 @@ const Minesweeper = function(appId, version) {
|
||||||
* TODO: add hook after gameSession send back `game`
|
* TODO: add hook after gameSession send back `game`
|
||||||
* - for sending the game score to the db
|
* - for sending the game score to the db
|
||||||
*/
|
*/
|
||||||
console.log('[hook]: after game session', game)
|
hooks.gameDone(game)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue