Implement a setting to hide party actors in the carousel, update rendering logic, and bump the module version.
This commit is contained in:
parent
4a550233c0
commit
bf1f956f2b
4 changed files with 55 additions and 7 deletions
|
|
@ -278,6 +278,26 @@ Hooks.once("init", () => {
|
|||
onChange: () => { if (document.body.classList.contains("stream")) location.reload(); }
|
||||
});
|
||||
|
||||
game.settings.register("dh-stream-overlay", "carouselHidePlayers", {
|
||||
name: "DH_STREAM_OVERLAY.Settings.CarouselHidePlayers",
|
||||
hint: "DH_STREAM_OVERLAY.Settings.CarouselHidePlayersHint",
|
||||
scope: "world",
|
||||
config: true,
|
||||
type: Boolean,
|
||||
default: false,
|
||||
onChange: () => { if (document.body.classList.contains("stream")) location.reload(); }
|
||||
});
|
||||
|
||||
game.settings.register("dh-stream-overlay", "carouselHidePartyActor", {
|
||||
name: "DH_STREAM_OVERLAY.Settings.CarouselHidePartyActor",
|
||||
hint: "DH_STREAM_OVERLAY.Settings.CarouselHidePartyActorHint",
|
||||
scope: "world",
|
||||
config: true,
|
||||
type: Boolean,
|
||||
default: false,
|
||||
onChange: () => { if (document.body.classList.contains("stream")) location.reload(); }
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
// =============================================================================
|
||||
|
|
@ -504,10 +524,12 @@ function renderPartyOverlay(container) {
|
|||
let carouselEnabled = false;
|
||||
let carouselEffect = "fade";
|
||||
let carouselGMMode = "cycle";
|
||||
let carouselHidePartyActor = false;
|
||||
try {
|
||||
carouselEnabled = game.settings.get("dh-stream-overlay", "carouselEnabled");
|
||||
carouselEffect = game.settings.get("dh-stream-overlay", "carouselEffect");
|
||||
carouselGMMode = game.settings.get("dh-stream-overlay", "carouselGMMode");
|
||||
carouselHidePartyActor = game.settings.get("dh-stream-overlay", "carouselHidePartyActor");
|
||||
} catch (e) { }
|
||||
|
||||
const renderPips = (val, max, type) => {
|
||||
|
|
@ -578,6 +600,9 @@ function renderPartyOverlay(container) {
|
|||
players.forEach(user => {
|
||||
const actor = user.character;
|
||||
if (!actor) return;
|
||||
|
||||
// Filter Party Actor from Carousel if enabled
|
||||
if (carouselEnabled && carouselHidePartyActor && actor.type.toLowerCase() === "party") return;
|
||||
const system = actor.system || {};
|
||||
const items = actor.items;
|
||||
|
||||
|
|
@ -759,21 +784,36 @@ function renderPartyOverlay(container) {
|
|||
let carouselClass = `carousel-mode effect-${carouselEffect}`;
|
||||
|
||||
// GM Logic
|
||||
// Check hide players setting
|
||||
let hidePlayers = false;
|
||||
try { hidePlayers = game.settings.get("dh-stream-overlay", "carouselHidePlayers"); } catch (e) { }
|
||||
|
||||
if (carouselGMMode === "static") {
|
||||
// Static grid for GM, Carousel for Players
|
||||
// Wrap in a flex container
|
||||
container.innerHTML = `
|
||||
<div class="dh-carousel-wrapper">
|
||||
${gms.length > 0 ? `<div class="dh-party-grid layout-${layoutMode} dh-static-gm">${gmHtml}</div>` : ""}
|
||||
${players.length > 0 ? `<div class="dh-party-grid layout-${layoutMode} ${carouselClass}">${playerHtml}</div>` : ""}
|
||||
${(!hidePlayers && players.length > 0) ? `<div class="dh-party-grid layout-${layoutMode} ${carouselClass}">${playerHtml}</div>` : ""}
|
||||
</div>`;
|
||||
|
||||
} else if (carouselGMMode === "hidden") {
|
||||
// Only Players in Carousel
|
||||
container.innerHTML = `<div class="dh-party-grid layout-${layoutMode} ${carouselClass}">${playerHtml}</div>`;
|
||||
if (!hidePlayers && players.length > 0) {
|
||||
container.innerHTML = `<div class="dh-party-grid layout-${layoutMode} ${carouselClass}">${playerHtml}</div>`;
|
||||
} else {
|
||||
container.innerHTML = ""; // Nothing to show
|
||||
}
|
||||
} else {
|
||||
// "cycle" or default - Mixed
|
||||
container.innerHTML = `<div class="dh-party-grid layout-${layoutMode} ${carouselClass}">${gmHtml}${playerHtml}</div>`;
|
||||
let mixedContent = gmHtml;
|
||||
if (!hidePlayers) mixedContent += playerHtml;
|
||||
|
||||
if (mixedContent) {
|
||||
container.innerHTML = `<div class="dh-party-grid layout-${layoutMode} ${carouselClass}">${mixedContent}</div>`;
|
||||
} else {
|
||||
container.innerHTML = "";
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue