RC-30 | Weapons | Table Setup
This commit is contained in:
parent
941c5f885f
commit
bf8440e53d
5 changed files with 97 additions and 13 deletions
|
|
@ -33,6 +33,30 @@
|
|||
</div>
|
||||
|
||||
{{!-- * Weapons --}}
|
||||
<table class="weapons">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="label col-header">{{ rc-i18n "RipCrypt.common.weapon.plural" }}</th>
|
||||
<th class="label col-header">{{ rc-i18n "RipCrypt.Apps.traits-range" }}</th>
|
||||
<th class="label col-header">{{ rc-i18n "RipCrypt.common.wear" }}</th>
|
||||
<th class="label col-header">{{ rc-i18n "RipCrypt.common.damage" }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{#each weapons as | slot |}}
|
||||
{{#if slot.empty}}
|
||||
<tr data-row="{{slot.index}}" class="{{slot.class}}">
|
||||
<td>---</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
{{else}}
|
||||
<tr data-row="index"></tr>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{{!-- * Abilities --}}
|
||||
<div class="abilities">
|
||||
|
|
@ -77,7 +101,7 @@
|
|||
<span class="max">{{speed.run}}</span>
|
||||
</div>
|
||||
<div aria-hidden="true" class="col-header label">
|
||||
{{rc-i18n "RipCrypt.Apps.HeroSummaryCardV1.move-run"}}
|
||||
{{rc-i18n "RipCrypt.Apps.move-run"}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
--input-height: 1rem;
|
||||
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 3fr) minmax(0, 2fr) minmax(0, 2fr) minmax(0, 1fr) minmax(0, 2.5fr);
|
||||
grid-template-columns: minmax(0, 3fr) minmax(0, 2fr) minmax(0, 2fr) minmax(0, 1.25fr) minmax(0, 2.5fr);
|
||||
grid-template-rows: repeat(15, minmax(0, 1fr));
|
||||
column-gap: var(--col-gap);
|
||||
|
||||
|
|
@ -23,6 +23,10 @@
|
|||
box-sizing: border-box;
|
||||
padding: 2px 4px;
|
||||
text-transform: uppercase;
|
||||
font-size: var(--font-size-14);
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.header {
|
||||
|
|
@ -53,6 +57,24 @@
|
|||
grid-template-rows: subgrid;
|
||||
}
|
||||
|
||||
.weapons {
|
||||
grid-column: 1 / span 4;
|
||||
grid-row: 7 / span 5;
|
||||
display: grid;
|
||||
grid-template-columns: subgrid;
|
||||
grid-auto-rows: min-content;
|
||||
overflow-y: auto;
|
||||
|
||||
thead,
|
||||
tbody,
|
||||
tr {
|
||||
display: contents;
|
||||
}
|
||||
.row-alt > * {
|
||||
background: inherit;
|
||||
}
|
||||
}
|
||||
|
||||
.abilities {
|
||||
grid-column: 1 / span 4;
|
||||
grid-row: 12 / span 4;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,22 @@
|
|||
--col-gap: 2px;
|
||||
}
|
||||
|
||||
table {
|
||||
all: revert;
|
||||
box-sizing: border-box;
|
||||
border-collapse: collapse;
|
||||
|
||||
thead, tbody, tr {
|
||||
all: revert;
|
||||
}
|
||||
td, th {
|
||||
all: revert;
|
||||
padding: 2px 4px;
|
||||
font-weight: initial;
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
|
||||
input {
|
||||
all: revert;
|
||||
box-sizing: border-box;
|
||||
|
|
|
|||
|
|
@ -26,7 +26,15 @@
|
|||
"gait": "Gait",
|
||||
"grip": "Grip",
|
||||
"glim": "Glim"
|
||||
}
|
||||
},
|
||||
"traits": "Traits",
|
||||
"range": "Range",
|
||||
"weapon": {
|
||||
"singular": "Weapon",
|
||||
"plural": "Weapons"
|
||||
},
|
||||
"wear": "Wear",
|
||||
"damage": "Damage"
|
||||
},
|
||||
"setting": {
|
||||
"abbrAccess": {
|
||||
|
|
@ -35,9 +43,8 @@
|
|||
}
|
||||
},
|
||||
"Apps": {
|
||||
"HeroSummaryCardV1": {
|
||||
"move-run": "@RipCrypt.common.move • @RipCrypt.common.run"
|
||||
}
|
||||
"move-run": "@RipCrypt.common.move • @RipCrypt.common.run",
|
||||
"traits-range": "@RipCrypt.common.traits • @RipCrypt.common.range"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,9 +46,10 @@ export class HeroSummaryCardV1 extends HandlebarsApplicationMixin(ActorSheetV2)
|
|||
|
||||
ctx.actor = this.document;
|
||||
|
||||
ctx = await this.prepareFatePath(ctx);
|
||||
ctx = await this.prepareAbilityRow(ctx);
|
||||
ctx = await this.prepareSpeed(ctx);
|
||||
ctx = await HeroSummaryCardV1.prepareWeapons(ctx);
|
||||
ctx = await HeroSummaryCardV1.prepareFatePath(ctx);
|
||||
ctx = await HeroSummaryCardV1.prepareAbilityRow(ctx);
|
||||
ctx = await HeroSummaryCardV1.prepareSpeed(ctx);
|
||||
|
||||
partId = partId.slice(0,1).toUpperCase() + partId.slice(1);
|
||||
if (this[`_prepare${partId}Context`] != null) {
|
||||
|
|
@ -59,7 +60,7 @@ export class HeroSummaryCardV1 extends HandlebarsApplicationMixin(ActorSheetV2)
|
|||
return ctx;
|
||||
};
|
||||
|
||||
async prepareFatePath(ctx) {
|
||||
static async prepareFatePath(ctx) {
|
||||
ctx.fate = {};
|
||||
ctx.fate.selected = ctx.actor.system.fate;
|
||||
ctx.fate.options = [
|
||||
|
|
@ -70,7 +71,7 @@ export class HeroSummaryCardV1 extends HandlebarsApplicationMixin(ActorSheetV2)
|
|||
return ctx;
|
||||
};
|
||||
|
||||
async prepareAbilityRow(ctx) {
|
||||
static async prepareAbilityRow(ctx) {
|
||||
ctx.abilities = [];
|
||||
for (const key in ctx.actor.system.ability) {
|
||||
ctx.abilities.push({
|
||||
|
|
@ -80,16 +81,30 @@ export class HeroSummaryCardV1 extends HandlebarsApplicationMixin(ActorSheetV2)
|
|||
{ value: ctx.actor.system.ability[key] },
|
||||
),
|
||||
value: ctx.actor.system.ability[key],
|
||||
readonly: !this.isEditable,
|
||||
readonly: !ctx.editable,
|
||||
});
|
||||
};
|
||||
return ctx;
|
||||
};
|
||||
|
||||
async prepareSpeed(ctx) {
|
||||
static async prepareSpeed(ctx) {
|
||||
ctx.speed = ctx.actor.system.speed;
|
||||
return ctx;
|
||||
};
|
||||
|
||||
static async prepareWeapons(ctx) {
|
||||
const limit = ctx.actor.system.limit.weapons;
|
||||
ctx.weapons = [];
|
||||
for (let i = 0; i < limit; i++) {
|
||||
ctx.weapons.push({
|
||||
data: null,
|
||||
empty: true,
|
||||
index: i + 1,
|
||||
class: i % 2 === 1 ? `row-alt` : ``,
|
||||
});
|
||||
};
|
||||
return ctx;
|
||||
}
|
||||
// #endregion
|
||||
|
||||
// #region Actions
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue