forked from public/foundryvtt-reve-de-dragon
Astrologie: garder toutes les lectures d'un acteur
This commit is contained in:
@ -51,7 +51,6 @@ export class RdDCalendrier extends Application {
|
||||
this.timestamp = RdDTimestamp.getWorldTime();
|
||||
if (Misc.isUniqueConnectedGM()) { // Uniquement si GM
|
||||
RdDTimestamp.setWorldTime(this.timestamp);
|
||||
this.nombresAstraux = this.getNombresAstraux();
|
||||
this.rebuildNombresAstraux(); // Ensure always up-to-date
|
||||
}
|
||||
Hooks.on('updateSetting', async (setting, update, options, id) => this.onUpdateSetting(setting, update, options, id));
|
||||
@ -108,7 +107,10 @@ export class RdDCalendrier extends Application {
|
||||
this.timestamp = RdDTimestamp.getWorldTime();
|
||||
this.positionAiguilles()
|
||||
this.render(false);
|
||||
Hooks.callAll(APP_ASTROLOGIE_REFRESH);
|
||||
Hooks.callAll(APP_ASTROLOGIE_REFRESH)
|
||||
}
|
||||
if (setting.key == SYSTEM_RDD + '.' + "liste-nombre-astral") {
|
||||
Hooks.callAll(APP_ASTROLOGIE_REFRESH)
|
||||
}
|
||||
}
|
||||
|
||||
@ -167,7 +169,11 @@ export class RdDCalendrier extends Application {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getNombresAstraux() {
|
||||
return game.settings.get(SYSTEM_RDD, "liste-nombre-astral") ?? [];
|
||||
return game.settings.get(SYSTEM_RDD, "liste-nombre-astral") ?? []
|
||||
}
|
||||
|
||||
async setNombresAstraux(nombresAstraux) {
|
||||
await game.settings.set(SYSTEM_RDD, "liste-nombre-astral", nombresAstraux)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -225,20 +231,15 @@ export class RdDCalendrier extends Application {
|
||||
const nombreAstral = await RdDDice.rollTotal("1dh", { showDice: HIDE_DICE, rollMode: "selfroll" });
|
||||
return {
|
||||
nombreAstral: nombreAstral,
|
||||
valeursFausses: [],
|
||||
lectures: [],
|
||||
index: indexDate
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
resetNombresAstraux() {
|
||||
this.nombresAstraux = [];
|
||||
game.settings.set(SYSTEM_RDD, "liste-nombre-astral", []);
|
||||
|
||||
game.socket.emit(SYSTEM_SOCKET_ID, {
|
||||
msg: "msg_reset_nombre_astral",
|
||||
data: {}
|
||||
});
|
||||
async resetNombresAstraux() {
|
||||
await Promise.all(game.actors.filter(it => it.type == "personnage").map(async it => await it.deleteNombresAstraux()))
|
||||
await this.setNombresAstraux([])
|
||||
}
|
||||
|
||||
/**
|
||||
@ -251,39 +252,30 @@ export class RdDCalendrier extends Application {
|
||||
if (indexDate == undefined) {
|
||||
indexDate = this.timestamp.indexDate;
|
||||
}
|
||||
this.nombresAstraux = this.getNombresAstraux();
|
||||
let astralData = this.nombresAstraux.find((nombreAstral, i) => nombreAstral.index == indexDate);
|
||||
const nombresAstraux = this.getNombresAstraux()
|
||||
let astralData = nombresAstraux.find(it => it.index == indexDate);
|
||||
return astralData?.nombreAstral ?? 0;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async rebuildNombresAstraux() {
|
||||
if (Misc.isUniqueConnectedGM()) {
|
||||
let newList = [];
|
||||
const nombresAstraux = this.getNombresAstraux()
|
||||
let newNombresAstraux = [];
|
||||
for (let i = 0; i < MAX_NOMBRE_ASTRAL; i++) {
|
||||
let dayIndex = this.timestamp.indexDate + i;
|
||||
let na = this.nombresAstraux.find(n => n.index == dayIndex);
|
||||
let na = nombresAstraux.find(it => it.index == dayIndex);
|
||||
if (na) {
|
||||
newList[i] = na;
|
||||
newNombresAstraux[i] = na;
|
||||
} else {
|
||||
newList[i] = await this.ajouterNombreAstral(dayIndex);
|
||||
newNombresAstraux[i] = await this.ajouterNombreAstral(dayIndex);
|
||||
}
|
||||
}
|
||||
this.nombresAstraux = newList;
|
||||
game.settings.set(SYSTEM_RDD, "liste-nombre-astral", newList);
|
||||
game.actors.filter(it => it.isPersonnage()).forEach(actor => actor.supprimerAnciensNombresAstraux());
|
||||
this.notifyChangeNombresAstraux();
|
||||
await this.setNombresAstraux(newNombresAstraux);
|
||||
}
|
||||
}
|
||||
|
||||
notifyChangeNombresAstraux() {
|
||||
Hooks.callAll(APP_ASTROLOGIE_REFRESH);
|
||||
game.socket.emit(SYSTEM_SOCKET_ID, {
|
||||
msg: "msg_refresh_nombre_astral",
|
||||
data: {}
|
||||
});
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async setNewTimestamp(newTimestamp) {
|
||||
const oldTimestamp = this.timestamp;
|
||||
@ -373,25 +365,22 @@ export class RdDCalendrier extends Application {
|
||||
request.nbAstral = await RdDDice.rollTotal("1dhr" + request.nbAstral, {
|
||||
rollMode: "selfroll", showDice: HIDE_DICE
|
||||
});
|
||||
// Mise à jour des nombres astraux du joueur
|
||||
this.addNbAstralIncorect(request.id, request.date, request.nbAstral);
|
||||
}
|
||||
|
||||
if (Misc.getActiveUser(request.userId)?.isGM) {
|
||||
RdDUtility.responseNombreAstral(request);
|
||||
} else {
|
||||
game.socket.emit(SYSTEM_SOCKET_ID, {
|
||||
msg: "msg_response_nombre_astral",
|
||||
data: request
|
||||
});
|
||||
}
|
||||
// Mise à jour des nombres astraux du joueur
|
||||
await this.addNbAstralJoueur(actor, request.date, request.nbAstral, request.isValid)
|
||||
Hooks.callAll(APP_ASTROLOGIE_REFRESH)
|
||||
game.socket.emit(SYSTEM_SOCKET_ID, { msg: "msg_app_astrologie_refresh", data: {} })
|
||||
}
|
||||
}
|
||||
|
||||
addNbAstralIncorect(actorId, date, nbAstral) {
|
||||
const astralData = this.nombresAstraux.find((nombreAstral, i) => nombreAstral.index == date);
|
||||
astralData.valeursFausses.push({ actorId: actorId, nombreAstral: nbAstral });
|
||||
game.settings.set(SYSTEM_RDD, "liste-nombre-astral", this.nombresAstraux);
|
||||
|
||||
async addNbAstralJoueur(actor, date, nbAstral, isValid) {
|
||||
const nombresAstraux = this.getNombresAstraux()
|
||||
const astralData = nombresAstraux.find(it => it.index == date)
|
||||
if (astralData) {
|
||||
astralData.lectures.push({ actorId: actor.id, nombreAstral: nbAstral });
|
||||
await this.setNombresAstraux(nombresAstraux);
|
||||
await actor.ajouteNombreAstral(date, nbAstral, isValid);
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
Reference in New Issue
Block a user