Inventory skeleton refactor
This commit is contained in:
3
dist/classes/Agent.js
vendored
3
dist/classes/Agent.js
vendored
@@ -153,7 +153,8 @@ class Agent {
|
||||
}
|
||||
});
|
||||
}
|
||||
this.inventory.main.skeleton.forEach((folder) => {
|
||||
Object.keys(this.inventory.main.skeleton).forEach((uuid) => {
|
||||
const folder = this.inventory.main.skeleton[uuid];
|
||||
if (folder.typeDefault === AssetType_1.AssetType.CurrentOutfitFolder) {
|
||||
const folderID = folder.folderID;
|
||||
const requestFolder = {
|
||||
|
||||
2
dist/classes/Agent.js.map
vendored
2
dist/classes/Agent.js.map
vendored
File diff suppressed because one or more lines are too long
2
dist/classes/ClientCommands.d.ts
vendored
2
dist/classes/ClientCommands.d.ts
vendored
@@ -9,6 +9,7 @@ import { GridCommands } from './commands/GridCommands';
|
||||
import { CommunicationsCommands } from './commands/CommunicationsCommands';
|
||||
import { AgentCommands } from './commands/AgentCommands';
|
||||
import { GroupCommands } from './commands/GroupCommands';
|
||||
import { InventoryCommands } from './commands/InventoryCommands';
|
||||
export declare class ClientCommands {
|
||||
network: NetworkCommands;
|
||||
asset: AssetCommands;
|
||||
@@ -18,5 +19,6 @@ export declare class ClientCommands {
|
||||
comms: CommunicationsCommands;
|
||||
agent: AgentCommands;
|
||||
group: GroupCommands;
|
||||
inventory: InventoryCommands;
|
||||
constructor(region: Region, agent: Agent, bot: Bot);
|
||||
}
|
||||
|
||||
2
dist/classes/ClientCommands.js
vendored
2
dist/classes/ClientCommands.js
vendored
@@ -8,6 +8,7 @@ const GridCommands_1 = require("./commands/GridCommands");
|
||||
const CommunicationsCommands_1 = require("./commands/CommunicationsCommands");
|
||||
const AgentCommands_1 = require("./commands/AgentCommands");
|
||||
const GroupCommands_1 = require("./commands/GroupCommands");
|
||||
const InventoryCommands_1 = require("./commands/InventoryCommands");
|
||||
class ClientCommands {
|
||||
constructor(region, agent, bot) {
|
||||
this.network = new NetworkCommands_1.NetworkCommands(region, agent, bot);
|
||||
@@ -18,6 +19,7 @@ class ClientCommands {
|
||||
this.comms = new CommunicationsCommands_1.CommunicationsCommands(region, agent, bot);
|
||||
this.agent = new AgentCommands_1.AgentCommands(region, agent, bot);
|
||||
this.group = new GroupCommands_1.GroupCommands(region, agent, bot);
|
||||
this.inventory = new InventoryCommands_1.InventoryCommands(region, agent, bot);
|
||||
}
|
||||
}
|
||||
exports.ClientCommands = ClientCommands;
|
||||
|
||||
2
dist/classes/ClientCommands.js.map
vendored
2
dist/classes/ClientCommands.js.map
vendored
@@ -1 +1 @@
|
||||
{"version":3,"file":"ClientCommands.js","sourceRoot":"","sources":["../../lib/classes/ClientCommands.ts"],"names":[],"mappings":";;AAGA,gEAA2D;AAC3D,4DAAuD;AACvD,kEAA6D;AAC7D,8DAAyD;AACzD,0DAAqD;AACrD,8EAAyE;AACzE,4DAAuD;AACvD,4DAAuD;AAEvD;IAWI,YAAY,MAAc,EAAE,KAAY,EAAE,GAAQ;QAE9C,IAAI,CAAC,OAAO,GAAG,IAAI,iCAAe,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK,GAAG,IAAI,6BAAa,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,mCAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,GAAG,IAAI,+BAAc,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,GAAG,IAAI,2BAAY,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,GAAG,IAAI,+CAAsB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK,GAAG,IAAI,6BAAa,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,GAAG,IAAI,6BAAa,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACvD,CAAC;CACJ;AAtBD,wCAsBC"}
|
||||
{"version":3,"file":"ClientCommands.js","sourceRoot":"","sources":["../../lib/classes/ClientCommands.ts"],"names":[],"mappings":";;AAGA,gEAA2D;AAC3D,4DAAuD;AACvD,kEAA6D;AAC7D,8DAAyD;AACzD,0DAAqD;AACrD,8EAAyE;AACzE,4DAAuD;AACvD,4DAAuD;AACvD,oEAA+D;AAE/D;IAYI,YAAY,MAAc,EAAE,KAAY,EAAE,GAAQ;QAE9C,IAAI,CAAC,OAAO,GAAG,IAAI,iCAAe,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK,GAAG,IAAI,6BAAa,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,mCAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,GAAG,IAAI,+BAAc,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,GAAG,IAAI,2BAAY,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,GAAG,IAAI,+CAAsB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK,GAAG,IAAI,6BAAa,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,GAAG,IAAI,6BAAa,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC,SAAS,GAAG,IAAI,qCAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAC/D,CAAC;CACJ;AAxBD,wCAwBC"}
|
||||
19
dist/classes/Inventory.d.ts
vendored
19
dist/classes/Inventory.d.ts
vendored
@@ -1,29 +1,24 @@
|
||||
import { UUID } from './UUID';
|
||||
import { ClientEvents } from './ClientEvents';
|
||||
import { AssetType } from '../enums/AssetType';
|
||||
import { InventoryFolder } from './InventoryFolder';
|
||||
export declare class Inventory {
|
||||
main: {
|
||||
skeleton: {
|
||||
typeDefault: AssetType;
|
||||
version: number;
|
||||
name: string;
|
||||
folderID: UUID;
|
||||
parentID: UUID;
|
||||
}[];
|
||||
[key: string]: InventoryFolder;
|
||||
};
|
||||
root?: UUID;
|
||||
};
|
||||
library: {
|
||||
owner?: UUID;
|
||||
skeleton: {
|
||||
typeDefault: number;
|
||||
version: number;
|
||||
name: string;
|
||||
folderID: UUID;
|
||||
parentID: UUID;
|
||||
}[];
|
||||
[key: string]: InventoryFolder;
|
||||
};
|
||||
root?: UUID;
|
||||
};
|
||||
private clientEvents;
|
||||
constructor(clientEvents: ClientEvents);
|
||||
getRootFolderLibrary(): InventoryFolder;
|
||||
getRootFolderMain(): InventoryFolder;
|
||||
findFolderForType(type: AssetType): UUID;
|
||||
}
|
||||
|
||||
32
dist/classes/Inventory.js
vendored
32
dist/classes/Inventory.js
vendored
@@ -2,16 +2,41 @@
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const UUID_1 = require("./UUID");
|
||||
const AssetType_1 = require("../enums/AssetType");
|
||||
const InventoryFolder_1 = require("./InventoryFolder");
|
||||
class Inventory {
|
||||
constructor(clientEvents) {
|
||||
this.main = {
|
||||
skeleton: []
|
||||
skeleton: {}
|
||||
};
|
||||
this.library = {
|
||||
skeleton: []
|
||||
skeleton: {}
|
||||
};
|
||||
this.clientEvents = clientEvents;
|
||||
}
|
||||
getRootFolderLibrary() {
|
||||
if (this.library.root === undefined) {
|
||||
return new InventoryFolder_1.InventoryFolder(this.library);
|
||||
}
|
||||
const uuidStr = this.library.root.toString();
|
||||
if (this.library.skeleton[uuidStr]) {
|
||||
return this.library.skeleton[uuidStr];
|
||||
}
|
||||
else {
|
||||
return new InventoryFolder_1.InventoryFolder(this.library);
|
||||
}
|
||||
}
|
||||
getRootFolderMain() {
|
||||
if (this.main.root === undefined) {
|
||||
return new InventoryFolder_1.InventoryFolder(this.main);
|
||||
}
|
||||
const uuidStr = this.main.root.toString();
|
||||
if (this.main.skeleton[uuidStr]) {
|
||||
return this.main.skeleton[uuidStr];
|
||||
}
|
||||
else {
|
||||
return new InventoryFolder_1.InventoryFolder(this.main);
|
||||
}
|
||||
}
|
||||
findFolderForType(type) {
|
||||
if (this.main.root === undefined) {
|
||||
return UUID_1.UUID.zero();
|
||||
@@ -20,7 +45,8 @@ class Inventory {
|
||||
return this.main.root;
|
||||
}
|
||||
let found = UUID_1.UUID.zero();
|
||||
this.main.skeleton.forEach((folder) => {
|
||||
Object.keys(this.main.skeleton).forEach((uuid) => {
|
||||
const folder = this.main.skeleton[uuid];
|
||||
if (folder.typeDefault === type) {
|
||||
found = folder.folderID;
|
||||
}
|
||||
|
||||
2
dist/classes/Inventory.js.map
vendored
2
dist/classes/Inventory.js.map
vendored
@@ -1 +1 @@
|
||||
{"version":3,"file":"Inventory.js","sourceRoot":"","sources":["../../lib/classes/Inventory.ts"],"names":[],"mappings":";;AAAA,iCAA4B;AAE5B,kDAA6C;AAE7C;IA6BI,YAAY,YAA0B;QA3BtC,SAAI,GASA;YACA,QAAQ,EAAE,EAAE;SACf,CAAC;QACF,YAAO,GAUH;YACA,QAAQ,EAAE,EAAE;SACf,CAAC;QAKE,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,CAAC;IACD,iBAAiB,CAAC,IAAe;QAE7B,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CACjC,CAAC;YACG,MAAM,CAAC,WAAI,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC;QACD,EAAE,CAAC,CAAC,IAAI,KAAK,qBAAS,CAAC,MAAM,CAAC,CAC9B,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1B,CAAC;QACD,IAAI,KAAK,GAAG,WAAI,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAElC,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,CAChC,CAAC;gBACG,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC5B,CAAC;QACL,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC;IACjB,CAAC;CACJ;AArDD,8BAqDC"}
|
||||
{"version":3,"file":"Inventory.js","sourceRoot":"","sources":["../../lib/classes/Inventory.ts"],"names":[],"mappings":";;AAAA,iCAA4B;AAE5B,kDAA6C;AAC7C,uDAAkD;AAGlD;IAiBI,YAAY,YAA0B;QAftC,SAAI,GAGA;YACA,QAAQ,EAAE,EAAE;SACf,CAAC;QACF,YAAO,GAIH;YACA,QAAQ,EAAE,EAAE;SACf,CAAC;QAKE,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,CAAC;IACD,oBAAoB;QAEhB,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CACpC,CAAC;YACG,MAAM,CAAC,IAAI,iCAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7C,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CACnC,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,CACJ,CAAC;YACG,MAAM,CAAC,IAAI,iCAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC;IACL,CAAC;IACD,iBAAiB;QAEb,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CACjC,CAAC;YACG,MAAM,CAAC,IAAI,iCAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC1C,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAChC,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,CACJ,CAAC;YACG,MAAM,CAAC,IAAI,iCAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;IACL,CAAC;IACD,iBAAiB,CAAC,IAAe;QAE7B,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CACjC,CAAC;YACG,MAAM,CAAC,WAAI,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC;QACD,EAAE,CAAC,CAAC,IAAI,KAAK,qBAAS,CAAC,MAAM,CAAC,CAC9B,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1B,CAAC;QACD,IAAI,KAAK,GAAG,WAAI,CAAC,IAAI,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAE7C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACxC,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,CAChC,CAAC;gBACG,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC5B,CAAC;QACL,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC;IACjB,CAAC;CACJ;AA1ED,8BA0EC"}
|
||||
19
dist/classes/InventoryFolder.d.ts
vendored
Normal file
19
dist/classes/InventoryFolder.d.ts
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
import { UUID } from './UUID';
|
||||
import { AssetType } from '../enums/AssetType';
|
||||
import { InventoryItem } from './InventoryItem';
|
||||
export declare class InventoryFolder {
|
||||
typeDefault: AssetType;
|
||||
version: number;
|
||||
name: string;
|
||||
folderID: UUID;
|
||||
parentID: UUID;
|
||||
items: InventoryItem[];
|
||||
private inventoryBase;
|
||||
constructor(invBase: {
|
||||
skeleton: {
|
||||
[key: string]: InventoryFolder;
|
||||
};
|
||||
root?: UUID;
|
||||
});
|
||||
getChildFolders(): InventoryFolder[];
|
||||
}
|
||||
21
dist/classes/InventoryFolder.js
vendored
Normal file
21
dist/classes/InventoryFolder.js
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
class InventoryFolder {
|
||||
constructor(invBase) {
|
||||
this.items = [];
|
||||
this.inventoryBase = invBase;
|
||||
}
|
||||
getChildFolders() {
|
||||
const children = [];
|
||||
const ofi = this.folderID.toString();
|
||||
Object.keys(this.inventoryBase.skeleton).forEach((uuid) => {
|
||||
const folder = this.inventoryBase.skeleton[uuid];
|
||||
if (folder.parentID.toString() === ofi) {
|
||||
children.push(folder);
|
||||
}
|
||||
});
|
||||
return children;
|
||||
}
|
||||
}
|
||||
exports.InventoryFolder = InventoryFolder;
|
||||
//# sourceMappingURL=InventoryFolder.js.map
|
||||
1
dist/classes/InventoryFolder.js.map
vendored
Normal file
1
dist/classes/InventoryFolder.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"InventoryFolder.js","sourceRoot":"","sources":["../../lib/classes/InventoryFolder.ts"],"names":[],"mappings":";;AAKA;IAcI,YAAY,OAGX;QAVD,UAAK,GAAoB,EAAE,CAAC;QAYxB,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;IACjC,CAAC;IAED,eAAe;QAEX,MAAM,QAAQ,GAAsB,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAEtD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjD,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,CACvC,CAAC;gBACG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC;QACL,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,CAAC;IACpB,CAAC;CACJ;AApCD,0CAoCC"}
|
||||
2
dist/classes/InventoryItem.d.ts
vendored
Normal file
2
dist/classes/InventoryItem.d.ts
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
export declare class InventoryItem {
|
||||
}
|
||||
6
dist/classes/InventoryItem.js
vendored
Normal file
6
dist/classes/InventoryItem.js
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
class InventoryItem {
|
||||
}
|
||||
exports.InventoryItem = InventoryItem;
|
||||
//# sourceMappingURL=InventoryItem.js.map
|
||||
1
dist/classes/InventoryItem.js.map
vendored
Normal file
1
dist/classes/InventoryItem.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"InventoryItem.js","sourceRoot":"","sources":["../../lib/classes/InventoryItem.ts"],"names":[],"mappings":";;AAAA;CAGC;AAHD,sCAGC"}
|
||||
57
dist/classes/LoginResponse.js
vendored
57
dist/classes/LoginResponse.js
vendored
@@ -6,6 +6,7 @@ const Region_1 = require("./Region");
|
||||
const LoginFlags_1 = require("../enums/LoginFlags");
|
||||
const Vector3_1 = require("./Vector3");
|
||||
const Long = require("long");
|
||||
const InventoryFolder_1 = require("./InventoryFolder");
|
||||
class LoginResponse {
|
||||
constructor(json, clientEvents, options) {
|
||||
this.events = {
|
||||
@@ -23,37 +24,53 @@ class LoginResponse {
|
||||
switch (key) {
|
||||
case 'inventory-skeleton':
|
||||
val.forEach((item) => {
|
||||
const skeletonItem = {
|
||||
typeDefault: parseInt(item['type_default'], 10),
|
||||
version: parseInt(item['version'], 10),
|
||||
name: String(item['name']),
|
||||
folderID: new UUID_1.UUID(item['folder_id']),
|
||||
parentID: new UUID_1.UUID(item['parent_id'])
|
||||
};
|
||||
this.agent.inventory.main.skeleton.push(skeletonItem);
|
||||
const folder = new InventoryFolder_1.InventoryFolder(this.agent.inventory.main);
|
||||
folder.typeDefault = parseInt(item['type_default'], 10);
|
||||
folder.version = parseInt(item['version'], 10);
|
||||
folder.name = String(item['name']);
|
||||
folder.folderID = new UUID_1.UUID(item['folder_id']);
|
||||
folder.parentID = new UUID_1.UUID(item['parent_id']);
|
||||
this.agent.inventory.main.skeleton[folder.folderID.toString()] = folder;
|
||||
});
|
||||
break;
|
||||
case 'inventory-skel-lib':
|
||||
val.forEach((item) => {
|
||||
const skeletonItem = {
|
||||
typeDefault: parseInt(item['type_default'], 10),
|
||||
version: parseInt(item['version'], 10),
|
||||
name: String(item['name']),
|
||||
folderID: new UUID_1.UUID(item['folder_id']),
|
||||
parentID: new UUID_1.UUID(item['parent_id'])
|
||||
};
|
||||
this.agent.inventory.library.skeleton.push(skeletonItem);
|
||||
const folder = new InventoryFolder_1.InventoryFolder(this.agent.inventory.library);
|
||||
folder.typeDefault = parseInt(item['type_default'], 10);
|
||||
folder.version = parseInt(item['version'], 10);
|
||||
folder.name = String(item['name']);
|
||||
folder.folderID = new UUID_1.UUID(item['folder_id']);
|
||||
folder.parentID = new UUID_1.UUID(item['parent_id']);
|
||||
this.agent.inventory.library.skeleton[folder.folderID.toString()] = folder;
|
||||
});
|
||||
break;
|
||||
case 'inventory-root':
|
||||
this.agent.inventory.main.root = new UUID_1.UUID(val[0]['folder_id']);
|
||||
break;
|
||||
{
|
||||
this.agent.inventory.main.root = new UUID_1.UUID(val[0]['folder_id']);
|
||||
const folder = new InventoryFolder_1.InventoryFolder(this.agent.inventory.main);
|
||||
folder.typeDefault = 0;
|
||||
folder.version = 0;
|
||||
folder.name = 'root';
|
||||
folder.folderID = new UUID_1.UUID(val[0]['folder_id']);
|
||||
folder.parentID = UUID_1.UUID.zero();
|
||||
this.agent.inventory.main.skeleton[folder.folderID.toString()] = folder;
|
||||
break;
|
||||
}
|
||||
case 'inventory-lib-owner':
|
||||
this.agent.inventory.library.owner = new UUID_1.UUID(val[0]['agent_id']);
|
||||
break;
|
||||
case 'inventory-lib-root':
|
||||
this.agent.inventory.library.root = new UUID_1.UUID(val[0]['folder_id']);
|
||||
break;
|
||||
{
|
||||
this.agent.inventory.library.root = new UUID_1.UUID(val[0]['folder_id']);
|
||||
const folder = new InventoryFolder_1.InventoryFolder(this.agent.inventory.library);
|
||||
folder.typeDefault = 0;
|
||||
folder.version = 0;
|
||||
folder.name = 'root';
|
||||
folder.folderID = new UUID_1.UUID(val[0]['folder_id']);
|
||||
folder.parentID = UUID_1.UUID.zero();
|
||||
this.agent.inventory.library.skeleton[folder.folderID.toString()] = folder;
|
||||
break;
|
||||
}
|
||||
case 'agent_access_max':
|
||||
this.agent.accessMax = String(val);
|
||||
break;
|
||||
|
||||
2
dist/classes/LoginResponse.js.map
vendored
2
dist/classes/LoginResponse.js.map
vendored
File diff suppressed because one or more lines are too long
6
dist/classes/commands/InventoryCommands.d.ts
vendored
Normal file
6
dist/classes/commands/InventoryCommands.d.ts
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
import { CommandsBase } from './CommandsBase';
|
||||
import { InventoryFolder } from '../InventoryFolder';
|
||||
export declare class InventoryCommands extends CommandsBase {
|
||||
getInventoryRoot(): InventoryFolder;
|
||||
getLibraryRoot(): InventoryFolder;
|
||||
}
|
||||
13
dist/classes/commands/InventoryCommands.js
vendored
Normal file
13
dist/classes/commands/InventoryCommands.js
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const CommandsBase_1 = require("./CommandsBase");
|
||||
class InventoryCommands extends CommandsBase_1.CommandsBase {
|
||||
getInventoryRoot() {
|
||||
return this.agent.inventory.getRootFolderMain();
|
||||
}
|
||||
getLibraryRoot() {
|
||||
return this.agent.inventory.getRootFolderLibrary();
|
||||
}
|
||||
}
|
||||
exports.InventoryCommands = InventoryCommands;
|
||||
//# sourceMappingURL=InventoryCommands.js.map
|
||||
1
dist/classes/commands/InventoryCommands.js.map
vendored
Normal file
1
dist/classes/commands/InventoryCommands.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"InventoryCommands.js","sourceRoot":"","sources":["../../../lib/classes/commands/InventoryCommands.ts"],"names":[],"mappings":";;AAAA,iDAA4C;AAG5C,uBAA+B,SAAQ,2BAAY;IAE/C,gBAAgB;QAEZ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;IACpD,CAAC;IACD,cAAc;QAEV,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,oBAAoB,EAAE,CAAC;IACvD,CAAC;CACJ;AAVD,8CAUC"}
|
||||
@@ -194,7 +194,7 @@ function connect()
|
||||
// Retrieve group roles
|
||||
|
||||
const userToInvite = new nmv.UUID("d1cd5b71-6209-4595-9bf0-771bf689ce00");
|
||||
const groupID = new nmv.UUID("c6424e05-6e2c-fb03-220b-ca7904d11e04");
|
||||
const groupID = new nmv.UUID("c6424e05-6e2c-fb03-220b-ca7904d11e04");
|
||||
|
||||
bot.clientCommands.group.getGroupRoles(groupID).then((roles) =>
|
||||
{
|
||||
@@ -220,7 +220,7 @@ function connect()
|
||||
}
|
||||
else
|
||||
{
|
||||
bot.clientCommands.group.sendGroupInvite(groupID, userToInvite , role.RoleID);
|
||||
bot.clientCommands.group.sendGroupInvite(groupID, userToInvite, role.RoleID);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -229,16 +229,25 @@ function connect()
|
||||
|
||||
setTimeout(() => // TODO: This 5 second delay is a fudge. We need to wait for the eventqueue to start properly
|
||||
{
|
||||
bot.clientCommands.teleport.teleportTo('Izanagi', new nmv.Vector3([128, 128, 20]), new nmv.Vector3([0, 1.0, 0])).then(() =>
|
||||
bot.clientCommands.teleport.teleportTo('Izanagi', new nmv.Vector3([128, 128, 20]), new nmv.Vector3([0,
|
||||
1.0,
|
||||
0])).then(() =>
|
||||
{
|
||||
console.log("Teleport completed");
|
||||
}).catch((err) => {
|
||||
}).catch((err) =>
|
||||
{
|
||||
console.error(err);
|
||||
});
|
||||
}, 5000);
|
||||
|
||||
bot.clientCommands.comms.sendFriendRequest(master, 'Be friends with me?');
|
||||
|
||||
const folders = bot.clientCommands.inventory.getInventoryRoot().getChildFolders();
|
||||
folders.forEach((folder) =>
|
||||
{
|
||||
console.log('Top level folder: ' + folder.name);
|
||||
});
|
||||
|
||||
// When it's time to go home, call bot.close();
|
||||
}).catch((error) =>
|
||||
{
|
||||
|
||||
@@ -242,8 +242,9 @@ export class Agent
|
||||
});
|
||||
}
|
||||
|
||||
this.inventory.main.skeleton.forEach((folder) =>
|
||||
Object.keys(this.inventory.main.skeleton).forEach((uuid) =>
|
||||
{
|
||||
const folder = this.inventory.main.skeleton[uuid];
|
||||
if (folder.typeDefault === AssetType.CurrentOutfitFolder)
|
||||
{
|
||||
const folderID = folder.folderID;
|
||||
|
||||
@@ -9,6 +9,7 @@ import {GridCommands} from './commands/GridCommands';
|
||||
import {CommunicationsCommands} from './commands/CommunicationsCommands';
|
||||
import {AgentCommands} from './commands/AgentCommands';
|
||||
import {GroupCommands} from './commands/GroupCommands';
|
||||
import {InventoryCommands} from './commands/InventoryCommands';
|
||||
|
||||
export class ClientCommands
|
||||
{
|
||||
@@ -20,6 +21,7 @@ export class ClientCommands
|
||||
public comms: CommunicationsCommands;
|
||||
public agent: AgentCommands;
|
||||
public group: GroupCommands;
|
||||
public inventory: InventoryCommands;
|
||||
|
||||
constructor(region: Region, agent: Agent, bot: Bot)
|
||||
{
|
||||
@@ -31,5 +33,6 @@ export class ClientCommands
|
||||
this.comms = new CommunicationsCommands(region, agent, bot);
|
||||
this.agent = new AgentCommands(region, agent, bot);
|
||||
this.group = new GroupCommands(region, agent, bot);
|
||||
this.inventory = new InventoryCommands(region, agent, bot);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,33 +1,23 @@
|
||||
import {UUID} from './UUID';
|
||||
import {ClientEvents} from './ClientEvents';
|
||||
import {AssetType} from '../enums/AssetType';
|
||||
import {InventoryFolder} from './InventoryFolder';
|
||||
import uuid = require('uuid');
|
||||
|
||||
export class Inventory
|
||||
{
|
||||
main: {
|
||||
skeleton: {
|
||||
typeDefault: AssetType,
|
||||
version: number,
|
||||
name: string,
|
||||
folderID: UUID,
|
||||
parentID: UUID
|
||||
}[],
|
||||
skeleton: {[key: string]: InventoryFolder},
|
||||
root?: UUID
|
||||
} = {
|
||||
skeleton: []
|
||||
skeleton: {}
|
||||
};
|
||||
library: {
|
||||
owner?: UUID,
|
||||
skeleton: {
|
||||
typeDefault: number,
|
||||
version: number,
|
||||
name: string,
|
||||
folderID: UUID,
|
||||
parentID: UUID
|
||||
}[],
|
||||
skeleton: {[key: string]: InventoryFolder},
|
||||
root?: UUID
|
||||
} = {
|
||||
skeleton: []
|
||||
skeleton: {}
|
||||
};
|
||||
private clientEvents: ClientEvents;
|
||||
|
||||
@@ -35,6 +25,38 @@ export class Inventory
|
||||
{
|
||||
this.clientEvents = clientEvents;
|
||||
}
|
||||
getRootFolderLibrary(): InventoryFolder
|
||||
{
|
||||
if (this.library.root === undefined)
|
||||
{
|
||||
return new InventoryFolder(this.library);
|
||||
}
|
||||
const uuidStr = this.library.root.toString();
|
||||
if (this.library.skeleton[uuidStr])
|
||||
{
|
||||
return this.library.skeleton[uuidStr];
|
||||
}
|
||||
else
|
||||
{
|
||||
return new InventoryFolder(this.library);
|
||||
}
|
||||
}
|
||||
getRootFolderMain(): InventoryFolder
|
||||
{
|
||||
if (this.main.root === undefined)
|
||||
{
|
||||
return new InventoryFolder(this.main);
|
||||
}
|
||||
const uuidStr = this.main.root.toString();
|
||||
if (this.main.skeleton[uuidStr])
|
||||
{
|
||||
return this.main.skeleton[uuidStr];
|
||||
}
|
||||
else
|
||||
{
|
||||
return new InventoryFolder(this.main);
|
||||
}
|
||||
}
|
||||
findFolderForType(type: AssetType): UUID
|
||||
{
|
||||
if (this.main.root === undefined)
|
||||
@@ -46,8 +68,9 @@ export class Inventory
|
||||
return this.main.root;
|
||||
}
|
||||
let found = UUID.zero();
|
||||
this.main.skeleton.forEach((folder) =>
|
||||
Object.keys(this.main.skeleton).forEach((uuid) =>
|
||||
{
|
||||
const folder = this.main.skeleton[uuid];
|
||||
if (folder.typeDefault === type)
|
||||
{
|
||||
found = folder.folderID;
|
||||
|
||||
42
lib/classes/InventoryFolder.ts
Normal file
42
lib/classes/InventoryFolder.ts
Normal file
@@ -0,0 +1,42 @@
|
||||
import {UUID} from './UUID';
|
||||
import {AssetType} from '../enums/AssetType';
|
||||
import {InventoryItem} from './InventoryItem';
|
||||
import {Inventory} from './Inventory';
|
||||
|
||||
export class InventoryFolder
|
||||
{
|
||||
typeDefault: AssetType;
|
||||
version: number;
|
||||
name: string;
|
||||
folderID: UUID;
|
||||
parentID: UUID;
|
||||
items: InventoryItem[] = [];
|
||||
|
||||
private inventoryBase: {
|
||||
skeleton: {[key: string]: InventoryFolder},
|
||||
root?: UUID
|
||||
};
|
||||
|
||||
constructor(invBase: {
|
||||
skeleton: {[key: string]: InventoryFolder},
|
||||
root?: UUID
|
||||
})
|
||||
{
|
||||
this.inventoryBase = invBase;
|
||||
}
|
||||
|
||||
getChildFolders(): InventoryFolder[]
|
||||
{
|
||||
const children: InventoryFolder[] = [];
|
||||
const ofi = this.folderID.toString();
|
||||
Object.keys(this.inventoryBase.skeleton).forEach((uuid) =>
|
||||
{
|
||||
const folder = this.inventoryBase.skeleton[uuid];
|
||||
if (folder.parentID.toString() === ofi)
|
||||
{
|
||||
children.push(folder);
|
||||
}
|
||||
});
|
||||
return children;
|
||||
}
|
||||
}
|
||||
4
lib/classes/InventoryItem.ts
Normal file
4
lib/classes/InventoryItem.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
export class InventoryItem
|
||||
{
|
||||
|
||||
}
|
||||
@@ -6,6 +6,7 @@ import {Vector3} from './Vector3';
|
||||
import Long = require('long');
|
||||
import {ClientEvents} from './ClientEvents';
|
||||
import {BotOptionFlags} from '../enums/BotOptionFlags';
|
||||
import {InventoryFolder} from './InventoryFolder';
|
||||
|
||||
export class LoginResponse
|
||||
{
|
||||
@@ -102,50 +103,54 @@ export class LoginResponse
|
||||
case 'inventory-skeleton':
|
||||
val.forEach((item: any) =>
|
||||
{
|
||||
const skeletonItem: {
|
||||
typeDefault: number,
|
||||
version: number,
|
||||
name: string,
|
||||
folderID: UUID,
|
||||
parentID: UUID
|
||||
} = {
|
||||
typeDefault: parseInt(item['type_default'], 10),
|
||||
version: parseInt(item['version'], 10),
|
||||
name: String(item['name']),
|
||||
folderID: new UUID(item['folder_id']),
|
||||
parentID: new UUID(item['parent_id'])
|
||||
};
|
||||
this.agent.inventory.main.skeleton.push(skeletonItem);
|
||||
const folder = new InventoryFolder(this.agent.inventory.main);
|
||||
folder.typeDefault = parseInt(item['type_default'], 10);
|
||||
folder.version = parseInt(item['version'], 10);
|
||||
folder.name = String(item['name']);
|
||||
folder.folderID = new UUID(item['folder_id']);
|
||||
folder.parentID = new UUID(item['parent_id']);
|
||||
this.agent.inventory.main.skeleton[folder.folderID.toString()] = folder;
|
||||
});
|
||||
break;
|
||||
case 'inventory-skel-lib':
|
||||
val.forEach((item: any) =>
|
||||
{
|
||||
const skeletonItem: {
|
||||
typeDefault: number,
|
||||
version: number,
|
||||
name: string,
|
||||
folderID: UUID,
|
||||
parentID: UUID
|
||||
} = {
|
||||
typeDefault: parseInt(item['type_default'], 10),
|
||||
version: parseInt(item['version'], 10),
|
||||
name: String(item['name']),
|
||||
folderID: new UUID(item['folder_id']),
|
||||
parentID: new UUID(item['parent_id'])
|
||||
};
|
||||
this.agent.inventory.library.skeleton.push(skeletonItem);
|
||||
const folder = new InventoryFolder(this.agent.inventory.library);
|
||||
folder.typeDefault = parseInt(item['type_default'], 10);
|
||||
folder.version = parseInt(item['version'], 10);
|
||||
folder.name = String(item['name']);
|
||||
folder.folderID = new UUID(item['folder_id']);
|
||||
folder.parentID = new UUID(item['parent_id']);
|
||||
this.agent.inventory.library.skeleton[folder.folderID.toString()] = folder;
|
||||
});
|
||||
break;
|
||||
case 'inventory-root':
|
||||
{
|
||||
this.agent.inventory.main.root = new UUID(val[0]['folder_id']);
|
||||
const folder = new InventoryFolder(this.agent.inventory.main);
|
||||
folder.typeDefault = 0;
|
||||
folder.version = 0;
|
||||
folder.name = 'root';
|
||||
folder.folderID = new UUID(val[0]['folder_id']);
|
||||
folder.parentID = UUID.zero();
|
||||
this.agent.inventory.main.skeleton[folder.folderID.toString()] = folder;
|
||||
break;
|
||||
}
|
||||
case 'inventory-lib-owner':
|
||||
this.agent.inventory.library.owner = new UUID(val[0]['agent_id']);
|
||||
break;
|
||||
case 'inventory-lib-root':
|
||||
{
|
||||
this.agent.inventory.library.root = new UUID(val[0]['folder_id']);
|
||||
const folder = new InventoryFolder(this.agent.inventory.library);
|
||||
folder.typeDefault = 0;
|
||||
folder.version = 0;
|
||||
folder.name = 'root';
|
||||
folder.folderID = new UUID(val[0]['folder_id']);
|
||||
folder.parentID = UUID.zero();
|
||||
this.agent.inventory.library.skeleton[folder.folderID.toString()] = folder;
|
||||
break;
|
||||
}
|
||||
case 'agent_access_max':
|
||||
this.agent.accessMax = String(val);
|
||||
break;
|
||||
|
||||
14
lib/classes/commands/InventoryCommands.ts
Normal file
14
lib/classes/commands/InventoryCommands.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import {CommandsBase} from './CommandsBase';
|
||||
import {InventoryFolder} from '../InventoryFolder';
|
||||
|
||||
export class InventoryCommands extends CommandsBase
|
||||
{
|
||||
getInventoryRoot(): InventoryFolder
|
||||
{
|
||||
return this.agent.inventory.getRootFolderMain();
|
||||
}
|
||||
getLibraryRoot(): InventoryFolder
|
||||
{
|
||||
return this.agent.inventory.getRootFolderLibrary();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user