65 lines
3.4 KiB
JavaScript
65 lines
3.4 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const CommandsBase_1 = require("./CommandsBase");
|
|
const Region_1 = require("../Region");
|
|
const TeleportEventType_1 = require("../../enums/TeleportEventType");
|
|
const PacketFlags_1 = require("../../enums/PacketFlags");
|
|
const TeleportLureRequest_1 = require("../messages/TeleportLureRequest");
|
|
const TeleportFlags_1 = require("../../enums/TeleportFlags");
|
|
class TeleportCommands extends CommandsBase_1.CommandsBase {
|
|
acceptTeleport(lure) {
|
|
return new Promise((resolve, reject) => {
|
|
const circuit = this.currentRegion.circuit;
|
|
const tlr = new TeleportLureRequest_1.TeleportLureRequestMessage();
|
|
tlr.Info = {
|
|
AgentID: this.agent.agentID,
|
|
SessionID: circuit.sessionID,
|
|
LureID: lure.lureID,
|
|
TeleportFlags: TeleportFlags_1.TeleportFlags.ViaLure
|
|
};
|
|
circuit.sendMessage(tlr, PacketFlags_1.PacketFlags.Reliable);
|
|
if (this.currentRegion.caps.eventQueueClient) {
|
|
if (this.bot.clientEvents === null) {
|
|
reject(new Error('ClientEvents is null'));
|
|
return;
|
|
}
|
|
const subscription = this.bot.clientEvents.onTeleportEvent.subscribe((e) => {
|
|
if (e.eventType === TeleportEventType_1.TeleportEventType.TeleportFailed || e.eventType === TeleportEventType_1.TeleportEventType.TeleportCompleted) {
|
|
subscription.unsubscribe();
|
|
}
|
|
if (e.eventType === TeleportEventType_1.TeleportEventType.TeleportFailed) {
|
|
reject(e);
|
|
}
|
|
else if (e.eventType === TeleportEventType_1.TeleportEventType.TeleportCompleted) {
|
|
if (e.simIP === 'local') {
|
|
resolve(e);
|
|
return;
|
|
}
|
|
if (this.bot.clientEvents === null) {
|
|
reject(new Error('ClientEvents is null'));
|
|
return;
|
|
}
|
|
this.currentRegion.shutdown();
|
|
const region = new Region_1.Region(this.agent, this.bot.clientEvents);
|
|
region.circuit.circuitCode = this.currentRegion.circuit.circuitCode;
|
|
region.circuit.secureSessionID = this.currentRegion.circuit.secureSessionID;
|
|
region.circuit.sessionID = this.currentRegion.circuit.sessionID;
|
|
region.circuit.udpBlacklist = this.currentRegion.circuit.udpBlacklist;
|
|
region.circuit.ipAddress = e.simIP;
|
|
region.circuit.port = e.simPort;
|
|
this.agent.setCurrentRegion(region);
|
|
this.currentRegion = region;
|
|
this.currentRegion.activateCaps(e.seedCapability);
|
|
this.bot.changeRegion(this.currentRegion).then(() => {
|
|
resolve(e);
|
|
}).catch((error) => {
|
|
reject(error);
|
|
});
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
}
|
|
exports.TeleportCommands = TeleportCommands;
|
|
//# sourceMappingURL=TeleportCommands.js.map
|