forked from GitHub-Mirrors/foundry-sw5e
Async all the way down
This commit is contained in:
parent
2160508076
commit
893c7b9d5e
1 changed files with 48 additions and 29 deletions
|
@ -8,7 +8,7 @@ export const migrateWorld = async function() {
|
||||||
// Migrate World Actors
|
// Migrate World Actors
|
||||||
for ( let a of game.actors.entities ) {
|
for ( let a of game.actors.entities ) {
|
||||||
try {
|
try {
|
||||||
const updateData = migrateActorData(a.data);
|
const updateData = await migrateActorData(a.data);
|
||||||
if ( !isObjectEmpty(updateData) ) {
|
if ( !isObjectEmpty(updateData) ) {
|
||||||
console.log(`Migrating Actor entity ${a.name}`);
|
console.log(`Migrating Actor entity ${a.name}`);
|
||||||
await a.update(updateData, {enforceTypes: false});
|
await a.update(updateData, {enforceTypes: false});
|
||||||
|
@ -36,7 +36,7 @@ export const migrateWorld = async function() {
|
||||||
// Migrate Actor Override Tokens
|
// Migrate Actor Override Tokens
|
||||||
for ( let s of game.scenes.entities ) {
|
for ( let s of game.scenes.entities ) {
|
||||||
try {
|
try {
|
||||||
const updateData = migrateSceneData(s.data);
|
const updateData = await migrateSceneData(s.data);
|
||||||
if ( !isObjectEmpty(updateData) ) {
|
if ( !isObjectEmpty(updateData) ) {
|
||||||
console.log(`Migrating Scene entity ${s.name}`);
|
console.log(`Migrating Scene entity ${s.name}`);
|
||||||
await s.update(updateData, {enforceTypes: false});
|
await s.update(updateData, {enforceTypes: false});
|
||||||
|
@ -84,13 +84,13 @@ export const migrateCompendium = async function(pack) {
|
||||||
try {
|
try {
|
||||||
switch (entity) {
|
switch (entity) {
|
||||||
case "Actor":
|
case "Actor":
|
||||||
updateData = migrateActorData(ent.data);
|
updateData = await migrateActorData(ent.data);
|
||||||
break;
|
break;
|
||||||
case "Item":
|
case "Item":
|
||||||
updateData = migrateItemData(ent.data);
|
updateData = migrateItemData(ent.data);
|
||||||
break;
|
break;
|
||||||
case "Scene":
|
case "Scene":
|
||||||
updateData = migrateSceneData(ent.data);
|
updateData = await migrateSceneData(ent.data);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if ( isObjectEmpty(updateData) ) continue;
|
if ( isObjectEmpty(updateData) ) continue;
|
||||||
|
@ -123,7 +123,7 @@ export const migrateCompendium = async function(pack) {
|
||||||
* @param {object} actor The actor data object to update
|
* @param {object} actor The actor data object to update
|
||||||
* @return {Object} The updateData to apply
|
* @return {Object} The updateData to apply
|
||||||
*/
|
*/
|
||||||
export const migrateActorData = function(actor) {
|
export const migrateActorData = async function(actor) {
|
||||||
const updateData = {};
|
const updateData = {};
|
||||||
|
|
||||||
// Actor Data Updates
|
// Actor Data Updates
|
||||||
|
@ -133,10 +133,10 @@ export const migrateActorData = function(actor) {
|
||||||
// Migrate Owned Items
|
// Migrate Owned Items
|
||||||
if ( !!actor.items ) {
|
if ( !!actor.items ) {
|
||||||
let hasItemUpdates = false;
|
let hasItemUpdates = false;
|
||||||
const items = actor.items.map(i => {
|
const items = await Promise.all(actor.items.map(async (i) => {
|
||||||
|
|
||||||
// Migrate the Owned Item
|
// Migrate the Owned Item
|
||||||
let itemUpdate = migrateActorItemData(i, actor);
|
let itemUpdate = await migrateActorItemData(i, actor);
|
||||||
|
|
||||||
// Prepared, Equipped, and Proficient for NPC actors
|
// Prepared, Equipped, and Proficient for NPC actors
|
||||||
if ( actor.type === "npc" ) {
|
if ( actor.type === "npc" ) {
|
||||||
|
@ -150,7 +150,7 @@ export const migrateActorData = function(actor) {
|
||||||
hasItemUpdates = true;
|
hasItemUpdates = true;
|
||||||
return mergeObject(i, itemUpdate, {enforceTypes: false, inplace: false});
|
return mergeObject(i, itemUpdate, {enforceTypes: false, inplace: false});
|
||||||
} else return i;
|
} else return i;
|
||||||
});
|
}));
|
||||||
if ( hasItemUpdates ) updateData.items = items;
|
if ( hasItemUpdates ) updateData.items = items;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -213,11 +213,11 @@ export const migrateItemData = function(item) {
|
||||||
* @param item
|
* @param item
|
||||||
* @param actor
|
* @param actor
|
||||||
*/
|
*/
|
||||||
export const migrateActorItemData = function(item, actor) {
|
export const migrateActorItemData = async function(item, actor) {
|
||||||
const updateData = {};
|
const updateData = {};
|
||||||
_migrateItemClassPowerCasting(item, updateData);
|
_migrateItemClassPowerCasting(item, updateData);
|
||||||
_migrateItemAttunement(item, updateData);
|
_migrateItemAttunement(item, updateData);
|
||||||
_migrateItemPower(item, actor, updateData);
|
await _migrateItemPower(item, actor, updateData);
|
||||||
return updateData;
|
return updateData;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -229,10 +229,10 @@ export const migrateItemData = function(item) {
|
||||||
* @param {Object} scene The Scene data to Update
|
* @param {Object} scene The Scene data to Update
|
||||||
* @return {Object} The updateData to apply
|
* @return {Object} The updateData to apply
|
||||||
*/
|
*/
|
||||||
export const migrateSceneData = function(scene) {
|
export const migrateSceneData = async function(scene) {
|
||||||
const tokens = duplicate(scene.tokens);
|
const tokens = duplicate(scene.tokens);
|
||||||
return {
|
return {
|
||||||
tokens: tokens.map(t => {
|
tokens: await Promise.all(tokens.map(async (t) => {
|
||||||
if (!t.actorId || t.actorLink || !t.actorData.data) {
|
if (!t.actorId || t.actorLink || !t.actorData.data) {
|
||||||
t.actorData = {};
|
t.actorData = {};
|
||||||
return t;
|
return t;
|
||||||
|
@ -242,11 +242,11 @@ export const migrateSceneData = function(scene) {
|
||||||
t.actorId = null;
|
t.actorId = null;
|
||||||
t.actorData = {};
|
t.actorData = {};
|
||||||
} else if ( !t.actorLink ) {
|
} else if ( !t.actorLink ) {
|
||||||
const updateData = migrateActorData(token.data.actorData);
|
const updateData = await migrateActorData(token.data.actorData);
|
||||||
t.actorData = mergeObject(token.data.actorData, updateData);
|
t.actorData = mergeObject(token.data.actorData, updateData);
|
||||||
}
|
}
|
||||||
return t;
|
return t;
|
||||||
})
|
}))
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -308,8 +308,8 @@ function _updateNPCData(actor) {
|
||||||
liveActor.createEmbeddedEntity("OwnedItem", newPowers);
|
liveActor.createEmbeddedEntity("OwnedItem", newPowers);
|
||||||
|
|
||||||
// set flag to check to see if migration has been done so we don't do it again.
|
// set flag to check to see if migration has been done so we don't do it again.
|
||||||
actor.flags.sw5e.dataVersion === "1.2.4";
|
// actor.flags.sw5e.dataVersion === "1.2.4";
|
||||||
// liveActor.setFlag("sw5e", "dataVersion", "1.2.4");
|
liveActor.setFlag("sw5e", "dataVersion", "1.2.4");
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -480,7 +480,7 @@ function _migrateItemClassPowerCasting(item, updateData) {
|
||||||
* @param {Object} actor The data object for the actor owning the item
|
* @param {Object} actor The data object for the actor owning the item
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
function _migrateItemPower(item, actor, updateData) {
|
async function _migrateItemPower(item, actor, updateData) {
|
||||||
// if item is not a power shortcut out
|
// if item is not a power shortcut out
|
||||||
if (item.type !== "power") return updateData;
|
if (item.type !== "power") return updateData;
|
||||||
// check for flag.core, if not there is no compendium power so exit
|
// check for flag.core, if not there is no compendium power so exit
|
||||||
|
@ -492,21 +492,40 @@ function _migrateItemClassPowerCasting(item, updateData) {
|
||||||
if ((hasDataVersion) && (item.flags.sw5e.dataVersion === "1.2.4")) return updateData;
|
if ((hasDataVersion) && (item.flags.sw5e.dataVersion === "1.2.4")) return updateData;
|
||||||
// Check to see what the source of Power is
|
// Check to see what the source of Power is
|
||||||
const sourceId = item.flags.core.sourceId;
|
const sourceId = item.flags.core.sourceId;
|
||||||
const coreSource = sourceId.substr(0,sourceId.length-17);
|
const coreSource = sourceId.substr(0, sourceId.length - 17);
|
||||||
const core_id = sourceId.substr(sourceId.length-16,16);
|
const core_id = sourceId.substr(sourceId.length - 16, 16);
|
||||||
if (coreSource === "Compendium.sw5e.forcepowers"){
|
if (coreSource === "Compendium.sw5e.techpowers") {
|
||||||
game.packs.get("sw5e.forcepowers").getEntity(core_id).then(corePower => {
|
game.packs
|
||||||
const coreData = corePower.data.data;
|
.get("sw5e.techpowers")
|
||||||
// copy Core Power Data over original Power
|
.getEntity(core_id)
|
||||||
updateData["data"] = coreData;
|
.then((corePower) => {
|
||||||
|
const coreData = corePower.data.data;
|
||||||
|
// copy Core Power Data over original Power
|
||||||
|
updateData["data"] = coreData;
|
||||||
|
updateData["flags"] = {"sw5e": {"dataVersion": "1.2.4"}};
|
||||||
|
|
||||||
// set flag to check to see if migration has been done so we don't do it again.
|
// set flag to check to see if migration has been done so we don't do it again.
|
||||||
item.flags.sw5e.dataVersion === "1.2.4";
|
// item.flags.sw5e.dataVersion === "1.2.4";
|
||||||
})
|
|
||||||
|
return updateData;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return the updated data
|
if (coreSource === "Compendium.sw5e.forcepowers") {
|
||||||
return updateData;
|
const compendium = game.packs.get("sw5e.forcepowers");
|
||||||
|
|
||||||
|
const corePower = await compendium.getEntity(core_id)
|
||||||
|
const coreData = corePower.data.data;
|
||||||
|
|
||||||
|
// copy Core Power Data over original Power
|
||||||
|
updateData["data"] = coreData;
|
||||||
|
updateData["flags"] = {"sw5e": {"dataVersion": "1.2.4"}};
|
||||||
|
|
||||||
|
// set flag to check to see if migration has been done so we don't do it again.
|
||||||
|
// item.setFlag("sw5e", "dataVersion", "1.2.4");
|
||||||
|
|
||||||
|
return updateData;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue