Files
node-metaverse/lib/classes/Inventory.ts

85 lines
2.2 KiB
TypeScript
Raw Normal View History

import {UUID} from './UUID';
import {ClientEvents} from './ClientEvents';
import {AssetType} from '../enums/AssetType';
2017-12-19 23:43:00 +00:00
import {InventoryFolder} from './InventoryFolder';
import uuid = require('uuid');
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
};
private clientEvents: ClientEvents;
private agent: Agent;
constructor(clientEvents: ClientEvents, agent: Agent)
{
this.agent = agent;
this.clientEvents = clientEvents;
}
2017-12-19 23:43:00 +00:00
getRootFolderLibrary(): InventoryFolder
{
if (this.library.root === undefined)
{
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
{
return new InventoryFolder(this.library, this.agent);
2017-12-19 23:43:00 +00:00
}
}
getRootFolderMain(): InventoryFolder
{
if (this.main.root === undefined)
{
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
{
return new InventoryFolder(this.main, this.agent);
2017-12-19 23:43:00 +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();
Object.keys(this.main.skeleton).forEach((fUUID) =>
{
const folder = this.main.skeleton[fUUID];
if (folder.typeDefault === type)
{
found = folder.folderID;
}
});
return found;
}
2017-11-24 01:00:56 +00:00
}