Merge branch '10-implement-money' into 'master'

Resolve "Separate field for money"

Closes #10

See merge request dungeonslayers/ds4!47
This commit is contained in:
Johannes Loher 2021-01-18 20:09:01 +01:00
commit af19d7c971
12 changed files with 206 additions and 152 deletions

View file

@ -13,7 +13,7 @@ To install and use the Dungeonslayers 4 system for Foundry Virtual Tabletop,
simply paste the following URL into the **Install System** dialog on the Setup simply paste the following URL into the **Install System** dialog on the Setup
menu of the application. menu of the application.
https://git.f3l.de/dungeonslayers/ds4/-/raw/master/src/system.json?inline=false https://git.f3l.de/dungeonslayers/ds4/-/raw/latest/src/system.json?inline=false
## Development ## Development

View file

@ -145,10 +145,14 @@
"DS4.CharacterProfileBirthplace": "Geburtsort", "DS4.CharacterProfileBirthplace": "Geburtsort",
"DS4.CharacterProfileAge": "Alter", "DS4.CharacterProfileAge": "Alter",
"DS4.CharacterProfileHeight": "Größe", "DS4.CharacterProfileHeight": "Größe",
"DS4.ProfileHairColor": "Haarfarbe", "DS4.CharacterProfileHairColor": "Haarfarbe",
"DS4.CharacterProfileWeight": "Gewicht", "DS4.CharacterProfileWeight": "Gewicht",
"DS4.CharacterProfileEyeColor": "Augenfarbe", "DS4.CharacterProfileEyeColor": "Augenfarbe",
"DS4.CharacterProfileSpecialCharacteristics": "Besondere Eigenschaften", "DS4.CharacterProfileSpecialCharacteristics": "Besondere Eigenschaften",
"DS4.CharacterCurrencyGold": "Gold",
"DS4.CharacterCurrencySilver": "Silber",
"DS4.CharacterCurrencyCopper": "Kupfer",
"DS4.CharacterCurrency": "Währung",
"DS4.CreatureTypeAnimal": "Tier", "DS4.CreatureTypeAnimal": "Tier",
"DS4.CreatureTypeConstruct": "Konstrukt", "DS4.CreatureTypeConstruct": "Konstrukt",
"DS4.CreatureTypeHumanoid": "Humanoid", "DS4.CreatureTypeHumanoid": "Humanoid",

View file

@ -145,10 +145,14 @@
"DS4.CharacterProfileBirthplace": "Birthplace", "DS4.CharacterProfileBirthplace": "Birthplace",
"DS4.CharacterProfileAge": "Age", "DS4.CharacterProfileAge": "Age",
"DS4.CharacterProfileHeight": "Height", "DS4.CharacterProfileHeight": "Height",
"DS4.ProfileHairColor": "Hair Color", "DS4.CharacterProfileHairColor": "Hair Color",
"DS4.CharacterProfileWeight": "Weight", "DS4.CharacterProfileWeight": "Weight",
"DS4.CharacterProfileEyeColor": "Eye Color", "DS4.CharacterProfileEyeColor": "Eye Color",
"DS4.CharacterProfileSpecialCharacteristics": "Special Characteristics", "DS4.CharacterProfileSpecialCharacteristics": "Special Characteristics",
"DS4.CharacterCurrencyGold": "Gold",
"DS4.CharacterCurrencySilver": "Silver",
"DS4.CharacterCurrencyCopper": "Copper",
"DS4.CharacterCurrency": "Currency",
"DS4.CreatureTypeAnimal": "Animal", "DS4.CreatureTypeAnimal": "Animal",
"DS4.CreatureTypeConstruct": "Construct", "DS4.CreatureTypeConstruct": "Construct",
"DS4.CreatureTypeHumanoid": "Humanoid", "DS4.CreatureTypeHumanoid": "Humanoid",

View file

@ -39,6 +39,7 @@ interface DS4ActorDataCharacter extends DS4ActorDataBase {
progression: DS4ActorDataCharacterProgression; progression: DS4ActorDataCharacterProgression;
language: DS4ActorDataCharacterLanguage; language: DS4ActorDataCharacterLanguage;
profile: DS4ActorDataCharacterProfile; profile: DS4ActorDataCharacterProfile;
currency: DS4ActorDataCharacterCurrency;
} }
interface DS4ActorDataCharacterBaseInfo { interface DS4ActorDataCharacterBaseInfo {
@ -73,6 +74,12 @@ interface DS4ActorDataCharacterProfile {
specialCharacteristics: string; specialCharacteristics: string;
} }
interface DS4ActorDataCharacterCurrency {
gold: number;
silver: number;
copper: number;
}
interface DS4ActorDataCreature extends DS4ActorDataBase { interface DS4ActorDataCreature extends DS4ActorDataBase {
baseInfo: DS4ActorDataCreatureBaseInfo; baseInfo: DS4ActorDataCreatureBaseInfo;
} }

View file

@ -204,7 +204,7 @@ export const DS4 = {
birthplace: "DS4.CharacterProfileBirthplace", birthplace: "DS4.CharacterProfileBirthplace",
age: "DS4.CharacterProfileAge", age: "DS4.CharacterProfileAge",
height: "DS4.CharacterProfileHeight", height: "DS4.CharacterProfileHeight",
hairColor: "DS4.ProfileHairColor", hairColor: "DS4.CharacterProfileHairColor",
weight: "DS4.CharacterProfileWeight", weight: "DS4.CharacterProfileWeight",
eyeColor: "DS4.CharacterProfileEyeColor", eyeColor: "DS4.CharacterProfileEyeColor",
specialCharacteristics: "DS4.CharacterProfileSpecialCharacteristics", specialCharacteristics: "DS4.CharacterProfileSpecialCharacteristics",
@ -226,6 +226,15 @@ export const DS4 = {
specialCharacteristics: "String", specialCharacteristics: "String",
}, },
/**
* Define currency elements of a character
*/
characterCurrency: {
gold: "DS4.CharacterCurrencyGold",
silver: "DS4.CharacterCurrencySilver",
copper: "DS4.CharacterCurrencyCopper",
},
/** /**
* Define the different creature types a creature can be * Define the different creature types a creature can be
*/ */

View file

@ -64,6 +64,8 @@ async function registerHandlebarsPartials() {
"systems/ds4/templates/actor/partials/profile.hbs", "systems/ds4/templates/actor/partials/profile.hbs",
"systems/ds4/templates/actor/partials/character-progression.hbs", "systems/ds4/templates/actor/partials/character-progression.hbs",
"systems/ds4/templates/actor/partials/special-creature-abilites-overview.hbs", "systems/ds4/templates/actor/partials/special-creature-abilites-overview.hbs",
"systems/ds4/templates/actor/partials/character-inventory.hbs",
"systems/ds4/templates/actor/partials/creature-inventory.hbs",
]; ];
return loadTemplates(templatePaths); return loadTemplates(templatePaths);
} }
@ -95,6 +97,7 @@ Hooks.once("setup", function () {
"characterProgression", "characterProgression",
"characterLanguage", "characterLanguage",
"characterProfile", "characterProfile",
"characterCurrency",
"creatureTypes", "creatureTypes",
"creatureSizeCategories", "creatureSizeCategories",
"creatureBaseInfo", "creatureBaseInfo",

View file

@ -122,6 +122,11 @@
"weight": 0, "weight": 0,
"eyeColor": "", "eyeColor": "",
"specialCharacteristics": "" "specialCharacteristics": ""
},
"currency": {
"gold": 0,
"silver": 0,
"copper": 0
} }
} }
}, },

View file

@ -71,7 +71,7 @@
{{!-- Sheet Body --}} {{!-- Sheet Body --}}
<section class="sheet-body"> <section class="sheet-body">
{{!-- Items Tab --}} {{!-- Items Tab --}}
{{> systems/ds4/templates/actor/partials/items-overview.hbs}} {{> systems/ds4/templates/actor/partials/character-inventory.hbs}}
{{!-- Spells Tab --}} {{!-- Spells Tab --}}
{{> systems/ds4/templates/actor/partials/spells-overview.hbs}} {{> systems/ds4/templates/actor/partials/spells-overview.hbs}}

View file

@ -61,7 +61,7 @@
{{!-- Sheet Body --}} {{!-- Sheet Body --}}
<section class="sheet-body"> <section class="sheet-body">
{{!-- Items Tab --}} {{!-- Items Tab --}}
{{> systems/ds4/templates/actor/partials/items-overview.hbs}} {{> systems/ds4/templates/actor/partials/creature-inventory.hbs}}
{{!-- Special Creature Abilities Tab --}} {{!-- Special Creature Abilities Tab --}}
{{> systems/ds4/templates/actor/partials/special-creature-abilites-overview.hbs}} {{> systems/ds4/templates/actor/partials/special-creature-abilites-overview.hbs}}

View file

@ -0,0 +1,21 @@
<div class="tab inventory" data-group="primary" data-tab="inventory">
{{!-- Money--}}
<h4 class="items-list-title">{{localize 'DS4.CharacterCurrency'}}</h4>
<ol class="items-list">
<li class="item flexrow item-header">
<label for="data.currency.gold" class="flex05">{{config.characterCurrency.gold}}</label>
<input class="flex3 item-num-val item-change" type="number" min="0" step="1" name="data.currency.gold"
id="data.currency.gold" value="{{data.currency.gold}}" data-dtype="Number" />
<label for="data.currency.silver" class="flex05">{{config.characterCurrency.silver}}</label>
<input class="flex3 item-num-val item-change" type="number" min="0" step="1" name="data.currency.silver"
id="data.currency.silver" value="{{data.currency.silver}}" data-dtype="Number" />
<label for="data.currency.copper" class="flex05">{{config.characterCurrency.copper}}</label>
<input class="flex3 item-num-val item-change" type="number" min="0" step="1" name="data.currency.copper"
id="data.currency.copper" value="{{data.currency.copper}}" data-dtype="Number" />
</li>
</ol>
{{> systems/ds4/templates/actor/partials/items-overview.hbs}}
</div>

View file

@ -0,0 +1,5 @@
<div class="tab inventory" data-group="primary" data-tab="inventory">
{{> systems/ds4/templates/actor/partials/items-overview.hbs}}
</div>

View file

@ -14,9 +14,9 @@
--}} --}}
{{#*inline "ifHasItemOfType"}} {{#*inline "ifHasItemOfType"}}
{{#if (and (ne itemsArray undefined) (gt itemsArray.length 0))}} {{#if (and (ne itemsArray undefined) (gt itemsArray.length 0))}}
{{> @partial-block}} {{> @partial-block}}
{{else}} {{else}}
{{> systems/ds4/templates/actor/partials/overview-add-button.hbs dataType=dataType }} {{> systems/ds4/templates/actor/partials/overview-add-button.hbs dataType=dataType }}
{{/if}} {{/if}}
{{/inline}} {{/inline}}
@ -33,7 +33,7 @@
!-- @param partial-block: hand over custom children of the flexbox in the partial block. !-- @param partial-block: hand over custom children of the flexbox in the partial block.
--}} --}}
{{#*inline "itemListHeader" }} {{#*inline "itemListHeader" }}
<li class="item flexrow item-header"> <li class="item flexrow item-header">
{{!-- equipped --}} {{!-- equipped --}}
{{#if (ne dataType 'equipment')}} {{#if (ne dataType 'equipment')}}
<div class="flex05" title="{{localize 'DS4.ItemEquipped'}}">{{localize 'DS4.ItemEquippedAbbr'}}</div> <div class="flex05" title="{{localize 'DS4.ItemEquipped'}}">{{localize 'DS4.ItemEquippedAbbr'}}</div>
@ -50,7 +50,7 @@
<div class="flex4">{{localize 'DS4.Description'}}</div> <div class="flex4">{{localize 'DS4.Description'}}</div>
{{!-- add button --}} {{!-- add button --}}
{{> systems/ds4/templates/actor/partials/overview-add-button.hbs dataType=dataType }} {{> systems/ds4/templates/actor/partials/overview-add-button.hbs dataType=dataType }}
</li> </li>
{{/inline}} {{/inline}}
{{!-- {{!--
@ -65,7 +65,7 @@
!-- @param partial-block: hand over custom children of the flexbox in the partial block. !-- @param partial-block: hand over custom children of the flexbox in the partial block.
--}} --}}
{{#*inline "itemListEntry"}} {{#*inline "itemListEntry"}}
<li class="item flexrow" data-item-id="{{item._id}}"> <li class="item flexrow" data-item-id="{{item._id}}">
{{!-- equipped --}} {{!-- equipped --}}
{{#if (ne item.data.data.equipped undefined)}} {{#if (ne item.data.data.equipped undefined)}}
<input class="flex05 item-change" type="checkbox" {{checked item.data.data.equipped}} data-dtype="Boolean" <input class="flex05 item-change" type="checkbox" {{checked item.data.data.equipped}} data-dtype="Boolean"
@ -76,8 +76,8 @@
<img src="{{item.img}}" title="{{item.name}}" width="24" height="24" /> <img src="{{item.img}}" title="{{item.name}}" width="24" height="24" />
</div> </div>
{{!-- amount --}} {{!-- amount --}}
<input class="flex05 item-num-val item-change" type="number" min="0" step="1" value="{{item.data.data.quantity}}" data-dtype="Number" <input class="flex05 item-num-val item-change" type="number" min="0" step="1" value="{{item.data.data.quantity}}"
data-property="data.quantity" title="{{localize 'DS4.Quantity'}}" /> data-dtype="Number" data-property="data.quantity" title="{{localize 'DS4.Quantity'}}" />
{{!-- name --}} {{!-- name --}}
<input class="flex3 item-name item-change" type="text" value="{{item.name}}" data-dtype="String" <input class="flex3 item-name item-change" type="text" value="{{item.name}}" data-dtype="String"
data-property="name" title="{{localize 'DS4.ItemName'}}" /> data-property="name" title="{{localize 'DS4.ItemName'}}" />
@ -87,20 +87,17 @@
<div class="flex4 item-description">{{{item.data.data.description}}}</div> <div class="flex4 item-description">{{{item.data.data.description}}}</div>
{{!-- control buttons --}} {{!-- control buttons --}}
{{> systems/ds4/templates/actor/partials/overview-control-buttons.hbs }} {{> systems/ds4/templates/actor/partials/overview-control-buttons.hbs }}
</li> </li>
{{/inline}} {{/inline}}
{{!-- ======================================================================== --}} {{!-- ======================================================================== --}}
{{!-- WEAPONS --}}
<div class="tab inventory" data-group="primary" data-tab="inventory"> <h4 class="items-list-title">{{localize 'DS4.ItemTypeWeaponPlural'}}</h4>
{{!-- {{#if (and (ne itemsByType.weapon undefined) (gt itemsByType.weapon.length 0)) }} --}}
{{!-- WEAPONS --}} {{#> ifHasItemOfType itemsArray=itemsByType.weapon dataType='weapon' }}
<h4 class="items-list-title">{{localize 'DS4.ItemTypeWeaponPlural'}}</h4> <ol class="items-list">
{{!-- {{#if (and (ne itemsByType.weapon undefined) (gt itemsByType.weapon.length 0)) }} --}}
{{#> ifHasItemOfType itemsArray=itemsByType.weapon dataType='weapon' }}
<ol class="items-list">
{{#> itemListHeader dataType='weapon'}} {{#> itemListHeader dataType='weapon'}}
<div class="flex05 item-image" title="{{localize 'DS4.AttackType'}}">{{localize 'DS4.AttackTypeAbbr'}}</div> <div class="flex05 item-image" title="{{localize 'DS4.AttackType'}}">{{localize 'DS4.AttackTypeAbbr'}}</div>
<div class="flex05 item-num-val" title="{{localize 'DS4.WeaponBonus'}}"> <div class="flex05 item-num-val" title="{{localize 'DS4.WeaponBonus'}}">
@ -120,15 +117,15 @@
<div class="flex05 item-num-val">{{ item.data.data.opponentDefense}}</div> <div class="flex05 item-num-val">{{ item.data.data.opponentDefense}}</div>
{{/itemListEntry}} {{/itemListEntry}}
{{/each}} {{/each}}
</ol> </ol>
{{!-- {{else}} {{!-- {{else}}
{{> systems/ds4/templates/actor/partials/overview-add-button.hbs dataType='weapon' }} --}} {{> systems/ds4/templates/actor/partials/overview-add-button.hbs dataType='weapon' }} --}}
{{/ifHasItemOfType}} {{/ifHasItemOfType}}
{{!-- ARMOR --}} {{!-- ARMOR --}}
<h4 class="items-list-title">{{localize 'DS4.ItemTypeArmorPlural'}}</h4> <h4 class="items-list-title">{{localize 'DS4.ItemTypeArmorPlural'}}</h4>
{{#> ifHasItemOfType itemsArray=itemsByType.armor dataType='armor' }} {{#> ifHasItemOfType itemsArray=itemsByType.armor dataType='armor' }}
<ol class="items-list"> <ol class="items-list">
{{#> itemListHeader dataType='armor'}} {{#> itemListHeader dataType='armor'}}
<div title="{{localize 'DS4.ArmorMaterialType'}}">{{localize 'DS4.ArmorMaterialTypeAbbr'}}</div> <div title="{{localize 'DS4.ArmorMaterialType'}}">{{localize 'DS4.ArmorMaterialTypeAbbr'}}</div>
<div title="{{localize 'DS4.ArmorType'}}">{{localize 'DS4.ArmorTypeAbbr'}}</div> <div title="{{localize 'DS4.ArmorType'}}">{{localize 'DS4.ArmorTypeAbbr'}}</div>
@ -147,14 +144,14 @@
<div class="flex05 item-num-val">{{ item.data.data.armorValue}}</div> <div class="flex05 item-num-val">{{ item.data.data.armorValue}}</div>
{{/itemListEntry}} {{/itemListEntry}}
{{/each}} {{/each}}
</ol> </ol>
{{/ifHasItemOfType}} {{/ifHasItemOfType}}
{{!-- SHIELD --}} {{!-- SHIELD --}}
<h4 class="items-list-title">{{localize 'DS4.ItemTypeShieldPlural'}}</h4> {{!-- SPECIFIC --}} <h4 class="items-list-title">{{localize 'DS4.ItemTypeShieldPlural'}}</h4> {{!-- SPECIFIC --}}
{{#> ifHasItemOfType itemsArray=itemsByType.shield dataType='shield' }} {{#> ifHasItemOfType itemsArray=itemsByType.shield dataType='shield' }}
<ol class="items-list"> <ol class="items-list">
{{#> itemListHeader dataType='shield' }} {{#> itemListHeader dataType='shield' }}
<div class="flex05 item-num-val" title="{{localize 'DS4.ArmorValue'}}"> <div class="flex05 item-num-val" title="{{localize 'DS4.ArmorValue'}}">
{{localize 'DS4.ArmorValueAbbr'}} {{localize 'DS4.ArmorValueAbbr'}}
@ -165,13 +162,13 @@
<div class="flex05 item-num-val">{{item.data.data.armorValue}}</div> {{!-- SPECIFIC --}} <div class="flex05 item-num-val">{{item.data.data.armorValue}}</div> {{!-- SPECIFIC --}}
{{/itemListEntry}} {{/itemListEntry}}
{{/each}} {{/each}}
</ol> </ol>
{{/ifHasItemOfType}} {{/ifHasItemOfType}}
{{!-- TRINKET --}} {{!-- TRINKET --}}
<h4 class="items-list-title">{{localize 'DS4.ItemTypeTrinketPlural'}}</h4> <h4 class="items-list-title">{{localize 'DS4.ItemTypeTrinketPlural'}}</h4>
{{#> ifHasItemOfType itemsArray=itemsByType.trinket dataType='trinket' }} {{#> ifHasItemOfType itemsArray=itemsByType.trinket dataType='trinket' }}
<ol class="items-list"> <ol class="items-list">
{{#> itemListHeader dataType='trinket'}} {{#> itemListHeader dataType='trinket'}}
<div class="flex2">{{localize 'DS4.StorageLocation'}}</div> <div class="flex2">{{localize 'DS4.StorageLocation'}}</div>
{{/itemListHeader}} {{/itemListHeader}}
@ -181,13 +178,13 @@
data-property="data.storageLocation" title="{{localize 'DS4.StorageLocation'}}"> data-property="data.storageLocation" title="{{localize 'DS4.StorageLocation'}}">
{{/itemListEntry}} {{/itemListEntry}}
{{/each}} {{/each}}
</ol> </ol>
{{/ifHasItemOfType}} {{/ifHasItemOfType}}
{{!-- EQUIPMENT --}} {{!-- EQUIPMENT --}}
<h4 class="items-list-title">{{localize 'DS4.ItemTypeEquipmentPlural'}}</h4> <h4 class="items-list-title">{{localize 'DS4.ItemTypeEquipmentPlural'}}</h4>
{{#> ifHasItemOfType itemsArray=itemsByType.equipment dataType='equipment' }} {{#> ifHasItemOfType itemsArray=itemsByType.equipment dataType='equipment' }}
<ol class="items-list"> <ol class="items-list">
{{#> itemListHeader dataType='equipment'}} {{#> itemListHeader dataType='equipment'}}
<div class="flex2">{{localize 'DS4.StorageLocation'}}</div> <div class="flex2">{{localize 'DS4.StorageLocation'}}</div>
{{/itemListHeader}} {{/itemListHeader}}
@ -197,6 +194,5 @@
data-property="data.storageLocation" title="{{localize 'DS4.StorageLocation'}}"> data-property="data.storageLocation" title="{{localize 'DS4.StorageLocation'}}">
{{/itemListEntry}} {{/itemListEntry}}
{{/each}} {{/each}}
</ol> </ol>
{{/ifHasItemOfType}} {{/ifHasItemOfType}}
</div>