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'
|
||||
|
||||
const version = import.meta.env.MODE === 'development'
|
||||
? 'dev'
|
||||
: pkg.version
|
||||
|
||||
const mnswpr = new MineSweeper('app', version)
|
||||
mnswpr.initialize()
|
||||
const game = new mnswpr('app', version, {
|
||||
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
|
||||
* @param {String} appId
|
||||
* @param {String} version
|
||||
* @param {{
|
||||
* levelChanged: () => {},
|
||||
* gameDone: (game: any) => {}
|
||||
* }} hooks
|
||||
*/
|
||||
const Minesweeper = function(appId, version) {
|
||||
const Minesweeper = function(appId, version, hooks) {
|
||||
const _this = this
|
||||
const storageService = new StorageService()
|
||||
const timerService = new TimerService()
|
||||
|
|
@ -86,7 +90,7 @@ const Minesweeper = function(appId, version) {
|
|||
appElement.append(headingElement, gameBoard)
|
||||
appElement.append(initializeSourceLink())
|
||||
}
|
||||
generateGrid()
|
||||
generateGrid(true)
|
||||
}
|
||||
|
||||
function initializeSourceLink() {
|
||||
|
|
@ -171,11 +175,11 @@ const Minesweeper = function(appId, version) {
|
|||
function updateSetting(key) {
|
||||
setting = levels[key]
|
||||
storageService.saveToLocal('setting', setting)
|
||||
generateGrid()
|
||||
generateGrid(true)
|
||||
}
|
||||
|
||||
|
||||
function generateGrid() {
|
||||
function generateGrid(initial = false) {
|
||||
firstClick = true
|
||||
grid.innerHTML = ''
|
||||
grid.oncontextmenu = () => false
|
||||
|
|
@ -212,7 +216,8 @@ const Minesweeper = function(appId, version) {
|
|||
* TODO: add hook afterGridGenerated
|
||||
* - for initializing the leaderboard
|
||||
*/
|
||||
console.log('[hook]: after grid generated')
|
||||
if (initial)
|
||||
hooks.levelChanged()
|
||||
|
||||
|
||||
timerService.initialize(timerDisplay)
|
||||
|
|
@ -479,7 +484,7 @@ const Minesweeper = function(appId, version) {
|
|||
* TODO: add hook after gameSession send back `game`
|
||||
* - for sending the game score to the db
|
||||
*/
|
||||
console.log('[hook]: after game session', game)
|
||||
hooks.gameDone(game)
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue