27-05-2013, 08:06 PM
Cela ressemble à un bricolage de sémaphores sur du "long terme" (on compte en minutes, pas en milliseconde) hmm...
Cela ne me semble pas trop puer... Pour autant, je ne partirai pas que là-dessus. A ta place, j'utiliserai non pas un booléen, mais un timestamp, qui indique le début du combat, ou la date de dernière activité du combat. Si cette date est trop "ancienne" (passé 5 minutes par exemple), le personnage n'est pas bloqué. Tant que cette date est récente (moins de 5 minutes), elle indique que le joueur est bloqué. Ainsi, tu pourras savoir qui est en combat, et depuis combien de temps (à condition d'enregistrer la date de début de combat ET la date de dernière activité, sinon, le "depuis combien de temps" n'est pas déterminé).
Cela évite les bisebilles avec des AJAX qui ne se termineront peut-être jamais ou qui pourront être relancés en boucle pour faire croire que le personnage combat alors qu'il ne combat pas (et ainsi, on rendrait son personnage "intouchable" car on le coincerai dans une boucle infinie d'un "faux-combat").
Cela ne me semble pas trop puer... Pour autant, je ne partirai pas que là-dessus. A ta place, j'utiliserai non pas un booléen, mais un timestamp, qui indique le début du combat, ou la date de dernière activité du combat. Si cette date est trop "ancienne" (passé 5 minutes par exemple), le personnage n'est pas bloqué. Tant que cette date est récente (moins de 5 minutes), elle indique que le joueur est bloqué. Ainsi, tu pourras savoir qui est en combat, et depuis combien de temps (à condition d'enregistrer la date de début de combat ET la date de dernière activité, sinon, le "depuis combien de temps" n'est pas déterminé).
Cela évite les bisebilles avec des AJAX qui ne se termineront peut-être jamais ou qui pourront être relancés en boucle pour faire croire que le personnage combat alors qu'il ne combat pas (et ainsi, on rendrait son personnage "intouchable" car on le coincerai dans une boucle infinie d'un "faux-combat").