Fixes for NPC display

This commit is contained in:
TJ 2021-02-15 14:01:08 -06:00
parent 55f084592c
commit 74414e2257
8 changed files with 55 additions and 32 deletions

View file

@ -4,7 +4,7 @@
/* Basic Structure */ /* Basic Structure */
/* ----------------------------------------- */ /* ----------------------------------------- */
.sw5e.sheet.actor.npc { .sw5e.sheet.actor.npc {
min-width: 600px; min-width: 872px;
min-height: 680px; min-height: 680px;
.header-exp { .header-exp {

View file

@ -1071,7 +1071,7 @@
} }
} }
nav.sheet-navigation { nav.sheet-navigation {
grid-template-columns: repeat(4, 1fr); grid-template-columns: repeat(6, 1fr);
} }
.tab.attributes { .tab.attributes {
.traits-resources { .traits-resources {

View file

@ -42,24 +42,27 @@ export default class ActorSheet5eNPCNew extends ActorSheet5e {
}; };
// Start by classifying items into groups for rendering // Start by classifying items into groups for rendering
let [powers, other] = data.items.reduce((arr, item) => { let [forcepowers, techpowers, other] = data.items.reduce((arr, item) => {
item.img = item.img || DEFAULT_TOKEN; item.img = item.img || DEFAULT_TOKEN;
item.isStack = Number.isNumeric(item.data.quantity) && (item.data.quantity !== 1); item.isStack = Number.isNumeric(item.data.quantity) && (item.data.quantity !== 1);
item.hasUses = item.data.uses && (item.data.uses.max > 0); item.hasUses = item.data.uses && (item.data.uses.max > 0);
item.isOnCooldown = item.data.recharge && !!item.data.recharge.value && (item.data.recharge.charged === false); item.isOnCooldown = item.data.recharge && !!item.data.recharge.value && (item.data.recharge.charged === false);
item.isDepleted = item.isOnCooldown && (item.data.uses.per && (item.data.uses.value > 0)); item.isDepleted = item.isOnCooldown && (item.data.uses.per && (item.data.uses.value > 0));
item.hasTarget = !!item.data.target && !(["none",""].includes(item.data.target.type)); item.hasTarget = !!item.data.target && !(["none",""].includes(item.data.target.type));
if ( item.type === "power" ) arr[0].push(item); if ( item.type === "power" && ["lgt", "drk", "uni"].includes(item.data.school) ) arr[0].push(item);
else arr[1].push(item); else if ( item.type === "power" && ["tec"].includes(item.data.school) ) arr[1].push(item);
else arr[2].push(item);
return arr; return arr;
}, [[], []]); }, [[], [], []]);
// Apply item filters // Apply item filters
powers = this._filterItems(powers, this._filters.powerbook); forcepowers = this._filterItems(forcepowers, this._filters.forcePowerbook);
techpowers = this._filterItems(techpowers, this._filters.techPowerbook);
other = this._filterItems(other, this._filters.features); other = this._filterItems(other, this._filters.features);
// Organize Powerbook // Organize Powerbook
const powerbook = this._preparePowerbook(data, powers); const forcePowerbook = this._preparePowerbook(data, forcepowers);
const techPowerbook = this._preparePowerbook(data, techpowers);
// Organize Features // Organize Features
for ( let item of other ) { for ( let item of other ) {
@ -73,7 +76,8 @@ export default class ActorSheet5eNPCNew extends ActorSheet5e {
// Assign and return // Assign and return
data.features = Object.values(features); data.features = Object.values(features);
data.powerbook = powerbook; data.forcePowerbook = forcePowerbook;
data.techPowerbook = techPowerbook;
} }

View file

@ -1698,7 +1698,7 @@ input[type="reset"]:disabled {
display: block; display: block;
} }
.sw5e.sheet.actor.npc .swalt-sheet nav.sheet-navigation { .sw5e.sheet.actor.npc .swalt-sheet nav.sheet-navigation {
grid-template-columns: repeat(4, 1fr); grid-template-columns: repeat(6, 1fr);
} }
.sw5e.sheet.actor.npc .swalt-sheet .tab.attributes .traits-resources { .sw5e.sheet.actor.npc .swalt-sheet .tab.attributes .traits-resources {
display: block; display: block;

View file

@ -1827,7 +1827,7 @@
/* Basic Structure */ /* Basic Structure */
/* ----------------------------------------- */ /* ----------------------------------------- */
.sw5e.sheet.actor.npc { .sw5e.sheet.actor.npc {
min-width: 600px; min-width: 872px;
min-height: 680px; min-height: 680px;
} }
.sw5e.sheet.actor.npc .header-exp { .sw5e.sheet.actor.npc .header-exp {

View file

@ -74,7 +74,8 @@
<nav class="sheet-navigation root-tabs" data-group="primary"> <nav class="sheet-navigation root-tabs" data-group="primary">
<button class="item active" data-tab="attributes">{{ localize "SW5E.Attributes" }}</button> <button class="item active" data-tab="attributes">{{ localize "SW5E.Attributes" }}</button>
<button class="item" data-tab="features">{{ localize "SW5E.Features" }}</button> <button class="item" data-tab="features">{{ localize "SW5E.Features" }}</button>
<button class="item" data-tab="powerbook">{{ localize "SW5E.Powerbook" }}</button> <button class="item" data-tab="force-powerbook">{{ localize "SW5E.ForcePowerbook" }}</button>
<button class="item" data-tab="tech-powerbook">{{ localize "SW5E.TechPowerbook" }}</button>
<button class="item" data-tab="effects">{{ localize "SW5E.Effects" }}</button> <button class="item" data-tab="effects">{{ localize "SW5E.Effects" }}</button>
<button class="item" data-tab="biography">{{ localize "SW5E.Biography" }}</button> <button class="item" data-tab="biography">{{ localize "SW5E.Biography" }}</button>
</nav> </nav>
@ -82,7 +83,7 @@
{{!-- NPC Sheet Body --}} {{!-- NPC Sheet Body --}}
<section class="sheet-body"> <section class="sheet-body">
<section class="tab attributes core" data-group="primary" data-tab="attributes"> <section class="tab attributes core" data-group="primary" data-tab="attributes">
<section class="panel abilities"> <section class="panel abilities">
{{!-- Ability Scores --}} {{!-- Ability Scores --}}
<section class="scores"> <section class="scores">
<h1>Ability Scores</h1> <h1>Ability Scores</h1>
@ -171,13 +172,14 @@
{{> "systems/sw5e/templates/actors/newActor/parts/swalt-features.html" sections=features}} {{> "systems/sw5e/templates/actors/newActor/parts/swalt-features.html" sections=features}}
</div> </div>
{{!-- Powerbook Tab --}} {{!-- Powerbook Tabs --}}
<div class="tab powerbook flexcol" data-group="primary" data-tab="powerbook"> <section class="tab force-powerbook" data-group="primary" data-tab="force-powerbook">
{{> "systems/sw5e/templates/actors/newActor/parts/swalt-force-powerbook.html"}} {{> "systems/sw5e/templates/actors/newActor/parts/swalt-force-powerbook.html"}}
</div> </section>
<div class="tab powerbook flexcol" data-group="primary" data-tab="powerbook">
<section class="tab tech-powerbook" data-group="primary" data-tab="tech-powerbook">
{{> "systems/sw5e/templates/actors/newActor/parts/swalt-tech-powerbook.html"}} {{> "systems/sw5e/templates/actors/newActor/parts/swalt-tech-powerbook.html"}}
</div> </section>
{{!-- Effects Tab --}} {{!-- Effects Tab --}}
<div class="tab effects flexcol" data-group="primary" data-tab="effects"> <div class="tab effects flexcol" data-group="primary" data-tab="effects">

View file

@ -43,23 +43,24 @@
</div> </div>
<div class="resource"> <div class="resource">
{{#if isNPC}}
<h1>{{localize "SW5E.PowercasterLevel"}}</h1>
<div class="attribute-value">
<div></div>
<input class="powercasting-level" type="text" name="data.details.powerLevel" value="{{data.details.powerLevel}}" data-dtype="Number" placeholder="0" />
</div>
{{else}}
<h1>Powers Known</h1> <h1>Powers Known</h1>
<div class="attribute-value"> <div class="attribute-value">
<div></div> <div></div>
<span>{{data.attributes.force.known.max}}</span> <span>{{data.attributes.force.known.max}}</span>
</div> </div>
{{/if}}
</div> </div>
</section> </section>
{{#if isNPC}}
<div class="force-powercasting-ability">
<label>{{localize "SW5E.PowercasterLevel"}}
<input class="powercasting-level" type="text" name="data.details.powerLevel" value="{{data.details.powerLevel}}" data-dtype="Number" placeholder="0" />
</label>
</div>
{{/if}}
<ul class="filter-list" data-filter="forcePowerbook"> <ul class="filter-list" data-filter="forcePowerbook">
<li class="filter-title">{{localize "SW5E.Filter"}}</li> <li class="filter-title">{{localize "SW5E.Filter"}}</li>
<li class="filter-item" data-filter="action">{{localize "SW5E.Action"}}</li> <li class="filter-item" data-filter="action">{{localize "SW5E.Action"}}</li>

View file

@ -8,6 +8,11 @@
<span class="value-separator">/</span> <span class="value-separator">/</span>
<input name="data.attributes.tech.points.max" type="text" value="{{data.attributes.tech.points.max}}" data-dtype="Number" placeholder="0" class="value-number" /> <input name="data.attributes.tech.points.max" type="text" value="{{data.attributes.tech.points.max}}" data-dtype="Number" placeholder="0" class="value-number" />
</div> </div>
<footer class="attribute-footer">
<input name="data.attributes.tech.points.temp" type="text" placeholder="+Temp" value="{{data.attributes.tech.points.temp}}" data-dtype="Number" />
<input name="data.attributes.tech.points.tempmax" type="text" placeholder="+Max" value="{{data.attributes.tech.points.tempmax}}" data-dtype="Number" />
</footer>
</div> </div>
<div class="resource"> <div class="resource">
@ -18,15 +23,25 @@
<span>{{data.attributes.powerTechDC}}</span> <span>{{data.attributes.powerTechDC}}</span>
</div> </div>
</div> </div>
</section>
{{#if isNPC}} <div class="resource">
<div class="tech-powercasting-ability"> {{#if isNPC}}
<label>{{localize "SW5E.PowercasterLevel"}} <h1>{{localize "SW5E.PowercasterLevel"}}</h1>
<div class="attribute-value">
<div></div>
<input class="powercasting-level" type="text" name="data.details.powerLevel" value="{{data.details.powerLevel}}" data-dtype="Number" placeholder="0" /> <input class="powercasting-level" type="text" name="data.details.powerLevel" value="{{data.details.powerLevel}}" data-dtype="Number" placeholder="0" />
</label> </div>
{{else}}
<h1>Powers Known</h1>
<div class="attribute-value">
<div></div>
<span>{{data.attributes.tech.known.max}}</span>
</div>
{{/if}}
</div> </div>
{{/if}} </section>
<ul class="filter-list" data-filter="techPowerbook"> <ul class="filter-list" data-filter="techPowerbook">
<li class="filter-title">{{localize "SW5E.Filter"}}</li> <li class="filter-title">{{localize "SW5E.Filter"}}</li>
@ -37,6 +52,7 @@
</ul> </ul>
<div class="group-list-header group-grid-powers"> <div class="group-list-header group-grid-powers">
<div></div>
<div class="item-detail item-uses"></div> <div class="item-detail item-uses"></div>
<div class="item-detail item-school">{{localize "SW5E.PowerSchool"}}</div> <div class="item-detail item-school">{{localize "SW5E.PowerSchool"}}</div>
<div class="item-detail item-action">{{localize "SW5E.PowerUsage"}}</div> <div class="item-detail item-action">{{localize "SW5E.PowerUsage"}}</div>