Rework backend #1
@@ -565,6 +565,7 @@ module.exports = {
|
||||
rollD20,
|
||||
formatInitMod,
|
||||
sortParticipantsByInitiative,
|
||||
syncTurnOrder,
|
||||
computeTurnOrderAfterRemoval,
|
||||
computeTurnOrderAfterAddition,
|
||||
makeParticipant,
|
||||
|
||||
+15
-10
@@ -47,7 +47,7 @@ if (typeof document !== 'undefined') {
|
||||
// ============================================================================
|
||||
|
||||
const APP_VERSION = 'v0.3';
|
||||
const { DEFAULT_MAX_HP, DEFAULT_INIT_MOD, MONSTER_DEFAULT_INIT_MOD, generateId, rollD20, formatInitMod, sortParticipantsByInitiative, computeTurnOrderAfterRemoval, computeTurnOrderAfterAddition } = shared;
|
||||
const { DEFAULT_MAX_HP, DEFAULT_INIT_MOD, MONSTER_DEFAULT_INIT_MOD, generateId, rollD20, formatInitMod, sortParticipantsByInitiative, syncTurnOrder, computeTurnOrderAfterRemoval } = shared;
|
||||
const ROLL_DISPLAY_DURATION = 5000;
|
||||
|
||||
const CONDITIONS = [
|
||||
@@ -967,7 +967,10 @@ function ParticipantManager({ encounter, encounterPath, campaignCharacters }) {
|
||||
try {
|
||||
await storage.updateDoc(encounterPath, {
|
||||
participants: updatedParticipants,
|
||||
...computeTurnOrderAfterRemoval(encounter, itemToDelete.id, updatedParticipants)
|
||||
...(encounter.isStarted ? {
|
||||
...syncTurnOrder(updatedParticipants),
|
||||
...computeTurnOrderAfterRemoval(encounter, itemToDelete.id, updatedParticipants),
|
||||
} : {}),
|
||||
});
|
||||
logAction(`${itemToDelete.name} removed from encounter`, { encounterName: encounter.name }, deleteUndoData);
|
||||
} catch (err) {
|
||||
@@ -990,9 +993,15 @@ function ParticipantManager({ encounter, encounterPath, campaignCharacters }) {
|
||||
p.id === participantId ? { ...p, isActive: newIsActive } : p
|
||||
);
|
||||
|
||||
const turnUpdates = newIsActive
|
||||
? computeTurnOrderAfterAddition(encounter, participantId)
|
||||
: computeTurnOrderAfterRemoval(encounter, participantId, updatedParticipants);
|
||||
// 1-list: stay in slot, flip isActive only. Sync turnOrderIds. Advance
|
||||
// current only if deact hits current.
|
||||
let turnUpdates = {};
|
||||
if (encounter.isStarted) {
|
||||
turnUpdates = syncTurnOrder(updatedParticipants);
|
||||
if (!newIsActive && encounter.currentTurnParticipantId === participantId) {
|
||||
turnUpdates = { ...turnUpdates, ...computeTurnOrderAfterRemoval(encounter, participantId, updatedParticipants) };
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
await storage.updateDoc(encounterPath, { participants: updatedParticipants, ...turnUpdates });
|
||||
@@ -1061,11 +1070,7 @@ function ParticipantManager({ encounter, encounterPath, campaignCharacters }) {
|
||||
return p;
|
||||
});
|
||||
|
||||
const turnUpdates = (isDead && !wasDead)
|
||||
? computeTurnOrderAfterRemoval(encounter, participantId, updatedParticipants)
|
||||
: wasResurrected
|
||||
? computeTurnOrderAfterAddition(encounter, participantId)
|
||||
: {};
|
||||
const turnUpdates = {};
|
||||
|
||||
const hpUndoData = {
|
||||
encounterPath,
|
||||
|
||||
Reference in New Issue
Block a user