Rework backend #1

Merged
robert merged 86 commits from rework-backend into main 2026-07-01 19:29:34 -04:00
2 changed files with 16 additions and 10 deletions
Showing only changes of commit 3ea67019d2 - Show all commits
+1
View File
@@ -565,6 +565,7 @@ module.exports = {
rollD20,
formatInitMod,
sortParticipantsByInitiative,
syncTurnOrder,
computeTurnOrderAfterRemoval,
computeTurnOrderAfterAddition,
makeParticipant,
+15 -10
View File
@@ -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,