adjust to id change

This commit is contained in:
2023-11-21 19:50:39 +01:00
parent 6428b3252e
commit 30d0924e3d
70 changed files with 2856 additions and 1143 deletions
+1 -1
View File
@@ -4,7 +4,7 @@ import { M5EwResult, M5RollData, M5RollResult, M5SkillUnlearned } from "../M5Bas
export class M5Roll {
// extends Roll<M5RollData>
static readonly TEMPLATE_PATH = "systems/midgard5/templates/chat/roll-m5.hbs";
static readonly TEMPLATE_PATH = "systems/midgard5e/templates/chat/roll-m5.hbs";
public _evaluated: boolean = false;
public _total: number = 0;
+1 -1
View File
@@ -7,7 +7,7 @@ import { M5Roll } from "../rolls/M5Roll";
export default class M5CharacterSheet extends ActorSheet {
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
template: "systems/midgard5/templates/sheets/character/main.hbs",
template: "systems/midgard5e/templates/sheets/character/main.hbs",
width: 800,
height: 800,
classes: ["midgard5", "sheet", "character"],
+96 -99
View File
@@ -1,128 +1,128 @@
import { M5Item } from "../items/M5Item"
import { M5Attributes, M5ItemMod, M5ModOperation, M5ModType, M5RollTemplate } from "../M5Base"
import { M5Item } from "../items/M5Item";
import { M5Attributes, M5ItemMod, M5ModOperation, M5ModType, M5RollTemplate } from "../M5Base";
export class M5ItemSheet extends ItemSheet {
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
width: 640,
height: 480,
classes: ["midgard5", "sheet", "item"]
})
classes: ["midgard5", "sheet", "item"],
});
}
get template() {
//console.log("M5ItemSheet", this.item.data.type)
const path = "systems/midgard5/templates/sheets/item"
return `${path}/${this.item.type}.hbs`
const path = "systems/midgard5e/templates/sheets/item";
return `${path}/${this.item.type}.hbs`;
}
override getData(options?: Partial<ItemSheet.Options>): ItemSheet.Data<ItemSheet.Options> | Promise<ItemSheet.Data<ItemSheet.Options>> {
const item = this.item as M5Item
return Promise.resolve(super.getData()).then(value => {
item.prepareDerivedData()
const context = value as any
const item = this.item as M5Item;
return Promise.resolve(super.getData()).then((value) => {
item.prepareDerivedData();
const context = value as any;
// Use a safe clone of the item data for further operations.
const itemData = context.item
const itemData = context.item;
// Retrieve the roll data for TinyMCE editors.
context.rollData = {}
let actor = this.object?.parent ?? null
context.rollData = {};
let actor = this.object?.parent ?? null;
if (actor) {
context.rollData = actor.getRollData()
context.rollData = actor.getRollData();
}
context.data = itemData.system
context.flags = itemData.flags
return context
})
context.data = itemData.system;
context.flags = itemData.flags;
return context;
});
}
override activateListeners(html: JQuery) {
super.activateListeners(html)
super.activateListeners(html);
html.find(".add-mod").on("click", async (event) => {
const context = this.object
const mods = context.system.mods
const modIndex = Object.keys(mods).length
const context = this.object;
const mods = context.system.mods;
const modIndex = Object.keys(mods).length;
mods[modIndex.toString()] = {
type: M5ModType.ATTRIBUTE,
id: M5Attributes.ST,
operation: M5ModOperation.ADD,
value: 0
} as M5ItemMod
value: 0,
} as M5ItemMod;
this.object.update({
data: {
mods: mods
}
})
})
mods: mods,
},
});
});
html.find(".item-delete").on("click", async (event) => {
let row = event.target.parentElement
let itemId = row.dataset["item"]
let row = event.target.parentElement;
let itemId = row.dataset["item"];
while (!itemId) {
row = row.parentElement
if (!row)
return
itemId = row.dataset["item"]
row = row.parentElement;
if (!row) return;
itemId = row.dataset["item"];
}
const context = this.item
const item = context.items.get(itemId)
item.delete()
this.render(false)
})
const context = this.item;
const item = context.items.get(itemId);
item.delete();
this.render(false);
});
html.find(".roll-delete").on("click", async (event) => {
//console.log("roll-delete", this.item.data.data.rolls.formulas)
let row = event.target.parentElement
let rollIndex = row.dataset["roll"]
let row = event.target.parentElement;
let rollIndex = row.dataset["roll"];
while (!rollIndex) {
row = row.parentElement
if (!row)
return
rollIndex = row.dataset["roll"]
row = row.parentElement;
if (!row) return;
rollIndex = row.dataset["roll"];
}
const rolls = this.item.system.rolls.formulas
rolls[rollIndex] = null
const rolls = this.item.system.rolls.formulas;
rolls[rollIndex] = null;
this.item.update({
data: {
rolls: {
formulas: rolls
}
}
})
this.render(false)
})
formulas: rolls,
},
},
});
this.render(false);
});
html.find(".roll-create").on("click", async (event) => {
const rolls = this.item.system.rolls.formulas
const rolls = this.item.system.rolls.formulas;
const indeces = Object.keys(rolls).map(index => parseInt(index)).sort().reverse()
const index = (indeces.find(index => !!rolls[index.toString()]) ?? -1) + 1
console.log("roll-create", rolls, indeces, index)
const indeces = Object.keys(rolls)
.map((index) => parseInt(index))
.sort()
.reverse();
const index = (indeces.find((index) => !!rolls[index.toString()]) ?? -1) + 1;
console.log("roll-create", rolls, indeces, index);
rolls[index.toString()] = {
formula: "1d6",
label: (game as Game).i18n.localize("midgard5.roll"),
enabled: true
} as M5RollTemplate
enabled: true,
} as M5RollTemplate;
this.item.update({
data: {
rolls: {
formulas: rolls
}
}
})
this.render(false)
})
formulas: rolls,
},
},
});
this.render(false);
});
// Drag & Drop
if (["item"].includes(this.object.type)) {
@@ -131,65 +131,62 @@ export class M5ItemSheet extends ItemSheet {
dropSelector: null,
permissions: { dragstart: this._canDragStart.bind(this), drop: this._canDragDrop.bind(this) },
callbacks: { drop: this._onDropItem.bind(this) },
})
itemToItemAssociation.bind(html[0])
});
itemToItemAssociation.bind(html[0]);
}
}
_canDragStart(selector) {
console.log("M5ItemSheet._canDragStart", selector)
return this.options.editable && this.object.isOwner
console.log("M5ItemSheet._canDragStart", selector);
return this.options.editable && this.object.isOwner;
}
_canDragDrop(selector) {
console.log("M5ItemSheet._canDragDrop", selector)
return true
console.log("M5ItemSheet._canDragDrop", selector);
return true;
}
async _onDropItem(event) {
let data
const obj = this.object
const li = event.currentTarget
let data;
const obj = this.object;
const li = event.currentTarget;
try {
data = JSON.parse(event.dataTransfer.getData("text/plain"))
if (data.type !== "Item")
return false
data = JSON.parse(event.dataTransfer.getData("text/plain"));
if (data.type !== "Item") return false;
} catch (err) {
return false
return false;
}
// Case 1 - Import from a Compendium pack
let itemObject
let itemObject;
if (data.pack) {
const compendiumObject = await (this as any).importItemFromCollection(data.pack, data.id)
itemObject = compendiumObject.data
const compendiumObject = await (this as any).importItemFromCollection(data.pack, data.id);
itemObject = compendiumObject.data;
}
// Case 2 - Import from World entity
else {
const originalItem = await (game as Game).items.get(data.id)
itemObject = duplicate(originalItem)
if (!itemObject)
return
const originalItem = await (game as Game).items.get(data.id);
itemObject = duplicate(originalItem);
if (!itemObject) return;
}
if ((itemObject.type === "mod")) {
let mods = obj?.system?.mods
if (!mods)
mods = []
if (itemObject.type === "mod") {
let mods = obj?.system?.mods;
if (!mods) mods = [];
itemObject.id = randomID()
console.log("M5ItemSheet._onDropItem", itemObject)
mods.push(itemObject)
itemObject.id = randomID();
console.log("M5ItemSheet._onDropItem", itemObject);
mods.push(itemObject);
obj.update({
data: {
mods: mods
}
})
mods: mods,
},
});
}
}
async _onDragItemStart(event) { }
async _onDragItemStart(event) {}
}