Finish the backpack panel

This commit is contained in:
Oliver-Akins 2023-12-24 11:58:02 -07:00
parent 071e023c2f
commit a8619246fe
6 changed files with 91 additions and 22 deletions

View file

@ -166,14 +166,27 @@
flex-direction: row;
align-items: center;
}
.dotdungeon .actor--pc .panel--backpack .row .grow {
.dotdungeon .actor--pc .panel--backpack .col {
display: flex;
flex-direction: column;
}
.dotdungeon .actor--pc .panel--backpack .grow {
flex-grow: 1;
}
.dotdungeon .actor--pc .panel--backpack .panel__content {
display: flex;
flex-direction: column;
gap: 4px;
}
.dotdungeon .actor--pc .panel--backpack .bytes-input,
.dotdungeon .actor--pc .panel--backpack .supplies-count,
.dotdungeon .actor--pc .panel--backpack .materials-count {
width: 25%;
text-align: center;
}
.dotdungeon .actor--pc .panel--backpack textarea {
resize: vertical;
}
.dotdungeon .actor--pc .panel--sync {
grid-area: sync;
}
@ -304,4 +317,4 @@
resize: vertical;
}
/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../styles/generic.scss%22,%22../styles/mixins/_foundry.scss%22,%22../styles/_vars.scss%22,%22../styles/mixins/_partials.scss%22,%22../styles/sheets/partials/stat.scss%22,%22../styles/sheets/partials/skill.scss%22,%22../styles/sheets/partials/panel.scss%22,%22../styles/mixins/_breakpoints.scss%22,%22../styles/sheets/actor/mvp.scss%22,%22../styles/sheets/actor/sync/basic.scss%22,%22../styles/sheets/items/aspect.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAIQ;AAKP;EACC;;AAED;EACC;;AAGD;ECfA;EACA;EACA;EDeC,aElBW;EFmBX;;AAGD;EACC;;AAGD;ECzBA;EACA;EACA;EDyBC;EACA;;AAGD;AAAA;AAAA;EAGC;EGhCD;EACA;EACA;EACA;EACA;EACA,aDPW;;ACSX;AAAA;AAAA;AAAA;AAAA;EAEC;;AH2BD;EACC;;AAGD;EACC;EACA,aE5CU;;;AFiDZ;EACC;;AAEA;EACC;EACA,YEpDW;;;AEHb;EACC;EACA;EACA;;ACHD;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;;ACdH;EACC;EACA;EAEA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;ELlBD;EACA;EACA;EKkBE;EACA;EACA,aJvBU;EIwBV;;AAGD;EAEC,QADO;EAEP,OAFO;EAGP;;AAIF;EACC;;;AC7BD;EDkCA;IACC;IACA;;;AExCF;EACC;EACA,qBACC;EASD;EACA,oBACC;EAGD;EACA;;AAGC;EACC;;AACA;EACC;EACA;;AAGD;EACC;;AAGF;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AAEA;EACC;;AAIF;AAAA;EAEC;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;;AAEA;AAAA;EACC;;AAIF;EACC;EACA;;AAGF;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAED;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAED;EACC;;AAED;EACC;;AAED;EACC;;;AD1IF;ECkJC;IACC;IACA;IACA,qBACC;;EAkBC;IACC;;EAKD;IACC;IACA;;;AD1KL;ECoLC;IACC;IACA;IACA,qBACC;;EAeC;IACC;;;AC5ML;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAGD;EACC;EACA;;AAMA;EACC;EACA;;;AFlBH;EE4BG;IACC;IACA;;;ACzCL;EACC;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA%22,%22file%22:%22root.css%22%7D */
/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../styles/generic.scss%22,%22../styles/mixins/_foundry.scss%22,%22../styles/_vars.scss%22,%22../styles/mixins/_partials.scss%22,%22../styles/sheets/partials/stat.scss%22,%22../styles/sheets/partials/skill.scss%22,%22../styles/sheets/partials/panel.scss%22,%22../styles/mixins/_breakpoints.scss%22,%22../styles/sheets/actor/mvp.scss%22,%22../styles/sheets/actor/sync/basic.scss%22,%22../styles/sheets/items/aspect.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAIQ;AAKP;EACC;;AAED;EACC;;AAGD;ECfA;EACA;EACA;EDeC,aElBW;EFmBX;;AAGD;EACC;;AAGD;ECzBA;EACA;EACA;EDyBC;EACA;;AAGD;AAAA;AAAA;EAGC;EGhCD;EACA;EACA;EACA;EACA;EACA,aDPW;;ACSX;AAAA;AAAA;AAAA;AAAA;EAEC;;AH2BD;EACC;;AAGD;EACC;EACA,aE5CU;;;AFiDZ;EACC;;AAEA;EACC;EACA,YEpDW;;;AEHb;EACC;EACA;EACA;;ACHD;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;;ACdH;EACC;EACA;EAEA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;ELlBD;EACA;EACA;EKkBE;EACA;EACA,aJvBU;EIwBV;;AAGD;EAEC,QADO;EAEP,OAFO;EAGP;;AAIF;EACC;;;AC7BD;EDkCA;IACC;IACA;;;AExCF;EACC;EACA,qBACC;EASD;EACA,oBACC;EAGD;EACA;;AAGC;EACC;;AACA;EACC;EACA;;AAGD;EACC;;AAGF;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;;AAGD;EACC;EACA;EACA;;AAGD;AAAA;AAAA;EAGC;EACA;;AAGD;EACC;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;;AAEA;AAAA;EACC;;AAIF;EACC;EACA;;AAGF;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAED;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAED;EACC;;AAED;EACC;;AAED;EACC;;;ADxJF;ECgKC;IACC;IACA;IACA,qBACC;;EAkBC;IACC;;EAKD;IACC;IACA;;;ADxLL;ECkMC;IACC;IACA;IACA,qBACC;;EAeC;IACC;;;AC1NL;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAGD;EACC;EACA;;AAMA;EACC;EACA;;;AFlBH;EE4BG;IACC;IACA;;;ACzCL;EACC;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA%22,%22file%22:%22root.css%22%7D */

View file

@ -44,14 +44,27 @@
flex-direction: row;
align-items: center;
}
.dotdungeon .actor--pc .panel--backpack .row .grow {
.dotdungeon .actor--pc .panel--backpack .col {
display: flex;
flex-direction: column;
}
.dotdungeon .actor--pc .panel--backpack .grow {
flex-grow: 1;
}
.dotdungeon .actor--pc .panel--backpack .panel__content {
display: flex;
flex-direction: column;
gap: 4px;
}
.dotdungeon .actor--pc .panel--backpack .bytes-input,
.dotdungeon .actor--pc .panel--backpack .supplies-count,
.dotdungeon .actor--pc .panel--backpack .materials-count {
width: 25%;
text-align: center;
}
.dotdungeon .actor--pc .panel--backpack textarea {
resize: vertical;
}
.dotdungeon .actor--pc .panel--sync {
grid-area: sync;
}
@ -139,4 +152,4 @@
}
}
/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../../../styles/sheets/actor/mvp.scss%22,%22../../../styles/mixins/_breakpoints.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAGA;EACC;EACA,qBACC;EASD;EACA,oBACC;EAGD;EACA;;AAGC;EACC;;AACA;EACC;EACA;;AAGD;EACC;;AAGF;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AAEA;EACC;;AAIF;AAAA;EAEC;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;;AAEA;AAAA;EACC;;AAIF;EACC;EACA;;AAGF;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAED;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAED;EACC;;AAED;EACC;;AAED;EACC;;;AC1IF;EDkJC;IACC;IACA;IACA,qBACC;;EAkBC;IACC;;EAKD;IACC;IACA;;;AC1KL;EDoLC;IACC;IACA;IACA,qBACC;;EAeC;IACC%22,%22file%22:%22mvp.css%22%7D */
/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../../../styles/sheets/actor/mvp.scss%22,%22../../../styles/mixins/_breakpoints.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAGA;EACC;EACA,qBACC;EASD;EACA,oBACC;EAGD;EACA;;AAGC;EACC;;AACA;EACC;EACA;;AAGD;EACC;;AAGF;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;;AAGD;EACC;EACA;EACA;;AAGD;AAAA;AAAA;EAGC;EACA;;AAGD;EACC;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;;AAEA;AAAA;EACC;;AAIF;EACC;EACA;;AAGF;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAED;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAED;EACC;;AAED;EACC;;AAED;EACC;;;ACxJF;EDgKC;IACC;IACA;IACA,qBACC;;EAkBC;IACC;;EAKD;IACC;IACA;;;ACxLL;EDkMC;IACC;IACA;IACA,qBACC;;EAeC;IACC%22,%22file%22:%22mvp.css%22%7D */

View file

@ -86,6 +86,7 @@
"dotdungeon.actor.pc.profile.name.placeholder": "Character Name...",
"dotdungeon.actor.pc.backpack.materials.label": "Materials",
"dotdungeon.actor.pc.backpack.bytes.label": "Bytes",
"dotdungeon.actor.sync.circle.group": "Group Name",
@ -105,5 +106,6 @@
"dotdungeon.aria.actor.pc.skill.dropdown": "Your expertise level in the {skill} skill",
"dotdungeon.aria.actor.pc.skill.button.roll": "Roll a {skill} check",
"dotdungeon.aria.actor.pc.input.materials": "The number of materials you have available",
"dotdungeon.aria.actor.pc.input.supplies": "The number of supplies you have available"
"dotdungeon.aria.actor.pc.input.supplies": "The number of supplies you have available",
"dotdungeon.aria.actor.pc.input.bytes": "The number of bytes you have"
}

View file

@ -1,5 +1,6 @@
function diceChoiceField() {
return new foundry.data.fields.StringField({
initial: ``,
blank: true,
trim: true,
options() {
@ -10,6 +11,7 @@ function diceChoiceField() {
function trainingLevelField() {
return new foundry.data.fields.StringField({
initial: ``,
blank: true,
trim: true,
options: [ ``, `locked`, `+2`, `+4` ],
@ -21,8 +23,9 @@ export class PlayerData extends foundry.abstract.DataModel {
const fields = foundry.data.fields;
return {
bytes: new fields.NumberField({
initial: 0,
min: 0,
integer: true,
positive: true,
}),
stats: new fields.SchemaField({
build: diceChoiceField(),
@ -69,14 +72,14 @@ export class PlayerData extends foundry.abstract.DataModel {
used: new fields.BooleanField(),
}),
roles: new fields.SchemaField({
r1: new fields.StringField({ initial: ``, blank: true, trim: true }),
r2: new fields.StringField({ initial: ``, blank: true, trim: true }),
r3: new fields.StringField({ initial: ``, blank: true, trim: true }),
r4: new fields.StringField({ initial: ``, blank: true, trim: true }),
r1: new fields.StringField({ blank: true, trim: true }),
r2: new fields.StringField({ blank: true, trim: true }),
r3: new fields.StringField({ blank: true, trim: true }),
r4: new fields.StringField({ blank: true, trim: true }),
}),
weapon: new fields.SchemaField({
name: new fields.HTMLField(),
damage: new fields.HTMLField(),
name: new fields.StringField(),
damage: new fields.StringField(),
ammo: new fields.SchemaField({
quivers: new fields.NumberField({ min: 0, max: 5, integer: true }),
mags: new fields.NumberField({ min: 0, max: 5, integer: true }),
@ -96,19 +99,19 @@ export class PlayerData extends foundry.abstract.DataModel {
integer: true
}),
pet: new fields.SchemaField({
name: new fields.HTMLField(),
info: new fields.HTMLField(),
name: new fields.StringField(),
info: new fields.StringField(),
}),
transport: new fields.SchemaField({
name: new fields.HTMLField(),
name: new fields.StringField(),
upkeep: new fields.NumberField({ min: 0, integer: true }),
info: new fields.HTMLField(),
info: new fields.StringField(),
}),
spells: new fields.ArrayField(
new fields.SchemaField({
name: new fields.HTMLField(),
name: new fields.StringField(),
cost: new fields.NumberField(),
info: new fields.HTMLField(),
info: new fields.StringField(),
})
),
respawns: new fields.SchemaField({
@ -121,6 +124,7 @@ export class PlayerData extends foundry.abstract.DataModel {
integer: true,
initial: 0,
}),
inventoryString: new fields.StringField({ blank: true, trim: true }),
};
};
};

View file

@ -61,17 +61,31 @@
display: flex;
flex-direction: row;
align-items: center;
.grow {
flex-grow: 1;
}
}
.col {
display: flex;
flex-direction: column;
}
.grow {
flex-grow: 1;
}
.panel__content {
display: flex;
flex-direction: column;
gap: 4px;
}
.bytes-input,
.supplies-count,
.materials-count {
width: 25%;
text-align: center;
}
textarea {
resize: vertical;
}
}
&--sync {
grid-area: sync;

View file

@ -64,6 +64,21 @@
{{#> dotdungeon.panel class="backpack" title="dotdungeon.actor.pc.panel.backpack"}}
<label class="row">
<span class="grow">
{{localize "dotdungeon.actor.pc.backpack.bytes.label"}}
</span>
<input
class="bytes-input"
type="number"
name="system.bytes"
value="{{system.bytes}}"
min="0"
aria-label="{{localize "dotdungeon.aria.actor.pc.input.bytes"}}"
aria-valuemin="0"
aria-valuenow="{{system.bytes}}"
>
</label>
<label class="row">
<span class="grow">
{{localize
@ -83,6 +98,8 @@
type="number"
name="system.supplies"
value="{{system.supplies}}"
min="0"
max="5"
aria-label="{{localize "dotdungeon.aria.actor.pc.input.supplies"}}"
aria-valuemin="0"
aria-valuemax="5"
@ -98,12 +115,18 @@
type="number"
name="system.materials"
value="{{system.materials}}"
min="0"
max="5"
aria-label="{{localize "dotdungeon.aria.actor.pc.input.materials"}}"
aria-valuemin="0"
aria-valuemax="5"
aria-valuenow="{{system.supplies}}"
>
</label>
<label class="grow col">
Inventory
<textarea class="grow" name="system.inventoryString">{{system.inventoryString}}</textarea>
</label>
{{/ dotdungeon.panel}}