UNPKG

@minecraft/creator-tools

Version:

Minecraft Creator Tools command line and libraries.

175 lines (173 loc) 8.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const AttachableResourceDefinition_1 = require("../minecraft/AttachableResourceDefinition"); const BlockTypeDefinition_1 = require("../minecraft/BlockTypeDefinition"); const EntityTypeDefinition_1 = require("../minecraft/EntityTypeDefinition"); const EntityTypeResourceDefinition_1 = require("../minecraft/EntityTypeResourceDefinition"); const ItemTextureCatalogDefinition_1 = require("../minecraft/ItemTextureCatalogDefinition"); const JsonUIResourceDefinition_1 = require("../minecraft/JsonUIResourceDefinition"); const MusicDefinitionCatalogDefinition_1 = require("../minecraft/MusicDefinitionCatalogDefinition"); const ParticleEffectResourceDefinition_1 = require("../minecraft/ParticleEffectResourceDefinition"); const SoundCatalogDefinition_1 = require("../minecraft/SoundCatalogDefinition"); const SoundDefinitionCatalogDefinition_1 = require("../minecraft/SoundDefinitionCatalogDefinition"); const TerrainTextureCatalogDefinition_1 = require("../minecraft/TerrainTextureCatalogDefinition"); const IProjectItemData_1 = require("./IProjectItemData"); class ProjectItemRelations { static async calculate(project) { const items = project.getItemsCopy(); // clear all existing relations for (const item of items) { item.childItems = undefined; item.parentItems = undefined; } for (const item of items) { if (item.itemType === IProjectItemData_1.ProjectItemType.entityTypeBehavior) { await item.ensureStorage(); if (item.file) { const entityTypeBehavior = await EntityTypeDefinition_1.default.ensureOnFile(item.file); if (entityTypeBehavior) { await entityTypeBehavior.addChildItems(project, item); } } } else if (item.itemType === IProjectItemData_1.ProjectItemType.blockTypeBehavior) { await item.ensureStorage(); if (item.file) { const blockTypeBehavior = await BlockTypeDefinition_1.default.ensureOnFile(item.file); if (blockTypeBehavior) { await blockTypeBehavior.addChildItems(project, item); } } } else if (item.itemType === IProjectItemData_1.ProjectItemType.entityTypeResource) { await item.ensureStorage(); if (item.file) { const entityTypeResource = await EntityTypeResourceDefinition_1.default.ensureOnFile(item.file); if (entityTypeResource) { await entityTypeResource.addChildItems(project, item); } } } else if (item.itemType === IProjectItemData_1.ProjectItemType.particleJson) { await item.ensureStorage(); if (item.file) { const particleResource = await ParticleEffectResourceDefinition_1.default.ensureOnFile(item.file); if (particleResource) { await particleResource.addChildItems(project, item); } } } else if (item.itemType === IProjectItemData_1.ProjectItemType.uiJson) { await item.ensureStorage(); if (item.file) { const jsonUi = await JsonUIResourceDefinition_1.default.ensureOnFile(item.file); if (jsonUi) { await jsonUi.addChildItems(project, item); } } } else if (item.itemType === IProjectItemData_1.ProjectItemType.attachableResourceJson) { await item.ensureStorage(); if (item.file) { const attachableResource = await AttachableResourceDefinition_1.default.ensureOnFile(item.file); if (attachableResource) { await attachableResource.addChildItems(project, item); } } } else if (item.itemType === IProjectItemData_1.ProjectItemType.itemTextureJson) { await item.ensureStorage(); if (item.file) { const itemTextures = await ItemTextureCatalogDefinition_1.default.ensureOnFile(item.file); if (itemTextures) { await itemTextures.addChildItems(project, item); } } } else if (item.itemType === IProjectItemData_1.ProjectItemType.terrainTextureCatalogResourceJson) { await item.ensureStorage(); if (item.file) { const terrainTexture = await TerrainTextureCatalogDefinition_1.default.ensureOnFile(item.file); if (terrainTexture) { await terrainTexture.addChildItems(project, item); } } } else if (item.itemType === IProjectItemData_1.ProjectItemType.soundDefinitionCatalog) { await item.ensureStorage(); if (item.file) { const soundDefCat = await SoundDefinitionCatalogDefinition_1.default.ensureOnFile(item.file); if (soundDefCat) { await soundDefCat.addChildItems(project, item); } } } else if (item.itemType === IProjectItemData_1.ProjectItemType.musicDefinitionJson) { await item.ensureStorage(); if (item.file) { const musicDefCat = await MusicDefinitionCatalogDefinition_1.default.ensureOnFile(item.file); if (musicDefCat) { await musicDefCat.addChildItems(project, item); } } } else if (item.itemType === IProjectItemData_1.ProjectItemType.soundCatalog) { await item.ensureStorage(); if (item.file) { const soundCat = await SoundCatalogDefinition_1.default.ensureOnFile(item.file); if (soundCat) { await soundCat.addChildItems(project, item); } } } } } static async deleteLinksFromParents(item) { if (!item.parentItems || item.parentItems.length === 0) { return; } for (const rel of item.parentItems) { if (rel.parentItem && rel.childItem) { if (rel.parentItem.itemType === IProjectItemData_1.ProjectItemType.entityTypeResource) { await item.ensureStorage(); if (rel.parentItem.file) { const entityTypeResource = await EntityTypeResourceDefinition_1.default.ensureOnFile(rel.parentItem.file); if (entityTypeResource) { await entityTypeResource.deleteLinkToChild(rel); } } } else if (rel.parentItem.itemType === IProjectItemData_1.ProjectItemType.particleJson) { await item.ensureStorage(); if (rel.parentItem.file) { const particleResource = await ParticleEffectResourceDefinition_1.default.ensureOnFile(rel.parentItem.file); if (particleResource) { await particleResource.deleteLinkToChild(rel); } } } else if (rel.parentItem.itemType === IProjectItemData_1.ProjectItemType.attachableResourceJson) { await item.ensureStorage(); if (rel.parentItem.file) { const attachableResource = await AttachableResourceDefinition_1.default.ensureOnFile(rel.parentItem.file); if (attachableResource) { await attachableResource.deleteLinkToChild(rel); } } } else if (rel.parentItem.itemType === IProjectItemData_1.ProjectItemType.soundCatalog) { await item.ensureStorage(); if (rel.parentItem.file) { const soundCat = await SoundDefinitionCatalogDefinition_1.default.ensureOnFile(rel.parentItem.file); if (soundCat) { await soundCat.deleteLinkToChild(rel.childItem); } } } } } await this.calculate(item.project); } } exports.default = ProjectItemRelations; //# sourceMappingURL=../maps/app/ProjectItemRelations.js.map