mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-11 19:25:21 +01:00
* start development * finish party members tab * start resources tab * finish resources tab * finish inventory tab and add inital template to projects tab * add resource buttons actions methods * add group roll dialog * Main implementation * Fixed costs * Minor fixes and tweaks for the party sheet (#1239) * Minor fixes and tweaks for the party sheet * Fix scroll restoration for party sheet tabs * Finished GroupRoll * Removed/commented-out not yet implemented things * Commented out Difficulty since it's not used yet * Re-render party when members update (#1242) * Fixed so style applies in preview chat message * Added the clown car * Fixed so items can be dropped into the Party sheet * Added delete icon to inventory * Fixed TokenHUD token property useage. Fixed skipping roll message * Added visible modifier to GroupRoll leader result * Leader roll displays the large result display right away after rolling * Corrected tokenHUD for non-player-tokens * Fixed clowncar tokenData * Fixed TagTeam roll message and sound * Removed final TagTeamRoll roll sound * [PR] [Party Sheets] Sidebar character sheet changes (#1249) * Something experimenting * I am silly (wearning Dunce hat) * Stressful task * Armor functional to be hit * CSS Changes to accomadate pip boy * last minute change to resource section for better visual feeling * restoring old css for toggle * Added setting to toggle pip/number display * toggle functionality added * Fixed light-mode in characterSheet * Fixed multi-row resource pips display for character * Fixed separators * Added pip-display to Adversary and Companion. Some fixing on armor display --------- Co-authored-by: WBHarry <williambjrklund@gmail.com> * Fixed party height and resource armor update * Fixed deletebutton padding * Only showing expand-me icon on InventoryItem if there is a description to show * . * Fixed menu icon to be beige instead of white in dark mode --------- Co-authored-by: moliloo <dev.murilobrito@gmail.com> Co-authored-by: Carlos Fernandez <CarlosFdez@users.noreply.github.com> Co-authored-by: Nikhil Nagarajan <potter.nikhil@gmail.com>
123 lines
4.4 KiB
JavaScript
123 lines
4.4 KiB
JavaScript
import DamageReductionDialog from '../applications/dialogs/damageReductionDialog.mjs';
|
|
import Party from '../applications/sheets/actors/party.mjs';
|
|
|
|
export function handleSocketEvent({ action = null, data = {} } = {}) {
|
|
switch (action) {
|
|
case socketEvent.GMUpdate:
|
|
Hooks.callAll(socketEvent.GMUpdate, data);
|
|
break;
|
|
case socketEvent.DhpFearUpdate:
|
|
Hooks.callAll(socketEvent.DhpFearUpdate);
|
|
break;
|
|
case socketEvent.Refresh:
|
|
Hooks.call(socketEvent.Refresh, data);
|
|
break;
|
|
case socketEvent.DowntimeTrigger:
|
|
Party.downtimeMoveQuery(data);
|
|
break;
|
|
}
|
|
}
|
|
|
|
export const socketEvent = {
|
|
GMUpdate: 'DhGMUpdate',
|
|
Refresh: 'DhRefresh',
|
|
DhpFearUpdate: 'DhFearUpdate',
|
|
DowntimeTrigger: 'DowntimeTrigger'
|
|
};
|
|
|
|
export const GMUpdateEvent = {
|
|
UpdateDocument: 'DhGMUpdateDocument',
|
|
UpdateEffect: 'DhGMUpdateEffect',
|
|
UpdateSetting: 'DhGMUpdateSetting',
|
|
UpdateFear: 'DhGMUpdateFear',
|
|
UpdateCountdowns: 'DhGMUpdateCountdowns',
|
|
UpdateSaveMessage: 'DhGMUpdateSaveMessage'
|
|
};
|
|
|
|
export const RefreshType = {
|
|
Countdown: 'DhCoundownRefresh',
|
|
TagTeamRoll: 'DhTagTeamRollRefresh'
|
|
};
|
|
|
|
export const registerSocketHooks = () => {
|
|
Hooks.on(socketEvent.GMUpdate, async data => {
|
|
if (game.user.isGM) {
|
|
const document = data.uuid ? await fromUuid(data.uuid) : null;
|
|
switch (data.action) {
|
|
case GMUpdateEvent.UpdateDocument:
|
|
if (document && data.update) await document.update(data.update);
|
|
break;
|
|
case GMUpdateEvent.UpdateEffect:
|
|
if (document && data.update)
|
|
await game.system.api.fields.ActionFields.EffectsField.applyEffects.call(document, data.update);
|
|
break;
|
|
case GMUpdateEvent.UpdateSetting:
|
|
await game.settings.set(CONFIG.DH.id, data.uuid, data.update);
|
|
break;
|
|
case GMUpdateEvent.UpdateFear:
|
|
await game.settings.set(
|
|
CONFIG.DH.id,
|
|
CONFIG.DH.SETTINGS.gameSettings.Resources.Fear,
|
|
Math.max(
|
|
0,
|
|
Math.min(
|
|
game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew).maxFear,
|
|
data.update
|
|
)
|
|
)
|
|
);
|
|
break;
|
|
case GMUpdateEvent.UpdateCountdowns:
|
|
await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns, data.update);
|
|
Hooks.callAll(socketEvent.Refresh, { refreshType: RefreshType.Countdown });
|
|
break;
|
|
case GMUpdateEvent.UpdateSaveMessage:
|
|
const action = await fromUuid(data.update.action),
|
|
message = game.messages.get(data.update.message);
|
|
if (!action || !message) return;
|
|
action.updateSaveMessage(data.update.result, message, data.update.token);
|
|
break;
|
|
}
|
|
|
|
if (data.refresh) {
|
|
await game.socket.emit(`system.${CONFIG.DH.id}`, {
|
|
action: socketEvent.Refresh,
|
|
data: data.refresh
|
|
});
|
|
Hooks.call(socketEvent.Refresh, data.refresh);
|
|
}
|
|
}
|
|
});
|
|
};
|
|
|
|
export const registerUserQueries = () => {
|
|
CONFIG.queries.armorSlot = DamageReductionDialog.armorSlotQuery;
|
|
CONFIG.queries.reactionRoll = game.system.api.fields.ActionFields.SaveField.rollSaveQuery;
|
|
};
|
|
|
|
export const emitAsGM = async (eventName, callback, update, uuid = null, refresh = null) => {
|
|
if (!game.user.isGM) {
|
|
return await game.socket.emit(`system.${CONFIG.DH.id}`, {
|
|
action: socketEvent.GMUpdate,
|
|
data: {
|
|
action: eventName,
|
|
uuid,
|
|
update,
|
|
refresh
|
|
}
|
|
});
|
|
} else return callback(update);
|
|
};
|
|
|
|
export const emitAsOwner = (eventName, userId, args) => {
|
|
if (userId === game.user.id) return;
|
|
if (!eventName || !userId) return false;
|
|
game.socket.emit(`system.${CONFIG.DH.id}`, {
|
|
action: eventName,
|
|
data: {
|
|
userId,
|
|
...args
|
|
}
|
|
});
|
|
return false;
|
|
};
|