20-05-2012, 01:41 PM
Une ébauche à tester ici : http://jsfiddle.net/K4k6q/10/
var achievements = {
'1' : {
'name' : 'Bourrin !',
'description' : 'Vous avez attaqué 5 fois de suite',
'unlock' : {
'1' : 'attaquer',
'2' : 'attaquer',
'3' : 'attaquer',
'4' : 'attaquer',
'5' : 'attaquer'
}
},
'2' : {
'name' : 'Stratège',
'description' : 'Belle stratégie pour survivre',
'unlock' : {
'1' : 'attaquer',
'2' : 'soin',
'3' : 'attaquer',
'4' : 'soin'
}
}
};
function Log() {
this.queue = [];
}
Log.prototype.trace = function(action) {
this.queue.unshift(action);
this.checkAchievements();
};
Log.prototype.checkAchievements = function() {
for (var id in achievements) {
var unlock = achievements[id].unlock;
var completed = 0;
var i = 0;
for (var step in unlock) {
var action = unlock[step];
(this.queue[i] === action) ? ++completed : null;
++i;
}
if (completed === parseInt(step)) {
alert('achievement unlocked : ' + achievements[id].name);
delete achievements[id];
}
}
};
function Personnage() {
}
Personnage.prototype.attaquer = function() {
log.trace('attaquer');
};
Personnage.prototype.soin = function() {
log.trace('soin');
};
var perso = new Personnage();
var log = new Log();
/*
* Tests
*/
/*
perso.attaquer();
perso.soin();
perso.attaquer();
perso.soin();
*/
/*
perso.attaquer();
perso.attaquer();
perso.attaquer();
perso.attaquer();
perso.attaquer();
*/
/*
perso.attaquer();
perso.soin();
perso.attaquer();
perso.attaquer();
perso.soin();
*/