parent
f5b4633f76
commit
3f8794e181
|
|
@ -1,5 +1,3 @@
|
|||
import {PlayerCharacterDataModel} from "../../data/character.mjs";
|
||||
|
||||
export default {
|
||||
_prepareContext: (context, actor, thisObject) => {
|
||||
|
||||
|
|
@ -52,9 +50,11 @@ export default {
|
|||
for (let setIndex = 0; setIndex < maxSets; setIndex++) {
|
||||
|
||||
context.sets.push({
|
||||
tab: "set" + (setIndex + 1),
|
||||
tab: "pane" + (setIndex + 1),
|
||||
label: romanNumerals[setIndex],
|
||||
index: setIndex,
|
||||
actorId: actorData.id,
|
||||
setEquipped: actorData.system.setEquipped === setIndex,
|
||||
slots: [
|
||||
{
|
||||
target: "links",
|
||||
|
|
@ -131,6 +131,8 @@ export default {
|
|||
]
|
||||
})
|
||||
}
|
||||
context.selectedTab = thisObject.selectedTab ?? context.sets[0].tab
|
||||
context.setEquipped = actorData.system.setEquipped
|
||||
|
||||
return context
|
||||
},
|
||||
|
|
@ -150,9 +152,51 @@ export default {
|
|||
}
|
||||
}).bind(thisObject.element);
|
||||
|
||||
const tabs = new foundry.applications.ux.Tabs({
|
||||
navSelector: ".set .tabs.sets",
|
||||
contentSelector: ".set .tab",
|
||||
initial: thisObject.actor.system.setEquipped ? "pane" + (thisObject.actor.system.setEquipped + 1) : "pane1",
|
||||
group: "set-tabs",
|
||||
callback: (event, tab, tabName) => {
|
||||
console.log(event, tab, tabName)
|
||||
thisObject.selectedTab = tabName
|
||||
thisObject.element.querySelectorAll(tab._contentSelector).forEach(
|
||||
(tab) => {
|
||||
if (tab.dataset["tab"] === tabName) {
|
||||
tab.classList.add("active")
|
||||
} else {
|
||||
tab.classList.remove("active")
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
})
|
||||
|
||||
tabs.bind(thisObject.element)
|
||||
|
||||
new ContextMenu(
|
||||
thisObject.element,
|
||||
".equipment",
|
||||
".paperdoll .equipped",
|
||||
[
|
||||
{
|
||||
name: "Abrüsten",
|
||||
icon: '<i class="fa-solid fa-suitcase"></i>',
|
||||
callback: (targetElement) => {
|
||||
const {setId, target} = targetElement.dataset
|
||||
const updateObject = thisObject.document.getEquipmentSetUpdateObject()
|
||||
delete updateObject[`system.heldenausruestung.${setId}.${target}`]
|
||||
thisObject.document.update(updateObject)
|
||||
},
|
||||
condition: (target) => {
|
||||
const {itemId} = target.dataset
|
||||
return thisObject.document.isWorn(itemId)
|
||||
}
|
||||
},
|
||||
], {jQuery: false})
|
||||
|
||||
new ContextMenu(
|
||||
thisObject.element,
|
||||
".inventory-table .equipment",
|
||||
[
|
||||
{
|
||||
name: "Abrüsten",
|
||||
|
|
|
|||
|
|
@ -70,6 +70,7 @@ class CharacterSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
|
|||
openStandaloneLiturgies: CharacterSheet.#openStandaloneLiturgies,
|
||||
openStandaloneHealth: CharacterSheet.#openStandaloneHealth,
|
||||
setWounds: CharacterSheet.#setWounds,
|
||||
switchSet: CharacterSheet.#switchSet
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -115,15 +116,6 @@ class CharacterSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
|
|||
effects: {
|
||||
template: Effects.template
|
||||
},
|
||||
set1: {
|
||||
template: "systems/DSA_4-1/templates/actor/character/tab-set.hbs"
|
||||
},
|
||||
set2: {
|
||||
template: "systems/DSA_4-1/templates/actor/character/tab-set.hbs"
|
||||
},
|
||||
set3: {
|
||||
template: "systems/DSA_4-1/templates/actor/character/tab-set.hbs"
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -329,6 +321,12 @@ class CharacterSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
|
|||
this.render(true)
|
||||
}
|
||||
|
||||
static async #switchSet(event, target) {
|
||||
const {id} = target.dataset
|
||||
this.document.update({"system.setEquipped": id})
|
||||
this.render(true)
|
||||
}
|
||||
|
||||
_configureRenderOptions(options) {
|
||||
super._configureRenderOptions(options)
|
||||
|
||||
|
|
@ -719,11 +717,24 @@ class CharacterSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
|
|||
return true
|
||||
}
|
||||
|
||||
|
||||
async _onDrop(event) {
|
||||
const data = TextEditor.implementation.getDragEventData(event)
|
||||
const targetDocument = this.actor.itemTypes["Equipment"].find(p => p._id === event.target.dataset['itemId'])
|
||||
|
||||
if (event.target.dataset["target"] && event.target.dataset["setId"]) {
|
||||
|
||||
const documentClass = foundry.utils.getDocumentClass(data.type)
|
||||
if (documentClass) {
|
||||
const document = await documentClass.fromDropData(data)
|
||||
|
||||
const {setId, target} = event.target.dataset
|
||||
const updateObject = this.actor.getEquipmentSetUpdateObject()
|
||||
updateObject[`system.heldenausruestung.${setId}.${target}`] = document.id
|
||||
await this.actor.update(updateObject)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Dropped Documents
|
||||
const documentClass = foundry.utils.getDocumentClass(data.type)
|
||||
if (documentClass) {
|
||||
|
|
|
|||
|
|
@ -1,34 +1,3 @@
|
|||
.dsa41.sheet.actor.character .window-content {
|
||||
.sheet-tabs.paperdoll-tabs.tabs {
|
||||
|
||||
position: absolute;
|
||||
top: 30px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 26px;
|
||||
|
||||
.item.active[data-tab] {
|
||||
padding-left: 12px;
|
||||
padding-right: 12px;
|
||||
padding-top: 8px;
|
||||
padding-bottom: 3px;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.sheet-body.paperdoll-sets {
|
||||
left: 0;
|
||||
top: 55px;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
overflow: hidden;
|
||||
|
||||
div.tab {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.paperdoll {
|
||||
|
||||
grid-area: equipment;
|
||||
|
|
@ -110,5 +79,3 @@
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -73,6 +73,57 @@
|
|||
}
|
||||
}
|
||||
|
||||
nav.tabs:not(.sheet-tabs) {
|
||||
border: unset;
|
||||
border-bottom: 1px solid black;
|
||||
gap: 0;
|
||||
height: 24px;
|
||||
|
||||
a.item {
|
||||
flex: 1;
|
||||
position: relative;
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
|
||||
span {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
line-height: 24px;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
a.item:not(.active) {
|
||||
border: unset;
|
||||
}
|
||||
|
||||
a.item.active {
|
||||
border: 1px solid black;
|
||||
border-bottom: none;
|
||||
|
||||
span {
|
||||
left: -2px;
|
||||
top: -2px;
|
||||
height: 28px;
|
||||
|
||||
&:after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 2px;
|
||||
right: 0;
|
||||
bottom: 3px;
|
||||
height: 2px;
|
||||
background: assets.$tab-background;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// darkmode
|
||||
|
|
|
|||
|
|
@ -29,18 +29,20 @@
|
|||
|
||||
<h3 class="equipment-header">Ausrüstung</h3>
|
||||
<div class="set">
|
||||
<nav class="tabs" data-group="setTabs">
|
||||
<nav class="tabs sets" data-group="set-tabs">
|
||||
{{#each sets}}
|
||||
<a class="item" data-tab="{{tab}}">{{label}}</a>
|
||||
<a class="item" data-tab="{{this.tab}}" data-group="set-tabs"><span>{{this.label}}</span></a>
|
||||
{{/each}}
|
||||
</nav>
|
||||
|
||||
<section class="tab-content">
|
||||
|
||||
<section class="panes sets">
|
||||
{{#each sets}}
|
||||
<div class="tab {{this.tab}} {{#if (eq ../selectedTab this.tab)}}active{{/if}}" data-tab="{{this.tab}}"
|
||||
data-group="set-tabs">
|
||||
{{> "systems/DSA_4-1/templates/actor/character/tab-set.hbs" this}}
|
||||
|
||||
</div>
|
||||
{{/each}}
|
||||
</section>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
|
@ -1,25 +1,24 @@
|
|||
<div class="paperdoll">
|
||||
<!--<svg
|
||||
<svg
|
||||
width="280"
|
||||
height="530"
|
||||
viewBox="0 0 70 140"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<path class="paperdoll-image"
|
||||
d="m 22.868053,0.6591628 0.658626,-0.52687462 6.270125,4.42573652 3.97809,0.5795595 0.605938,-4.58379633 11.828915,2.02846193 0.07905,2.3182421 3.556578,-0.9220267 6.691636,3.7671414 2.292014,3.7671454 -4.030787,0.05268 0.89573,3.951549 -1.106491,2.23921 -3.345818,-0.632247 0.869387,4.241332 v 2.476303 l 1.422627,-0.02634 0.500563,1.343527 h 3.29312 l 1.975878,3.424677 0.05267,2.818774 2.371046,6.243447 6.665292,14.72611 1.949534,0.658592 0.34249,4.794545 -0.289802,1.606966 0.922074,1.765023 -0.395167,2.897805 2.002222,6.743979 1.027449,1.949433 -0.737657,5.031644 -3.925413,4.399394 -0.922074,-0.553222 0.579595,-1.844054 -1.896847,1.264499 -0.526897,-0.790314 1.475315,-1.369869 -1.36994,-5.690236 -0.974762,4.083275 -1.053803,-0.342473 -0.790345,-3.108552 0.579584,-2.370933 0.526907,-0.658592 -0.263459,-0.500527 0.289803,-1.554277 0.948418,-2.739737 -0.447865,-2.212876 -1.106492,-0.974715 -1.554356,-1.501588 -2.423744,-4.030581 0.711314,-1.264496 -3.793683,-5.532171 -0.02638,-1.554275 -1.475326,-1.554276 -1.185522,-3.213929 -0.869387,-0.763967 -3.029682,4.820892 -1.159179,0.447843 0.447865,0.974716 -0.790345,0.974716 -0.21076,2.002118 0.368823,1.343527 -0.289792,1.923087 1.71243,2.397274 0.02638,1.791371 1.23821,1.975774 2.950651,13.013779 -0.421522,0.684934 2.713536,14.278264 7.113157,18.150786 1.132835,0.0791 3.767339,9.19394 -2.344701,0.73762 1.92318,7.42891 -1.738774,3.87253 1.001116,3.79348 2.687192,4.10961 -0.68497,2.44996 -10.643392,0.079 -0.684969,-8.42997 1.106491,-1.42257 -1.659742,-1.47524 0.07905,-2.00211 -1.949535,-2.18653 -0.55325,-3.84617 -1.422628,0.15805 -0.500553,-7.71869 1.02745,-1.05374 -2.133941,-4.21499 0.421521,-2.42362 -4.32059,-6.322483 -1.317252,-4.056921 -9.247098,-17.702946 -0.395178,0.210749 -3.609266,18.783038 -1.975878,3.635422 -0.289802,10.721871 0.764011,-0.0264 2.397389,7.71869 -4.663069,0.97472 -0.737658,6.74398 -2.212983,1.92309 1.422638,6.74397 -1.896847,3.10855 -4.504997,0.34248 -0.105385,-0.86934 -3.714641,1.2118 -8.140618,0.21075 -0.131729,-2.00212 8.483107,-5.47948 0.711314,-1.89674 -0.316146,-2.18653 0.869386,-0.71128 -1.027449,-1.36986 1.659732,-6.55958 -2.502775,-0.76396 1.317252,-3.42469 -0.289792,-1.2645 2.397389,-3.05585 2.107608,-12.592278 -0.948419,-7.349881 0.316136,-13.90946 -1.554356,-1.159119 4.504996,-21.153968 0.316147,-4.557454 0.948418,-3.345646 -2.160295,2.924147 -4.847487,4.135956 1.264565,1.080091 -3.42485,2.397275 -3.29313,2.766082 -0.68497,1.923087 -1.791461,-0.57956 -1.001116,1.633307 0.07905,4.87358 L 9.168636,68.889233 4.2948053,70.180074 1.5812697,67.466679 0.13228831,66.070468 2.9775532,60.801731 6.5868297,58.825953 6.692205,57.245334 8.0884885,56.059869 v -1.923064 l 2.9769935,-7.824067 2.897953,0.553216 7.323918,-8.166536 v -0.500531 l 3.872714,-4.689172 -0.263448,-2.028463 2.766234,-5.1897 5.163622,-1.448903 0.158063,-1.844055 -0.922074,-2.291899 0.948428,-5.95367 -0.658626,-4.294017 -4.926518,-3.9515498 z"/>
|
||||
</svg>-->
|
||||
</svg>
|
||||
|
||||
{{#each this.slots}}
|
||||
<div class="equipped {{this.target}}" data-set-id="{{../index}}"
|
||||
data-target="{{this.target}}" data-actor="{{../../actor.id}}"><img
|
||||
<div class="equipped {{this.target}}" data-item-id="{{this.id}}" data-set-id="{{../index}}"
|
||||
data-target="{{this.target}}" data-actor="{{this.actorId}}"><img
|
||||
src="{{this.icon}}"/></div>
|
||||
{{/each}}
|
||||
{{!--
|
||||
{{#if (eq ../actor.system.setEquipped @index)}}
|
||||
|
||||
{{#if setEquipped}}
|
||||
<button disabled="disabled">Ausgerüstet</button>
|
||||
{{else}}
|
||||
<button data-action="switchSet" data-id="{{@index}}">Wechseln</button>
|
||||
{{/if}}
|
||||
|
||||
--}}
|
||||
|
||||
</div>
|
||||
Loading…
Reference in New Issue