2017-11-24 03:32:28 +00:00
|
|
|
import {UUID} from './UUID';
|
2017-11-30 04:11:59 +00:00
|
|
|
import {ClientEvents} from './ClientEvents';
|
2017-12-19 19:59:06 +00:00
|
|
|
import {AssetType} from '../enums/AssetType';
|
2017-12-19 23:43:00 +00:00
|
|
|
import {InventoryFolder} from './InventoryFolder';
|
|
|
|
|
import uuid = require('uuid');
|
2017-12-20 02:00:12 +00:00
|
|
|
import {Agent} from './Agent';
|
2017-11-24 01:00:56 +00:00
|
|
|
|
|
|
|
|
export class Inventory
|
|
|
|
|
{
|
|
|
|
|
main: {
|
2017-12-19 23:43:00 +00:00
|
|
|
skeleton: {[key: string]: InventoryFolder},
|
2017-11-24 01:00:56 +00:00
|
|
|
root?: UUID
|
|
|
|
|
} = {
|
2017-12-19 23:43:00 +00:00
|
|
|
skeleton: {}
|
2017-11-24 01:00:56 +00:00
|
|
|
};
|
|
|
|
|
library: {
|
|
|
|
|
owner?: UUID,
|
2017-12-19 23:43:00 +00:00
|
|
|
skeleton: {[key: string]: InventoryFolder},
|
2017-11-24 01:00:56 +00:00
|
|
|
root?: UUID
|
|
|
|
|
} = {
|
2017-12-19 23:43:00 +00:00
|
|
|
skeleton: {}
|
2017-11-24 01:00:56 +00:00
|
|
|
};
|
2017-11-30 04:11:59 +00:00
|
|
|
private clientEvents: ClientEvents;
|
2017-12-20 02:00:12 +00:00
|
|
|
private agent: Agent;
|
2017-11-30 04:11:59 +00:00
|
|
|
|
2017-12-20 02:00:12 +00:00
|
|
|
constructor(clientEvents: ClientEvents, agent: Agent)
|
2017-11-30 04:11:59 +00:00
|
|
|
{
|
2017-12-20 02:00:12 +00:00
|
|
|
this.agent = agent;
|
2017-11-30 04:11:59 +00:00
|
|
|
this.clientEvents = clientEvents;
|
|
|
|
|
}
|
2017-12-19 23:43:00 +00:00
|
|
|
getRootFolderLibrary(): InventoryFolder
|
|
|
|
|
{
|
|
|
|
|
if (this.library.root === undefined)
|
|
|
|
|
{
|
2017-12-20 02:00:12 +00:00
|
|
|
return new InventoryFolder(this.library, this.agent);
|
2017-12-19 23:43:00 +00:00
|
|
|
}
|
|
|
|
|
const uuidStr = this.library.root.toString();
|
|
|
|
|
if (this.library.skeleton[uuidStr])
|
|
|
|
|
{
|
|
|
|
|
return this.library.skeleton[uuidStr];
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2017-12-20 02:00:12 +00:00
|
|
|
return new InventoryFolder(this.library, this.agent);
|
2017-12-19 23:43:00 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
getRootFolderMain(): InventoryFolder
|
|
|
|
|
{
|
|
|
|
|
if (this.main.root === undefined)
|
|
|
|
|
{
|
2017-12-20 02:00:12 +00:00
|
|
|
return new InventoryFolder(this.main, this.agent);
|
2017-12-19 23:43:00 +00:00
|
|
|
}
|
|
|
|
|
const uuidStr = this.main.root.toString();
|
|
|
|
|
if (this.main.skeleton[uuidStr])
|
|
|
|
|
{
|
|
|
|
|
return this.main.skeleton[uuidStr];
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2017-12-20 02:00:12 +00:00
|
|
|
return new InventoryFolder(this.main, this.agent);
|
2017-12-19 23:43:00 +00:00
|
|
|
}
|
|
|
|
|
}
|
2017-12-19 19:59:06 +00:00
|
|
|
findFolderForType(type: AssetType): UUID
|
|
|
|
|
{
|
|
|
|
|
if (this.main.root === undefined)
|
|
|
|
|
{
|
|
|
|
|
return UUID.zero();
|
|
|
|
|
}
|
|
|
|
|
if (type === AssetType.Folder)
|
|
|
|
|
{
|
|
|
|
|
return this.main.root;
|
|
|
|
|
}
|
|
|
|
|
let found = UUID.zero();
|
2017-12-20 02:00:12 +00:00
|
|
|
Object.keys(this.main.skeleton).forEach((fUUID) =>
|
2017-12-19 19:59:06 +00:00
|
|
|
{
|
2017-12-20 02:00:12 +00:00
|
|
|
const folder = this.main.skeleton[fUUID];
|
2017-12-19 19:59:06 +00:00
|
|
|
if (folder.typeDefault === type)
|
|
|
|
|
{
|
|
|
|
|
found = folder.folderID;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
return found;
|
|
|
|
|
}
|
2017-11-24 01:00:56 +00:00
|
|
|
}
|