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,41 @@
<section data-tab="buildings" data-group="{{tab.group}}" class="tab {{tab.cssClass}}">
<p class="settlement-hint">{{localize "OATHHAMMER.Settlement.BuildingHint"}}</p>
{{#if buildings.length}}
<ul class="item-list item-list--buildings">
<li class="item-list-header">
<span></span>
<span class="col-name">{{localize "OATHHAMMER.Label.Name"}}</span>
<span>{{localize "OATHHAMMER.Label.Built"}}</span>
<span>{{localize "OATHHAMMER.Label.TaxRevenue"}}</span>
<span>{{localize "OATHHAMMER.Label.Cost"}}</span>
<span></span>
</li>
{{#each buildings as |building|}}
<li class="item-entry {{#if building.system.constructed}}building-constructed{{/if}}" data-item-id="{{building.id}}" data-item-uuid="{{building.uuid}}">
<img src="{{building.img}}" class="item-img" />
<span class="item-name" data-tooltip="{{building.name}}">{{building.name}}</span>
<span class="item-constructed">
{{#unless ../isPlayMode}}
<a data-action="toggleConstructed" data-item-id="{{building.id}}" class="construct-toggle">
<i class="fa-{{#if building.system.constructed}}solid{{else}}regular{{/if}} fa-square-check"></i>
</a>
{{else}}
<i class="fa-{{#if building.system.constructed}}solid{{else}}regular{{/if}} fa-square-check"></i>
{{/unless}}
</span>
<span class="item-tax {{#unless building.system.constructed}}item-tax--inactive{{/unless}}">
{{#if building.system.taxRevenue}}{{building.system.taxRevenue}}{{else}}{{/if}}
</span>
<span class="item-cost">{{building.system.cost}} gp</span>
<div class="item-actions">
<a data-action="edit" data-item-id="{{building.id}}" data-item-uuid="{{building.uuid}}"><i class="fa-solid fa-edit"></i></a>
{{#unless ../isPlayMode}}<a data-action="delete" data-item-id="{{building.id}}" data-item-uuid="{{building.uuid}}"><i class="fa-solid fa-trash"></i></a>{{/unless}}
</div>
</li>
{{/each}}
</ul>
{{else}}
<p class="no-items">{{localize "OATHHAMMER.Settlement.NoBuildings"}}</p>
{{/if}}
</section>