42 lines
1.3 KiB
JavaScript
42 lines
1.3 KiB
JavaScript
import mnswpr from '@ayo-run/mnswpr/mnswpr.js'
|
|
import '@ayo-run/mnswpr/mnswpr.css'
|
|
import * as pkg from '@ayo-run/mnswpr/package.json'
|
|
import { LoadingService } from '../utils/'
|
|
import { LeaderBoardService } from './modules/leader-board/leader-board.js'
|
|
|
|
const leaderBoardService = new LeaderBoardService()
|
|
const loadingService = new LoadingService()
|
|
|
|
const version = import.meta.env.MODE === 'development'
|
|
? 'dev'
|
|
: pkg.version
|
|
|
|
const initializeGameBoard = async (level) => {
|
|
const prevousLeaderBoard = document.getElementById('leaderboard')
|
|
const loadingWrapper = document.createElement('div')
|
|
loadingWrapper.id = 'loading-wrapper'
|
|
loadingService.addLoading(loadingWrapper)
|
|
|
|
const appElement = document.getElementById('app')
|
|
if (prevousLeaderBoard){
|
|
const parent = prevousLeaderBoard.parentNode
|
|
parent.replaceChild(loadingWrapper, prevousLeaderBoard)
|
|
}else{
|
|
appElement.append(loadingWrapper)
|
|
}
|
|
const leaderBoardWrapper = await leaderBoardService.update(level.id, `Best Times (${level.name})`)
|
|
leaderBoardWrapper.id = 'leaderboard'
|
|
|
|
appElement.replaceChild(leaderBoardWrapper, loadingWrapper)
|
|
}
|
|
|
|
const sendGameResult = (game) => {
|
|
leaderBoardService.send(game, 'time')
|
|
}
|
|
|
|
const game = new mnswpr('app', version, {
|
|
levelChanged: (level) => initializeGameBoard(level),
|
|
gameDone: (game) => sendGameResult(game)
|
|
})
|
|
|
|
game.initialize()
|