add eslint and prettier
This commit is contained in:
parent
618146226b
commit
2ba687eb14
10 changed files with 775 additions and 37 deletions
2
src/module/actor/actor-data.ts
Normal file
2
src/module/actor/actor-data.ts
Normal file
|
@ -0,0 +1,2 @@
|
|||
// TODO: Actually add a type for data
|
||||
export type DS4ActorDataType = unknown;
|
|
@ -1,12 +1,13 @@
|
|||
import { DS4Actor } from "./actor";
|
||||
import { DS4ActorDataType } from "./actor-data";
|
||||
|
||||
/**
|
||||
* Extend the basic ActorSheet with some very simple modifications
|
||||
* @extends {ActorSheet}
|
||||
*/
|
||||
export class DS4ActorSheet extends ActorSheet<{
|
||||
/* TODO: add actual type for data */
|
||||
}> {
|
||||
export class DS4ActorSheet extends ActorSheet<DS4ActorDataType, DS4Actor> {
|
||||
/** @override */
|
||||
static get defaultOptions() {
|
||||
static get defaultOptions(): FormApplicationOptions {
|
||||
return mergeObject(super.defaultOptions, {
|
||||
classes: ["ds4", "sheet", "actor"],
|
||||
template: "systems/ds4/templates/actor/actor-sheet.html",
|
||||
|
@ -19,11 +20,11 @@ export class DS4ActorSheet extends ActorSheet<{
|
|||
/* -------------------------------------------- */
|
||||
|
||||
/** @override */
|
||||
getData() {
|
||||
getData(): ActorSheetData<DS4ActorDataType> {
|
||||
// TODO: replace ["..."] access with .
|
||||
const data = super.getData();
|
||||
data["dtypes"] = ["String", "Number", "Boolean"];
|
||||
for (let attr of Object.values(data.data["attributes"])) {
|
||||
for (const attr of Object.values(data.data["attributes"])) {
|
||||
attr["isCheckbox"] = attr["dtype"] === "Boolean";
|
||||
}
|
||||
console.log(data);
|
||||
|
@ -31,7 +32,7 @@ export class DS4ActorSheet extends ActorSheet<{
|
|||
}
|
||||
|
||||
/** @override */
|
||||
activateListeners(html) {
|
||||
activateListeners(html: JQuery): void {
|
||||
super.activateListeners(html);
|
||||
|
||||
// Everything below here is only needed if the sheet is editable
|
||||
|
@ -65,7 +66,7 @@ export class DS4ActorSheet extends ActorSheet<{
|
|||
* @param {Event} event The originating click event
|
||||
* @private
|
||||
*/
|
||||
_onItemCreate(event) {
|
||||
_onItemCreate(event: JQuery.ClickEvent): Promise<Item> {
|
||||
event.preventDefault();
|
||||
const header = event.currentTarget;
|
||||
// Get the type of item to create.
|
||||
|
@ -92,14 +93,14 @@ export class DS4ActorSheet extends ActorSheet<{
|
|||
* @param {Event} event The originating click event
|
||||
* @private
|
||||
*/
|
||||
_onRoll(event) {
|
||||
_onRoll(event: JQuery.ClickEvent): void {
|
||||
event.preventDefault();
|
||||
const element = event.currentTarget;
|
||||
const dataset = element.dataset;
|
||||
|
||||
if (dataset.roll) {
|
||||
let roll = new Roll(dataset.roll, this.actor.data.data);
|
||||
let label = dataset.label ? `Rolling ${dataset.label}` : "";
|
||||
const roll = new Roll(dataset.roll, this.actor.data.data as Record<string, unknown>);
|
||||
const label = dataset.label ? `Rolling ${dataset.label}` : "";
|
||||
roll.roll().toMessage({
|
||||
speaker: ChatMessage.getSpeaker({ actor: this.actor }),
|
||||
flavor: label,
|
||||
|
|
|
@ -1,34 +1,39 @@
|
|||
import { DS4ActorDataType } from "./actor-data";
|
||||
|
||||
/**
|
||||
* Extend the base Actor entity by defining a custom roll data structure which is ideal for the Simple system.
|
||||
* @extends {Actor}
|
||||
*/
|
||||
export class DS4Actor extends Actor {
|
||||
export class DS4Actor extends Actor<DS4ActorDataType> {
|
||||
/** @override */
|
||||
prepareDerivedData() {
|
||||
prepareDerivedData(): void {
|
||||
const data = this.data;
|
||||
this._prepareCombatValues(data);
|
||||
}
|
||||
|
||||
_prepareCombatValues(data) {
|
||||
_prepareCombatValues(data: ActorData<DS4ActorDataType>): void {
|
||||
const hitPointsModifier = getProperty(data, "data.combatValues.hitPoints.modifier") || 0;
|
||||
setProperty(
|
||||
data,
|
||||
"data.combatValues.hitPoints.max",
|
||||
data.data.attributes.body.initial + data.data.traits.constitution.initial + 10 + hitPointsModifier
|
||||
data.data["attributes"]["body"].initial + // TODO: replace ["..."]
|
||||
data.data["traits"]["constitution"].initial + // TODO: replace ["..."]
|
||||
10 +
|
||||
hitPointsModifier,
|
||||
);
|
||||
|
||||
const defenseModifier = getProperty(data, "data.combatValues.defense.modifier") || 0;
|
||||
setProperty(
|
||||
data,
|
||||
"data.combatValues.defense.value",
|
||||
data.data.attributes.body.initial +
|
||||
data.data.traits.constitution.initial +
|
||||
data.data["attributes"]["body"].initial + // TODO: replace ["..."]
|
||||
data.data["traits"]["constitution"].initial + // TODO: replace ["..."]
|
||||
this._getArmorValue() +
|
||||
defenseModifier
|
||||
defenseModifier,
|
||||
);
|
||||
}
|
||||
|
||||
_getArmorValue() {
|
||||
_getArmorValue(): number {
|
||||
return this.data["items"]
|
||||
.filter((item) => ["armor", "shield"].includes(item.type))
|
||||
.filter((item) => item.data.equipped)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue