Files
Tron.io/client/src/store/gameModule.js
T

124 lines
2.4 KiB
JavaScript

const state = {
player: {
x: 100,
y: 100,
angle: 0,
targetAngle: 0,
color: 'red',
state: 'DEAD'
},
sprites: [],
leaderboard: [],
updates: [],
firstUpdateTime: null,
gameStartTime: null,
settings: {
playerSize: 10,
playerSpeed: 2,
playerTurnSpeed: 10,
wallSize: 8,
wallUpdate: 5,
arenaSize: 1000
},
paused: true,
socketConnected: false,
loggedIn: false
}
const getters = {
}
const actions = {
socketConnected ({ commit }, connected) {
commit('SET_CONNECTED', connected)
commit('CLEAR_UPDATE')
},
login ({ commit }, player) {
commit('SET_PLAYER', player)
commit('SET_LOGIN', true)
},
logout ({ commit }) {
commit('SET_LOGIN', false)
commit('CLEAR_UPDATE')
},
settings ({ commit }, settings) {
commit('SET_SETTINGS', settings)
},
update ({ commit }, update) {
commit('ADD_UPDATE', update)
commit('SET_LEADERBOARD', update.players)
},
dead ({ commit }, player) {
commit('SET_PLAYER', player)
// commit('CLEAR_UPDATE')
},
spawn ({ commit }, player) {
commit('SET_PLAYER', player)
// commit('CLEAR_UPDATE')
},
error ({ commit }, error) {
alert('Error: ' + error)
}
}
const mutations = {
SET_PLAYER (state, player) {
state.player = player
},
SET_LOGIN (state, login) {
state.loggedIn = login
},
SET_PLAYERS (state, players) {
state.players = players
},
SET_SETTINGS (state, settings) {
state.settings = settings
},
SET_PAUSE (state) {
state.paused = !state.paused
},
SET_CONNECTED (state, connected) {
state.socketConnected = connected
},
ADD_UPDATE (state, update) {
if (state.updates.length === 0) {
state.gameStartTime = Date.now()
state.firstUpdateTime = update.time
}
if (state.updates.length > 2) {
state.updates.shift()
}
state.updates.push(update)
},
CLEAR_UPDATE (state) {
state.updates = []
},
SET_LEADERBOARD (state, players) {
state.leaderboard = []
if (!players) return
players.forEach(player => {
state.leaderboard.push({
name: player.name,
score: player.score,
bestScore: player.bestScore,
color: player.color
})
})
state.leaderboard.sort((a, b) => {
return b.score - a.score
})
}
}
export default {
namespaced: true,
state,
getters,
actions,
mutations
}