Work towards using pop-out item sheets instead of inline-editing because inline-editing is annoying and kinda ugly TBH

This commit is contained in:
Oliver-Akins 2024-01-10 22:18:18 -07:00
parent dcdc1b7764
commit 516f7ac826
13 changed files with 150 additions and 73 deletions

View file

@ -43,6 +43,9 @@
.dotdungeon > .window-content textarea:active { .dotdungeon > .window-content textarea:active {
border-color: rgb(0, 0, 0); border-color: rgb(0, 0, 0);
} }
.dotdungeon > .window-content textarea {
resize: vertical;
}
.dotdungeon > .window-content select, .dotdungeon > .window-content select:hover { .dotdungeon > .window-content select, .dotdungeon > .window-content select:hover {
cursor: pointer; cursor: pointer;
} }
@ -63,4 +66,4 @@
word-break: break-all; word-break: break-all;
} }
/*# 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%5D,%22names%22:%5B%5D,%22mappings%22:%22AAIQ;AAKP;EACC;;AAED;EACC;;AAGD;ECfA;EACA;EACA;EDeC,aEhBW;EFiBX;;AAGD;EACC;;AAGD;ECzBA;EACA;EACA;EDyBC;EACA;;AAEA;EACC;;AAIF;AAAA;AAAA;EAGC;EGpCD;EACA;EACA;EACA;EACA;EACA,aDLW;;ACOX;AAAA;AAAA;AAAA;AAAA;EAEC;;AH+BD;EACC;;AAEA;EACC;;;AAMH;EACC;;AAEA;EACC;EACA,YErDW;;AFuDX;EACC;EACA,aE3DS;EF4DT%22,%22file%22:%22generic.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%5D,%22names%22:%5B%5D,%22mappings%22:%22AAIQ;AAKP;EACC;;AAED;EACC;;AAGD;ECfA;EACA;EACA;EDeC,aEhBW;EFiBX;;AAGD;EACC;;AAGD;ECzBA;EACA;EACA;EDyBC;EACA;;AAEA;EACC;;AAIF;AAAA;AAAA;EAGC;EGpCD;EACA;EACA;EACA;EACA;EACA,aDLW;;ACOX;AAAA;AAAA;AAAA;AAAA;EAEC;;AH+BD;EACC;;AAGD;EACC;;AAEA;EACC;;;AAMH;EACC;;AAEA;EACC;EACA,YEzDW;;AF2DX;EACC;EACA,aE/DS;EFgET%22,%22file%22:%22generic.css%22%7D */

View file

@ -43,6 +43,9 @@
.dotdungeon > .window-content textarea:active { .dotdungeon > .window-content textarea:active {
border-color: rgb(0, 0, 0); border-color: rgb(0, 0, 0);
} }
.dotdungeon > .window-content textarea {
resize: vertical;
}
.dotdungeon > .window-content select, .dotdungeon > .window-content select:hover { .dotdungeon > .window-content select, .dotdungeon > .window-content select:hover {
cursor: pointer; cursor: pointer;
} }
@ -379,6 +382,9 @@
flex-direction: column; flex-direction: column;
gap: 4px; gap: 4px;
} }
.dotdungeon .actor--pc .panel--spells .spell .placeholder {
opacity: 75%;
}
.dotdungeon .actor--pc .panel--spells .spell__actions { .dotdungeon .actor--pc .panel--spells .spell__actions {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
@ -476,4 +482,4 @@
resize: vertical; 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/global/icons.scss%22,%22../styles/global/buttons.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,%22../styles/sheets/items/spell.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAIQ;AAKP;EACC;;AAED;EACC;;AAGD;ECfA;EACA;EACA;EDeC,aEhBW;EFiBX;;AAGD;EACC;;AAGD;ECzBA;EACA;EACA;EDyBC;EACA;;AAEA;EACC;;AAIF;AAAA;AAAA;EAGC;EGpCD;EACA;EACA;EACA;EACA;EACA,aDLW;;ACOX;AAAA;AAAA;AAAA;AAAA;EAEC;;AH+BD;EACC;;AAEA;EACC;;;AAMH;EACC;;AAEA;EACC;EACA,YErDW;;AFuDX;EACC;EACA,aE3DS;EF4DT;;;AI5DF;EACC;EACA;EACA;;AAIC;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;;ACTH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,YHXc;EGYd,OHXe;;AGYf;EACC;EACA,OHfa;EGgBb,cHhBa;;AGoBf;EACC,YHlBc;EGmBd,OHlBe;;AGmBf;EACC;EACA,OHtBa;EGuBb,cHvBa;;AG2Bf;EACC,YHzBa;EG0Bb,OHzBc;;AG0Bd;EACC;EACA,OH7BY;EG8BZ,cH9BY;;AGkCd;EACC;;AAID;EACC;;AACA;EACC;;;ACvDJ;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;EPlBD;EACA;EACA;EOkBE;EACA;EACA,aNrBU;EMsBV;;AAGD;EAEC,QADO;EAEP,OAFO;EAGP;;AAIF;EACC;;;AC7BD;EDkCA;IACC;IACA;;;AExCF;EACC;EACA,qBACC;EASD;EACA,oBACC;EAGD;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIA;EACC;;AAMF;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;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AAIH;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAEA;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAIH;EACC;;AAED;EACC;;AAED;EACC;;;ADxNF;ECgOC;IACC;IACA;IACA,qBACC;;EAkBC;IACC;;EAKD;IACC;IACA;;;ADxPL;ECkQC;IACC;IACA;IACA,qBACC;;EAeC;IACC;;;AC1RL;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;;;ACXF;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/global/icons.scss%22,%22../styles/global/buttons.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,%22../styles/sheets/items/spell.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAIQ;AAKP;EACC;;AAED;EACC;;AAGD;ECfA;EACA;EACA;EDeC,aEhBW;EFiBX;;AAGD;EACC;;AAGD;ECzBA;EACA;EACA;EDyBC;EACA;;AAEA;EACC;;AAIF;AAAA;AAAA;EAGC;EGpCD;EACA;EACA;EACA;EACA;EACA,aDLW;;ACOX;AAAA;AAAA;AAAA;AAAA;EAEC;;AH+BD;EACC;;AAGD;EACC;;AAEA;EACC;;;AAMH;EACC;;AAEA;EACC;EACA,YEzDW;;AF2DX;EACC;EACA,aE/DS;EFgET;;;AIhEF;EACC;EACA;EACA;;AAIC;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;;ACTH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,YHXc;EGYd,OHXe;;AGYf;EACC;EACA,OHfa;EGgBb,cHhBa;;AGoBf;EACC,YHlBc;EGmBd,OHlBe;;AGmBf;EACC;EACA,OHtBa;EGuBb,cHvBa;;AG2Bf;EACC,YHzBa;EG0Bb,OHzBc;;AG0Bd;EACC;EACA,OH7BY;EG8BZ,cH9BY;;AGkCd;EACC;;AAID;EACC;;AACA;EACC;;;ACvDJ;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;EPlBD;EACA;EACA;EOkBE;EACA;EACA,aNrBU;EMsBV;;AAGD;EAEC,QADO;EAEP,OAFO;EAGP;;AAIF;EACC;;;AC7BD;EDkCA;IACC;IACA;;;AExCF;EACC;EACA,qBACC;EASD;EACA,oBACC;EAGD;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIA;EACC;;AAMF;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;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AAIH;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAEA;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;EACA;;AAIH;EACC;;AAED;EACC;;AAED;EACC;;;AD5NF;ECoOC;IACC;IACA;IACA,qBACC;;EAkBC;IACC;;EAKD;IACC;IACA;;;AD5PL;ECsQC;IACC;IACA;IACA,qBACC;;EAeC;IACC;;;AC9RL;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;;;ACXF;EACC;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA%22,%22file%22:%22root.css%22%7D */

View file

@ -165,6 +165,9 @@
flex-direction: column; flex-direction: column;
gap: 4px; gap: 4px;
} }
.dotdungeon .actor--pc .panel--spells .spell .placeholder {
opacity: 75%;
}
.dotdungeon .actor--pc .panel--spells .spell__actions { .dotdungeon .actor--pc .panel--spells .spell__actions {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
@ -206,4 +209,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;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIA;EACC;;AAMF;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;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AAIH;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAEA;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAIH;EACC;;AAED;EACC;;AAED;EACC;;;ACxNF;EDgOC;IACC;IACA;IACA,qBACC;;EAkBC;IACC;;EAKD;IACC;IACA;;;ACxPL;EDkQC;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;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIA;EACC;;AAMF;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;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AAIH;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAEA;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;EACA;;AAIH;EACC;;AAED;EACC;;AAED;EACC;;;AC5NF;EDoOC;IACC;IACA;IACA,qBACC;;EAkBC;IACC;;EAKD;IACC;IACA;;;AC5PL;EDsQC;IACC;IACA;IACA,qBACC;;EAeC;IACC%22,%22file%22:%22mvp.css%22%7D */

View file

@ -175,15 +175,17 @@
"empty": "You have no spells yet", "empty": "You have no spells yet",
"title.cost": "(Cost: {cost})", "title.cost": "(Cost: {cost})",
"name.label": "Name", "name.label": "Name",
"cost": { "skill.label": "Spell Skill: {skill}",
"label": "Cost",
"placeholder": "Bytes per spell cast..."
},
"description": { "description": {
"label": "Description", "label": "Description:",
"placeholder": "This spell does..." "placeholder": "There's no description for this spell yet..."
}, },
"add.label": "Add Spell" "add.label": "Add Spell",
"aria": {
"edit": "",
"delete": "Delete spell",
"chat": "Send spell information to chat"
}
} }
}, },
"sync": { "sync": {
@ -204,6 +206,10 @@
"name.placeholder": "Name...", "name.placeholder": "Name...",
"cost.label": "Cost", "cost.label": "Cost",
"description.label": "Description", "description.label": "Description",
"skill.label": "Spell Skill",
"options": {
"no-skill": "No Skill"
},
"aria": { "aria": {
"name": "The spell's name", "name": "The spell's name",
"cost": "The amount of bytes it takes to cast the spell", "cost": "The amount of bytes it takes to cast the spell",
@ -221,9 +227,41 @@
"spell": { "spell": {
"delete": { "delete": {
"title": "Confirm Spell Deletion", "title": "Confirm Spell Deletion",
"content": "Are you sure you would like to delete the spell: {name}<br /><br />This action cannot be reversed." "content": "Are you sure you would like to delete the spell: {name}<br /><br />This action cannot be undone."
} }
} }
},
"keyword": {
"stat": {
"build": "Build",
"meta": "Meta",
"presence": "Presence",
"hands": "Hands",
"tilt": "Tilt",
"rng": "RNG"
},
"skill": {
"defense": "Defense",
"magic": "Magic",
"melee": "Melee",
"platforming": "Platforming",
"strength": "Strength",
"alchemy": "Alchemy",
"arcanum": "Arcanum",
"dreams": "Dream",
"lore": "Lore",
"navigation": "Navigation",
"animal_handling": "Animal Handling",
"perception": "Perception",
"sneak": "Sneak",
"speech": "Speech",
"vibes": "Vibes",
"accuracy": "Accuracy",
"crafting": "Crafting",
"engineering": "Engineering",
"explosives": "Explosives",
"piloting": "Piloting"
}
} }
}, },

View file

@ -6,17 +6,37 @@ const damageTypes = [ `slashing`, `piercing`, `smashing`, `gun`, `neon`, `shadow
const ammoTypes = [`quivers`, `mags`, `cells`]; const ammoTypes = [`quivers`, `mags`, `cells`];
const stats = [ `build`, `meta`, `presence`, `hands`, `tilt`, `rng` ];
const buildSkills = [ "defense", "magic", "melee", "platforming", "strength", ];
const metaSkills = [ "alchemy", "arcanum", "dreams", "lore", "navigation", ];
const presenceSkills = [ "animal_handling", "perception", "sneak", "speech", "vibes", ];
const handsSkills = [ "accuracy", "crafting", "engineering", "explosives", "piloting", ];
const allSkills = [
...buildSkills,
...metaSkills,
...presenceSkills,
...handsSkills,
];
const skills = { const skills = {
build: [ "defense", "magic", "melee", "platforming", "strength", ], build: buildSkills,
meta: [ "alchemy", "arcanum", "dreams", "lore", "navigation", ], meta: metaSkills,
presence: [ "animal_handling", "perception", "sneak", "speech", "vibes", ], presence: presenceSkills,
hands: [ "accuracy", "crafting", "engineering", "explosives", "piloting", ] hands: handsSkills,
}; };
export default { export default {
stats,
statDice, statDice,
trainingLevels, trainingLevels,
damageTypes, damageTypes,
ammoTypes, ammoTypes,
buildSkills,
metaSkills,
presenceSkills,
handsSkills,
allSkills,
skills, skills,
}; };

View file

@ -25,5 +25,6 @@ export default {
"nor": (a, b) => !(a || b), "nor": (a, b) => !(a || b),
"nand": (a, b) => !(a && b), "nand": (a, b) => !(a && b),
"xor": (a, b) => (a || b) && !(a && b), "xor": (a, b) => (a || b) && !(a && b),
"xnor": (a, b) => !((a || b) && !(a && b)) "xnor": (a, b) => !((a || b) && !(a && b)),
"defined": v => v != null
}; };

View file

@ -10,11 +10,10 @@ export class SpellItemData extends DescribedItemData {
blank: true, blank: true,
trim: true, trim: true,
options() { options() {
let skills = [ `` ]; return [
for (const group in DOTDUNGEON.skills) { ``,
skills.push(...skills[group]); ...DOTDUNGEON.allSkills
}; ];
return skills;
}, },
}), }),
}); });

View file

@ -1,3 +1,4 @@
import DOTDUNGEON from "../config.mjs";
import { preloadIcons } from "../handlebars.mjs"; import { preloadIcons } from "../handlebars.mjs";
export class GenericItemSheet extends ItemSheet { export class GenericItemSheet extends ItemSheet {
@ -20,7 +21,6 @@ export class GenericItemSheet extends ItemSheet {
async getData() { async getData() {
const ctx = {}; const ctx = {};
const item = this.item.toObject(false);
// Send all of the settings that sheets need into their context // Send all of the settings that sheets need into their context
ctx.settings = {}; ctx.settings = {};
@ -32,9 +32,10 @@ export class GenericItemSheet extends ItemSheet {
ctx.meta = { ctx.meta = {
expanded: this._expanded, expanded: this._expanded,
idp: this.actor.uuid, idp: this.item.uuid,
}; };
ctx.config = DOTDUNGEON;
ctx.icons = await preloadIcons(); ctx.icons = await preloadIcons();
return ctx; return ctx;

View file

@ -23,14 +23,12 @@ export class SpellSheet extends GenericItemSheet {
}; };
async getData() { async getData() {
const ctx = {}; const ctx = await super.getData();
const item = this.item.toObject(false);
ctx.name = super.name;
ctx.item = item;
ctx.system = item.system;
ctx.flags = item.flags;
ctx.item = this.item;
ctx.system = this.item.system;
ctx.flags = this.item.flags;
console.log(ctx)
return ctx; return ctx;
}; };
}; };

View file

@ -41,6 +41,10 @@
@include input-generic; @include input-generic;
} }
textarea {
resize: vertical;
}
select, select:hover { select, select:hover {
cursor: pointer; cursor: pointer;

View file

@ -200,6 +200,10 @@
flex-direction: column; flex-direction: column;
gap: 4px; gap: 4px;
.placeholder {
opacity: 75%;
}
&__actions { &__actions {
display: flex; display: flex;
flex-direction: row; flex-direction: row;

View file

@ -4,71 +4,60 @@
<summary data-collapse-id="{{spell.uuid}}"> <summary data-collapse-id="{{spell.uuid}}">
<span class="flex-grow" style="flex-grow: 1"> <span class="flex-grow" style="flex-grow: 1">
{{spell.name}} {{spell.name}}
{{#if (defined spell.system.cost)}}
{{localize "dotdungeon.actor.pc.spells.title.cost" cost=spell.system.cost}} {{localize "dotdungeon.actor.pc.spells.title.cost" cost=spell.system.cost}}
{{/if}}
</span> </span>
</summary> </summary>
<div class="spell"> <div class="spell">
<div class="spell__name">
<label for="{{spell.uuid}}-name">
{{localize "dotdungeon.actor.pc.spells.name.label"}}
</label>
<input
type="text"
id="{{spell.uuid}}-name"
value="{{spell.name}}"
data-embedded-update="name"
data-embedded-id="{{spell.uuid}}"
>
</div>
<div class="spell__cost">
<label for="{{spell.uuid}}-cost">
{{localize "dotdungeon.actor.pc.spells.cost.label"}}
</label>
<input
type="text"
id="{{spell.uuid}}-cost"
value="{{spell.system.cost}}"
placeholder="{{localize "dotdungeon.actor.pc.spells.cost.placeholder"}}"
data-embedded-update="system.cost"
data-embedded-id="{{spell.uuid}}"
>
</div>
<div class="spell__description"> <div class="spell__description">
<label for="{{spell.uuid}}-description">
{{localize "dotdungeon.actor.pc.spells.description.label"}} {{localize "dotdungeon.actor.pc.spells.description.label"}}
</label> <p class="{{ifThen spell.system.description '' 'placeholder'}}">
<textarea {{#if spell.system.description}}
id="{{spell.uuid}}-description" {{spell.system.description}}
placeholder="{{localize "dotdungeon.actor.pc.spells.description.placeholder"}}" {{else}}
data-embedded-update="system.description" {{localize "dotdungeon.actor.pc.spells.description.placeholder"}}
data-embedded-id="{{spell.uuid}}" {{/if}}
>{{spell.system.description}}</textarea> </p>
</div> </div>
{{#if spell.system.skill}}
<div class="spell__skill">
{{localize
"dotdungeon.actor.pc.spells.skill.label"
skill=(localize (concat "dotdungeon.keyword.skill." spell.system.skill))
}}
</div>
{{/if}}
<div class="spell__actions"> <div class="spell__actions">
<button <button
class="neutral reduced-padding equal-padding" class="confirm"
> >
<div class="icon icon--20"> Edit
</button>
<button
class="neutral equal-padding"
aria-label="{{localize "dotdungeon.actor.pc.spells.aria.chat"}}"
data-embedded-chat
data-embedded-id="{{spell.uuid}}"
>
<div aria-hidden="true" class="icon icon--20">
{{{ ../icons.chat-bubble }}} {{{ ../icons.chat-bubble }}}
</div> </div>
</button> </button>
<button <button
class="danger reduced-padding equal-padding" class="danger equal-padding"
aria-label="{{localize "dotdungeon.actor.pc.spells.aria.delete"}}"
data-embedded-delete data-embedded-delete
data-embedded-id="{{spell.uuid}}" data-embedded-id="{{spell.uuid}}"
> >
<div class="icon icon--20"> <div aria-hidden="true" class="icon icon--20">
{{{ ../icons.garbage-bin }}} {{{ ../icons.garbage-bin }}}
</div> </div>
</button> </button>
</div> </div>
</div> </div>
<div class="debug-data">
{{spell.uuid}}
{{dd-stringify spell}}
</div>
</details> </details>
{{else}} {{else}}
<p> <p>

View file

@ -24,4 +24,15 @@
aria-description="{{localize "dotdungeon.item.spell.aria.description"}}" aria-description="{{localize "dotdungeon.item.spell.aria.description"}}"
>{{system.description}}</textarea> >{{system.description}}</textarea>
</label> </label>
<label for="{{meta.idp}}-skill">
{{localize "dotdungeon.item.spell.skill.label"}}
</label>
<select name="system.skill" id="{{meta.idp}}-skill">
{{#select system.skill}}
<option value="">{{localize "dotdungeon.item.spell.options.no-skill"}}</option>
{{#each config.allSkills as | skill |}}
<option value="{{skill}}">{{localize (concat "dotdungeon.keyword.skill." skill)}}</option>
{{/each}}
{{/select}}
</select>
</form> </form>