@jeremyckahn/farmhand
Version:
A farming game
37 lines (32 loc) • 934 B
JavaScript
import achievements from '../../data/achievements.js'
import { ACHIEVEMENT_COMPLETED } from '../../templates.js'
import { showNotification } from './showNotification.js'
/**
* @param {farmhand.state} state
* @param {farmhand.state} prevState
* @returns {farmhand.state}
*/
export const updateAchievements = (state, prevState) =>
achievements.reduce((state, achievement) => {
if (
!state.completedAchievements[achievement.id] &&
achievement.condition(state, prevState)
) {
state = {
...achievement.reward(state),
completedAchievements: {
...state.completedAchievements,
[achievement.id]: true,
},
}
state = showNotification(
state,
ACHIEVEMENT_COMPLETED('', {
name: achievement.name,
rewardDescription: achievement.rewardDescription,
}),
'success'
)
}
return state
}, state)