feat: add Settlement actor type with Overview/Buildings/Inventory tabs

- New TypeDataModel: archetype, territory, renown, currency (gp/sp/cp),
  garrison, underSiege, isCapital, founded, taxNotes, description, notes
- 3-tab ApplicationV2 sheet with drag & drop for building/weapon/armor/equipment
- Currency steppers (+/−), building constructed toggle, qty controls
- LESS-based CSS (settlement-sheet.less) + base.less updated for shared styles
- Full i18n keys in lang/en.json (8 settlement archetypes)
- system.json: registered settlement actor type

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
2026-03-20 17:01:38 +01:00
parent b67d85c6be
commit b3fd7e1aa1
28 changed files with 966 additions and 270 deletions

View File

@@ -0,0 +1,61 @@
<section data-tab="overview" data-group="{{tab.group}}" class="tab {{tab.cssClass}}">
<fieldset class="currency-bar">
<legend>{{localize "OATHHAMMER.Label.Treasury"}}</legend>
<div class="flexrow">
<div class="currency-item">
<label>{{localize "OATHHAMMER.Currency.GP"}}</label>
<div class="currency-stepper">
<a data-action="adjustCurrency" data-field="system.currency.gold" data-delta="-1" class="qty-btn"></a>
{{formInput systemFields.currency.fields.gold value=system.currency.gold name="system.currency.gold"}}
<a data-action="adjustCurrency" data-field="system.currency.gold" data-delta="1" class="qty-btn">+</a>
</div>
</div>
<div class="currency-item">
<label>{{localize "OATHHAMMER.Currency.SP"}}</label>
<div class="currency-stepper">
<a data-action="adjustCurrency" data-field="system.currency.silver" data-delta="-1" class="qty-btn"></a>
{{formInput systemFields.currency.fields.silver value=system.currency.silver name="system.currency.silver"}}
<a data-action="adjustCurrency" data-field="system.currency.silver" data-delta="1" class="qty-btn">+</a>
</div>
</div>
<div class="currency-item">
<label>{{localize "OATHHAMMER.Currency.CP"}}</label>
<div class="currency-stepper">
<a data-action="adjustCurrency" data-field="system.currency.copper" data-delta="-1" class="qty-btn"></a>
{{formInput systemFields.currency.fields.copper value=system.currency.copper name="system.currency.copper"}}
<a data-action="adjustCurrency" data-field="system.currency.copper" data-delta="1" class="qty-btn">+</a>
</div>
</div>
</div>
</fieldset>
<div class="settlement-overview-grid">
<fieldset>
<legend>{{localize "OATHHAMMER.Label.Garrison"}}</legend>
{{formInput systemFields.garrison value=system.garrison name="system.garrison" disabled=isPlayMode}}
</fieldset>
<fieldset>
<legend>{{localize "OATHHAMMER.Label.Founded"}}</legend>
{{formInput systemFields.founded value=system.founded name="system.founded" disabled=isPlayMode}}
</fieldset>
<fieldset class="tax-notes">
<legend>{{localize "OATHHAMMER.Label.TaxNotes"}}</legend>
{{formInput systemFields.taxNotes value=system.taxNotes name="system.taxNotes" disabled=isPlayMode}}
</fieldset>
</div>
<fieldset>
<legend>{{localize "OATHHAMMER.Label.Description"}}</legend>
{{#if isEditMode}}
<prose-mirror name="system.description" toggled="false" collaborate="false">
{{{system.description}}}
</prose-mirror>
{{else}}
<div class="editor-content">{{{enrichedDescription}}}</div>
{{/if}}
</fieldset>
</section>