Compare commits

...

15 Commits
main ... 0.1.9

Author SHA1 Message Date
macniel e57d62aef2 update structure of sheet 2025-09-25 21:19:30 +02:00
macniel bef9b90901 adds ruletext and requisite 2025-09-25 21:04:03 +02:00
macniel 51ad48d058 adds ruletext and requisite 2025-09-25 20:58:57 +02:00
macniel 2414f3b8f3 register fields for database structur 2025-09-25 20:37:44 +02:00
macniel 81da532074 labeling 2025-09-25 20:20:10 +02:00
macniel 2972bc2cf7 once more again with feelings 2025-09-25 20:14:50 +02:00
macniel 4a35a24d43 once more with feelings 2025-09-25 20:12:54 +02:00
macniel fe9fe03282 naming 2025-09-25 20:08:23 +02:00
macniel 4eedb1527b just blank version please 2025-09-25 20:05:00 +02:00
macniel 192b1b4252 invoking constructors 2025-09-25 20:02:38 +02:00
macniel 48c6d1123d fix export 2025-09-25 19:59:47 +02:00
macniel e91fe82e95 register sheets 2025-09-25 19:57:52 +02:00
macniel 32e44a5cf9 update naming and directory structure 2025-09-25 19:50:13 +02:00
macniel 1ba672680e missed initial declaration 2025-09-25 19:29:53 +02:00
macniel 3b768ca44c initial skill data and dialog test 2025-09-25 19:26:26 +02:00
6 changed files with 200 additions and 3 deletions

View File

@ -1,7 +1,10 @@
import {PlayerCharacterDataModel} from "./module/character/character.mjs";
import {DsaActor} from "./module/Actors/dsa-actor.mjs";
import { PlayerCharacterDataModel } from "./module/character/character.mjs";
import { DsaActor } from "./module/Actors/dsa-actor.mjs";
import { Skill } from "./module/Items/Skill.mjs"
import { SkillSheet } from "./module/Items/SkillSheet.mjs";
Hooks.once("init", () => {
// Configure custom Document implementations.
CONFIG.Actor.documentClass = DsaActor;
@ -10,5 +13,15 @@ Hooks.once("init", () => {
character: PlayerCharacterDataModel,
};
CONFIG.Item.dataModels = {
skills: Skill
}
console.log("DSA 4.1 is ready for development!")
// Register sheet application classes
Items.registerSheet('dsa41.skill', SkillSheet, {
makeDefault: true,
label: 'DSA41.SheetLabels.Item',
});
})

View File

@ -0,0 +1,23 @@
const { BooleanField, NumberField, SchemaField, SetField, StringField, HTMLField } = foundry.data.fields;
export class Skill extends foundry.abstract.TypeDataModel {
static defineSchema() {
return {
name: new StringField({ required: true }),
category: new StringField({ required: true }),
attributeReference1: new StringField(), // References one of the eight attributes by name
attributeReference2: new StringField(), // References one of the eight attributes by name
attributeReference3: new StringField(), // References one of the eight attributes by name
requisite: new StringField(), // Required skills at a given level
text: new HTMLField(),
handicapValue: new NumberField(), // BE-X
complexity: new NumberField(), // In case of languages
derivedAttribute1: new NumberField(),
derivedAttribute2: new NumberField(),
derivedAttribute3: new NumberField(),
derivedSkillValue: new NumberField(), // TaW
}
}
}

View File

@ -0,0 +1,58 @@
export class SkillSheet extends ItemSheet {
/**@override */
static get defaultOptions() {
return foundry.utils.mergeObject(super.defaultOptions, {
classes: ['dsa41', 'sheet', 'item', 'skill'],
width: 520,
height: 480,
tabs: [
{
navSelector: '.sheet-tabs',
contentSelector: '.sheet-body',
initial: 'description',
},
],
});
}
/** @override */
get template() {
return `systems/DSA_4-1/templates/item/item-${this.item.type}-sheet.hbs`;
}
/** @override */
getData() {
// Retrieve the data structure from the base sheet. You can inspect or log
// the context variable to see the structure, but some key properties for
// sheets are the actor object, the data object, whether or not it's
// editable, the items array, and the effects array.
const context = super.getData();
// Use a safe clone of the actor data for further operations.
const skillData = context.data;
// Add the actor's data to context.data for easier access, as well as flags.
context.system = skillData.system;
context.flags = skillData.flags;
context.categoryOptions = {
combat: "Kampf",
physical: "Körperlich",
social: "Gesellschaft",
survival: "Natur",
knowledge: "Wissen",
languages: "Sprache und Schriften",
crafting: "Handwerk"
}
return context;
}
activateListeners(html) {
super.activateListeners(html);
// Everything below here is only needed if the sheet is editable
if (!this.isEditable) return;
}
}

View File

@ -41,6 +41,13 @@
"documentTypes": {
"Actor": {
"character": {}
},
"Item": {
"skill": {
"stringFields": ["name", "category", "attributeReference1", "attributeReference2", "attributeReference3", "requisite"],
"numberFields": ["handicapValue", "complexity"],
"htmlFields": ["text"]
}
}
},
"socket": false,

View File

@ -0,0 +1,27 @@
<form class="{{cssClass}} {{actor.type}} flexcol" autocomplete="off">
{{!-- Sheet Header --}}
<header class="sheet-header">
{{!-- Header stuff goes here --}}
<img class="profile-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" height="100" width="100"/>
<div class="header-fields">
<h1 class="charname"><input name="name" type="text" value="{{actor.name}}" placeholder="Name"/></h1>
</div>
</header>
{{!-- Sheet Tab Navigation --}}
<nav class="sheet-tabs tabs" data-group="primary">
<a class="item" data-tab="overview">Übersicht</a>
<a class="item" data-tab="skills">Talente</a>
</nav>
{{!-- Sheet Body --}}
<section class="sheet-body">
<div class="tab description" data-group="primary" data-tab="description">
<input type="text" name="system.meta.spezies.value" value="{{system.meta.spezies.value}}" />
<input type="text" name="system.meta.kultur.value" value="{{system.meta.kultur.value}}" />
<input type="text" name="system.meta.profession.value" value="{{system.meta.profession.value}}" />
<input type="text" name="system.meta.geschlecht.value" value="{{system.meta.geschlecht.value}}" />
</div>
</section>
</form>

View File

@ -0,0 +1,69 @@
<form class="{{cssClass}} {{actor.type}} flexcol" autocomplete="off">
{{!-- Sheet Header --}}
<header class="sheet-header" style="flex: 0">
{{!-- Header stuff goes here --}}
<img class="profile-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" height="100" width="100" />
</header>
{{!-- Sheet Tab Navigation --}}
<nav class="sheet-tabs tabs" style="flex: 0" data-group="primary">
<a class="item" data-tab="meta">Talent</a>
<a class="item" data-tab="description">Regeltext</a>
</nav>
{{!-- Sheet Body --}}
<section class="sheet-body" style="flex: 1">
<div class="tab meta" data-group="primary" data-tab="meta">
<div>
<label>Kategorie
<select type="text" name="system.category.value">
{{selectOptions categoryOptions selected=value}}
</select>
</label>
</div>
<div>
<label>Erstes Attribut
<input type="text" name="system.attributeReference1.value"
value="{{system.attributeReference1.value}}" />
</label>
</div>
<div><label>Zweites Attribut
<input type="text" name="system.attributeReference2.value"
value="{{system.attributeReference2.value}}" />
</label></div>
<div>
<label>Drittes Attribut
<input type="text" name="system.attributeReference3.value"
value="{{system.attributeReference3.value}}" />
</label>
</div>
<div>
<label>Behinderung
<input type="text" name="system.hanidcapValue.value" value="{{system.handicapValue.value}}" />
</label>
</div>
<div>
<label>Sprachenkomplexizität
<input type="text" name="system.complexity.value" value="{{system.complexity.value}}" />
</label>
</div>
</div>
<div class="tab description" data-group="primary" data-tab="description">
<div>
<label>Beschreibungstext
{{editor system.text target="system.text" button=true owner=owner editable=editable}}
</label>
</div>
<div>
<label>Voraussetzung
<input type="text" name="system.requisite.value" value="{{system.requisite.value}}" />
</label>
</div>
</div>
</div>
</section>
</form>