GH-45 Add Item Dialog

- Closes #45
- Adds "Add Item" functionality: popup and styling
- Fixes Healing Clock reset
- README tweaks
- Version increment
This commit is contained in:
Peter Varaksin 2020-05-11 15:21:18 +03:00
parent 8180d2455f
commit 89ac79e9f3
11 changed files with 314 additions and 71 deletions

View file

@ -3,9 +3,34 @@
Contact Discord: `megastruktur#5704` in case you find any bugs or if you have any suggestions.
## Usage
`"Item" - all classes, crew types, upgrades, items, abilities, upgrades, etc.`
- To use just open Compendium and drag necessary Items, Abilities, etc. to the sheet.
- To reset XP, attributes, etc, click on Name.
- To reset reputation, exp, etc counters just click on the label name.
- Health clock can be reset by clicking on "Healing" table header.
- To add items you can click a corresponding link or drag items from compendium/game to the sheet.
- All "class/crew" specific items are prefixed with first letters
- I don't want the "class/crew items" to be prepopulated, so the character sheet contains less "compendium" info.
- To see the description of Class, Vice, Background, etc you can just click added item and see all the info in the popup.
- When adding a new item you can hower a "question-circle" icon to see the item's description.
- To add Custom abilities just add a new "Foundry Item" of the corresponding type and fill all the necessary info. Then drag it to the sheet or add via button on a sheet.
Classes:
- (C) Cutter
- (H) Hound
- (Le) Leech
- (Lu) Lurk
- (Sl) Slide
- (Sp) Spider
- (W) Whisper
Crew Types:
- (A) Assassins
- (B) Bravos
- (C) Cult
- (H) Hawkers
- (Sh) Shadows
- (Sm) Smugglers
## Screenshots
@ -15,6 +40,12 @@ Contact Discord: `megastruktur#5704` in case you find any bugs or if you have an
### Compendium
![alt screen][screenshot_compendium]
## To be done in the nearest future
- Clocks
- Friends/rivals section
- Stress/Harm dynamic values (can be modified by abilities but for now are hardcoded)
- Dice Rolling
## Troubleshooting
- If you can't find the drag-n-dropped item, refer to "All Items" tab on each sheet.

View file

@ -1,8 +1,11 @@
import { BladesSheet } from "./blades-sheet.js";
/**
* Extend the basic ActorSheet with some very simple modifications
* @extends {ActorSheet}
* @extends {BladesSheet}
*/
export class BladesActorSheet extends ActorSheet {
export class BladesActorSheet extends BladesSheet {
/** @override */
static get defaultOptions() {
@ -68,4 +71,5 @@ export class BladesActorSheet extends ActorSheet {
}
/* -------------------------------------------- */
}

View file

@ -172,4 +172,29 @@ export class BladesHelpers {
return actor.createEmbeddedEntity("OwnedItem", data);
}
/**
* Get the list of all available ingame items by Type.
*
* @param {string} item_type
* @param {Object} game
*/
static async getAllItemsByType(item_type, game) {
let list_of_items = [];
let game_items = [];
let compendium_items = [];
game_items = game.items.filter(e => e.type === item_type).map(e => {return e.data});
let pack = game.packs.find(e => e.metadata.name === item_type);
let compendium_content = await pack.getContent();
compendium_items = compendium_content.map(e => {return e.data});
list_of_items = game_items.concat(compendium_items);
return list_of_items;
}
/* -------------------------------------------- */
}

90
module/blades-sheet.js Normal file
View file

@ -0,0 +1,90 @@
/**
* Extend the basic ActorSheet with some very simple modifications
* @extends {ActorSheet}
*/
export class BladesSheet extends ActorSheet {
/* -------------------------------------------- */
/** @override */
activateListeners(html) {
super.activateListeners(html);
html.find(".item-add-popup").click(this._onItemAddClick.bind(this));
}
/* -------------------------------------------- */
async _onItemAddClick(event) {
event.preventDefault();
const item_type = $(event.currentTarget).data("itemType")
const distinct = $(event.currentTarget).data("distinct")
let input_type = "checkbox";
if (typeof distinct !== "undefined") {
input_type = "radio";
}
let items = await BladesHelpers.getAllItemsByType(item_type, game);
let html = `<div id="items-to-add">`;
items.forEach(e => {
let addition_price_load = ``;
if (typeof e.data.load !== "undefined") {
addition_price_load += `(${e.data.load})`
} else if (typeof e.data.price !== "undefined") {
addition_price_load += `(${e.data.price})`
}
html += `<input id="select-item-${e._id}" type="${input_type}" name="select_items" value="${e._id}">`;
html += `<label class="flex-horizontal" for="select-item-${e._id}">`;
html += `${e.name} ${addition_price_load} <i class="tooltip fas fa-question-circle"><span class="tooltiptext">${e.data.description}</span></i>`;
html += `</label>`;
});
html += `</div>`;
let options = {
// width: "500"
}
let dialog = new Dialog({
title: `Add ${item_type}`,
content: html,
buttons: {
one: {
icon: '<i class="fas fa-check"></i>',
label: "Add",
callback: () => this.addItemsToSheet(item_type, $(document).find('#items-to-add'))
},
two: {
icon: '<i class="fas fa-times"></i>',
label: "Cancel",
callback: () => false
}
},
default: "two"
}, options);
dialog.render(true);
}
/* -------------------------------------------- */
async addItemsToSheet(item_type, el) {
let items = await BladesHelpers.getAllItemsByType(item_type, game);
let items_to_add = [];
el.find("input:checked").each(function() {
items_to_add.push(items.find(e => e._id === $(this).val()));
});
items_to_add.forEach(e => {
this.actor.createEmbeddedEntity("OwnedItem", duplicate(e));
});
}
/* -------------------------------------------- */
}

View file

@ -1,8 +1,10 @@
import { BladesSheet } from "./blades-sheet.js";
/**
* Extend the basic ActorSheet with some very simple modifications
* @extends {ActorSheet}
* @extends {BladesSheet}
*/
export class BladesCrewSheet extends ActorSheet {
export class BladesCrewSheet extends BladesSheet {
/** @override */
static get defaultOptions() {

View file

@ -193,6 +193,12 @@ $almost_white: #EEEFFF;
width: 200px;
}
.label-stripe {
p:first-child {
margin-right: 10px;
}
}
}
// Experience teeth
@ -527,4 +533,45 @@ $almost_white: #EEEFFF;
}
}
}
// Add Items modal styling.
#items-to-add {
display: flex;
flex-direction: column;
flex-wrap: wrap;
justify-content: space-around;
input[type="radio"],
input[type="checkbox"] {
display: none;
&:checked + label {
font-weight: bold;
}
}
}
// Tooltip.
.tooltip {
.tooltiptext {
visibility: hidden;
width: 200px;
background-color: $almost_black;
color: $almost_white;
text-align: center;
padding: 5px;
border-radius: 6px;
// Position
position: absolute;
z-index: 9999;
}
&:hover .tooltiptext {
visibility: visible;
}
}
}

View file

@ -242,6 +242,9 @@
* #abilities .item-description {
width: 200px;
}
* #abilities .label-stripe p:first-child {
margin-right: 10px;
}
* .teeth-experience {
display: flex;
/* Hide the browser's default checkbox */
@ -828,5 +831,33 @@
border-top: none;
padding: 5px;
}
* #items-to-add {
display: flex;
flex-direction: column;
flex-wrap: wrap;
justify-content: space-around;
}
* #items-to-add input[type=radio],
* #items-to-add input[type=checkbox] {
display: none;
}
* #items-to-add input[type=radio]:checked + label,
* #items-to-add input[type=checkbox]:checked + label {
font-weight: bold;
}
* .tooltip .tooltiptext {
visibility: hidden;
width: 200px;
background-color: #191813;
color: #EEEFFF;
text-align: center;
padding: 5px;
border-radius: 6px;
position: absolute;
z-index: 9999;
}
* .tooltip:hover .tooltiptext {
visibility: visible;
}
/*# sourceMappingURL=blades.css.map */

View file

@ -1 +1 @@
{"version":3,"sourceRoot":"","sources":["../scss/mixin.scss","../scss/style.scss"],"names":[],"mappings":"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","file":"blades.css"}
{"version":3,"sourceRoot":"","sources":["../scss/mixin.scss","../scss/style.scss"],"names":[],"mappings":"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","file":"blades.css"}

View file

@ -2,7 +2,7 @@
"name": "blades-in-the-dark",
"title": "Blades in the Dark",
"description": "Blades in the dark game system.",
"version": 0.1,
"version": 0.5,
"minimumCoreVersion": "0.5.3",
"compatibleCoreVersion": "0.5.5",
"templateVersion": 1,
@ -10,86 +10,82 @@
"esmodules": ["module/blades.js"],
"styles": ["styles/blades.css"],
"languages": ["en"],
"gridDistance": 1,
"gridUnits": "m",
"primaryTokenAttribute": null,
"secondaryTokenAttribute": null,
"url": "https://github.com/megastruktur/foundryvtt-blades-in-the-dark/",
"manifest": "https://raw.githubusercontent.com/megastruktur/foundryvtt-blades-in-the-dark/master/system.json",
"download": "https://github.com/megastruktur/foundryvtt-blades-in-the-dark/archive/master.zip",
"packs": [
{
"name": "Classes",
"name": "class",
"label": "Classes",
"system": "blades-in-the-dark",
"path": "./packs/classes.db",
"entity": "Item"
},
{
"name": "Heritages",
"name": "heritage",
"label": "Heritages",
"system": "blades-in-the-dark",
"path": "./packs/heritages.db",
"entity": "Item"
},
{
"name": "Vices",
"name": "vice",
"label": "Vices",
"system": "blades-in-the-dark",
"path": "./packs/vices.db",
"entity": "Item"
},
{
"name": "Backgrounds",
"name": "background",
"label": "Backgrounds",
"system": "blades-in-the-dark",
"path": "./packs/backgrounds.db",
"entity": "Item"
},
{
"name": "Items",
"name": "item",
"label": "Items",
"system": "blades-in-the-dark",
"path": "./packs/items.db",
"entity": "Item"
},
{
"name": "Abilities",
"name": "ability",
"label": "Abilities",
"system": "blades-in-the-dark",
"path": "./packs/abilities.db",
"entity": "Item"
},
{
"name": "Crew Reputation",
"name": "crew_reputation",
"label": "Crew Reputation",
"system": "blades-in-the-dark",
"path": "./packs/crew_reputation.db",
"entity": "Item"
},
{
"name": "Crew Types",
"name": "crew_type",
"label": "Crew Types",
"system": "blades-in-the-dark",
"path": "./packs/crew_types.db",
"entity": "Item"
},
{
"name": "Crew Upgrades",
"name": "crew_upgrade",
"label": "Crew Upgrades",
"system": "blades-in-the-dark",
"path": "./packs/crew_upgrades.db",
"entity": "Item"
},
{
"name": "Crew Abilities",
"name": "crew_ability",
"label": "Crew Abilities",
"system": "blades-in-the-dark",
"path": "./packs/crew_abilities.db",
"entity": "Item"
},
{
"name": "Doskvol",
"name": "scene",
"label": "Doskvol",
"system": "blades-in-the-dark",
"path": "./packs/doskvol.db",

View file

@ -10,10 +10,26 @@
<div id="character-traits" class="flex-column">
{{#each actor.items as |item id|}}
{{#eq item.type "heritage"}}
<div class="item-block flex-horizontal">
<div class="item-class-label"><a class="item-add-popup" data-distinct="true" data-item-type="heritage">Heritage</a></div>
{{#each actor.items as |item id|}}
{{#eq item.type "heritage"}}
<div class="item flex-horizontal" data-item-id="{{item._id}}">
<div class="item-body flex-horizontal">
<img src="{{item.img}}" title="{{item.name}}" width="24" height="24"/>
<div class="item-name">{{item.name}}</div>
</div>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
{{/eq}}
{{/each}}
</div>
<div class="item-block flex-horizontal">
<div class="item-class-label"><a class="item-add-popup" data-distinct="true" data-item-type="background">Background</a></div>
{{#each actor.items as |item id|}}
{{#eq item.type "background"}}
<div class="item flex-horizontal" data-item-id="{{item._id}}">
<div class="item-class-label">Heritage</div>
<div class="item-body flex-horizontal">
<img src="{{item.img}}" title="{{item.name}}" width="24" height="24"/>
<div class="item-name">{{item.name}}</div>
@ -21,46 +37,39 @@
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
{{/eq}}
{{/each}}
{{/each}}
</div>
{{#each actor.items as |item id|}}
{{#eq item.type "background"}}
<div class="item flex-horizontal" data-item-id="{{item._id}}">
<div class="item-class-label">Background</div>
<div class="item-body flex-horizontal">
<img src="{{item.img}}" title="{{item.name}}" width="24" height="24"/>
<div class="item-name">{{item.name}}</div>
</div>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
<div class="item-block flex-horizontal">
<div class="item-class-label"><a class="item-add-popup" data-distinct="true" data-item-type="vice">Vice</a></div>
{{#each actor.items as |item id|}}
{{#eq item.type "vice"}}
<div class="item flex-horizontal" data-item-id="{{item._id}}">
<div class="item-body flex-horizontal">
<img src="{{item.img}}" title="{{item.name}}" width="24" height="24"/>
<div class="item-name">{{item.name}}</div>
</div>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
{{/eq}}
{{/each}}
</div>
<div class="item-block flex-horizontal">
<div class="item-class-label"><a class="item-add-popup" data-distinct="true" data-item-type="class">Class</a></div>
{{#each actor.items as |item id|}}
{{#eq item.type "class"}}
<div class="item flex-horizontal" data-item-id="{{item._id}}">
<div class="item-body flex-horizontal">
<img src="{{item.img}}" title="{{item.name}}" width="24" height="24"/>
<div class="item-name">{{item.name}}</div>
</div>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
{{/eq}}
{{/each}}
</div>
{{/eq}}
{{/each}}
{{#each actor.items as |item id|}}
{{#eq item.type "vice"}}
<div class="item flex-horizontal" data-item-id="{{item._id}}">
<div class="item-class-label">Vice</div>
<div class="item-body flex-horizontal">
<img src="{{item.img}}" title="{{item.name}}" width="24" height="24"/>
<div class="item-name">{{item.name}}</div>
</div>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
{{/eq}}
{{/each}}
{{#each actor.items as |item id|}}
{{#eq item.type "class"}}
<div class="item flex-horizontal" data-item-id="{{item._id}}">
<div class="item-class-label">Class</div>
<div class="item-body flex-horizontal">
<img src="{{item.img}}" title="{{item.name}}" width="24" height="24"/>
<div class="item-name">{{item.name}}</div>
</div>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
{{/eq}}
{{/each}}
</div>
</div>
@ -171,7 +180,7 @@
<table>
<thead>
<th class="black-white" colspan="4">Harm</th>
<th class="black-white">Healing</th>
<th class="black-white"><label for="character-healing-clock-0">Healing</label></th>
<th class="black-white">Armor</th>
</thead>
<tbody>
@ -255,6 +264,7 @@
<div id="abilities" class="tab flex-vertical" data-tab="abilities">
<div class="label-stripe">
<p><label for="character-experience-0">Abilities</label></p>
<p><a class="item-add-popup" data-item-type="ability"><i class="fas fa-plus-square"></i></a></p>
<div id="character-experience" class="teeth-experience">
{{#multiboxes data.experience}}
<input type="radio" id="character-experience-0" name="data.experience" value="0" dtype="Radio">
@ -292,13 +302,15 @@
</div>
{{/eq}}
{{/each}}
<div class="item-class-label"><a class="item-add-popup" data-item-type="ability">Add Ability</a></div>
</div>
</div>
{{!-- Owned Items Tab --}}
<div id="loadout" class="tab flex-vertical" data-tab="loadout">
<div class="label-stripe">
<div class="label-stripe flex-horizontal">
<p>Loadout: {{data.loadout}}</p>
<p><a class="item-add-popup" data-item-type="item"><i class="fas fa-plus-square"></i></a></p>
</div>
<div>
{{#each actor.items as |item id|}}
@ -313,6 +325,7 @@
</div>
{{/eq}}
{{/each}}
<div class="item-class-label"><a class="item-add-popup" data-item-type="item">Add Item</a></div>
</div>
</div>

View file

@ -9,7 +9,9 @@
</div>
<div class="flex-vertical">
<div class="item-class-label">Crew Reputation</div>
<div class="item-class-label">
<a class="item-add-popup" data-distinct="true" data-item-type="crew_reputation">Crew Reputation</a>
</div>
{{#each actor.items as |item id|}}
{{#eq item.type "crew_reputation"}}
<div class="item flex-horizontal" data-item-id="{{item._id}}">
@ -264,8 +266,9 @@
{{!-- Crew Upgrades --}}
<div id="crew-upgrades" class="tab grow-two flex-vertical" data-tab="upgrades">
<div class="label-stripe">
<p><label>Crew Upgrades</label></p>
<div class="label-stripe flex-horizontal">
<p>Crew Upgrades</p>
<p><a class="item-add-popup" data-item-type="crew_upgrade"><i class="fas fa-plus-square"></i></a></p>
</div>
{{#each actor.items as |item id|}}
{{#eq item.type "crew_upgrade"}}
@ -282,8 +285,9 @@
{{!-- Crew Abilities --}}
<div id="crew-abilities" class="tab grow-two flex-vertical" data-tab="abilities">
<div class="label-stripe">
<p><label>Special Abilities</label></p>
<div class="label-stripe flex-horizontal">
<p>Special Abilities</p>
<p><a class="item-add-popup" data-item-type="crew_ability"><i class="fas fa-plus-square"></i></a></p>
</div>
{{#each actor.items as |item id|}}
{{#eq item.type "crew_ability"}}