- Add a waitForEventQueue promise, to get rid of the 5 second fudge from testBot.js - Async'ify testBot.js - Complete plumbing for Hint's ScriptDialog support (see changes to ScriptDialogEvent.ts and Comms.ts - Fix: The EventQueue was pausing for 5 seconds every 30 seconds
269 lines
17 KiB
JavaScript
269 lines
17 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const Message_1 = require("../enums/Message");
|
|
const Utils_1 = require("./Utils");
|
|
const InstantMessageDialog_1 = require("../enums/InstantMessageDialog");
|
|
const __1 = require("..");
|
|
class Comms {
|
|
constructor(circuit, agent, clientEvents) {
|
|
this.clientEvents = clientEvents;
|
|
this.circuit = circuit;
|
|
this.agent = agent;
|
|
this.circuit.subscribeToMessages([
|
|
Message_1.Message.ImprovedInstantMessage,
|
|
Message_1.Message.ChatFromSimulator,
|
|
Message_1.Message.AlertMessage,
|
|
Message_1.Message.ScriptDialog
|
|
], (packet) => {
|
|
switch (packet.message.id) {
|
|
case Message_1.Message.ImprovedInstantMessage:
|
|
const im = packet.message;
|
|
switch (im.MessageBlock.Dialog) {
|
|
case InstantMessageDialog_1.InstantMessageDialog.MessageFromAgent:
|
|
{
|
|
const imEvent = new __1.InstantMessageEvent();
|
|
imEvent.source = __1.ChatSourceType.Agent;
|
|
imEvent.from = im.AgentData.AgentID;
|
|
imEvent.owner = im.AgentData.AgentID;
|
|
imEvent.fromName = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.FromAgentName);
|
|
imEvent.message = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.Message);
|
|
imEvent.flags = __1.InstantMessageEventFlags.normal;
|
|
this.clientEvents.onInstantMessage.next(imEvent);
|
|
break;
|
|
}
|
|
case InstantMessageDialog_1.InstantMessageDialog.MessageBox:
|
|
break;
|
|
case InstantMessageDialog_1.InstantMessageDialog.GroupInvitation:
|
|
const giEvent = new __1.GroupInviteEvent();
|
|
giEvent.from = im.AgentData.AgentID;
|
|
giEvent.fromName = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.FromAgentName);
|
|
giEvent.message = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.Message);
|
|
giEvent.inviteID = im.MessageBlock.ID;
|
|
this.clientEvents.onGroupInvite.next(giEvent);
|
|
break;
|
|
case InstantMessageDialog_1.InstantMessageDialog.InventoryOffered:
|
|
{
|
|
const fromName = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.FromAgentName);
|
|
const message = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.Message);
|
|
const ioEvent = new __1.InventoryOfferedEvent();
|
|
ioEvent.from = im.AgentData.AgentID;
|
|
ioEvent.fromName = fromName;
|
|
ioEvent.message = message;
|
|
ioEvent.requestID = im.MessageBlock.ID;
|
|
ioEvent.source = __1.ChatSourceType.Agent;
|
|
this.clientEvents.onInventoryOffered.next(ioEvent);
|
|
break;
|
|
}
|
|
case InstantMessageDialog_1.InstantMessageDialog.InventoryAccepted:
|
|
break;
|
|
case InstantMessageDialog_1.InstantMessageDialog.InventoryDeclined:
|
|
break;
|
|
case InstantMessageDialog_1.InstantMessageDialog.TaskInventoryOffered:
|
|
{
|
|
const fromName = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.FromAgentName);
|
|
const message = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.Message);
|
|
const ioEvent = new __1.InventoryOfferedEvent();
|
|
ioEvent.from = im.AgentData.AgentID;
|
|
ioEvent.fromName = fromName;
|
|
ioEvent.message = message;
|
|
ioEvent.requestID = im.MessageBlock.ID;
|
|
ioEvent.source = __1.ChatSourceType.Object;
|
|
ioEvent.type = im.MessageBlock.BinaryBucket.readUInt8(0);
|
|
this.clientEvents.onInventoryOffered.next(ioEvent);
|
|
break;
|
|
}
|
|
case InstantMessageDialog_1.InstantMessageDialog.TaskInventoryAccepted:
|
|
break;
|
|
case InstantMessageDialog_1.InstantMessageDialog.TaskInventoryDeclined:
|
|
break;
|
|
case InstantMessageDialog_1.InstantMessageDialog.MessageFromObject:
|
|
{
|
|
const imEvent = new __1.InstantMessageEvent();
|
|
imEvent.source = __1.ChatSourceType.Object;
|
|
imEvent.owner = im.AgentData.AgentID;
|
|
imEvent.from = im.MessageBlock.ID;
|
|
imEvent.fromName = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.FromAgentName);
|
|
imEvent.message = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.Message);
|
|
imEvent.flags = __1.InstantMessageEventFlags.normal;
|
|
this.clientEvents.onInstantMessage.next(imEvent);
|
|
break;
|
|
}
|
|
case InstantMessageDialog_1.InstantMessageDialog.BusyAutoResponse:
|
|
{
|
|
const imEvent = new __1.InstantMessageEvent();
|
|
imEvent.source = __1.ChatSourceType.Agent;
|
|
imEvent.from = im.AgentData.AgentID;
|
|
imEvent.owner = im.AgentData.AgentID;
|
|
imEvent.fromName = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.FromAgentName);
|
|
imEvent.message = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.Message);
|
|
imEvent.flags = __1.InstantMessageEventFlags.busyResponse;
|
|
this.clientEvents.onInstantMessage.next(imEvent);
|
|
break;
|
|
}
|
|
case InstantMessageDialog_1.InstantMessageDialog.ConsoleAndChatHistory:
|
|
break;
|
|
case InstantMessageDialog_1.InstantMessageDialog.RequestTeleport:
|
|
const lureEvent = new __1.LureEvent();
|
|
const extraData = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.BinaryBucket).split('|');
|
|
lureEvent.from = im.AgentData.AgentID;
|
|
lureEvent.fromName = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.FromAgentName);
|
|
lureEvent.lureMessage = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.Message);
|
|
lureEvent.regionID = im.MessageBlock.RegionID;
|
|
lureEvent.position = im.MessageBlock.Position;
|
|
lureEvent.lureID = im.MessageBlock.ID;
|
|
lureEvent.gridX = parseInt(extraData[0], 10);
|
|
lureEvent.gridY = parseInt(extraData[1], 10);
|
|
this.clientEvents.onLure.next(lureEvent);
|
|
break;
|
|
case InstantMessageDialog_1.InstantMessageDialog.AcceptTeleport:
|
|
break;
|
|
case InstantMessageDialog_1.InstantMessageDialog.DenyTeleport:
|
|
break;
|
|
case InstantMessageDialog_1.InstantMessageDialog.RequestLure:
|
|
break;
|
|
case InstantMessageDialog_1.InstantMessageDialog.GotoUrl:
|
|
break;
|
|
case InstantMessageDialog_1.InstantMessageDialog.FromTaskAsAlert:
|
|
break;
|
|
case InstantMessageDialog_1.InstantMessageDialog.GroupNotice:
|
|
break;
|
|
case InstantMessageDialog_1.InstantMessageDialog.GroupNoticeInventoryAccepted:
|
|
break;
|
|
case InstantMessageDialog_1.InstantMessageDialog.GroupNoticeInventoryDeclined:
|
|
break;
|
|
case InstantMessageDialog_1.InstantMessageDialog.GroupInvitationAccept:
|
|
break;
|
|
case InstantMessageDialog_1.InstantMessageDialog.GroupInvitationDecline:
|
|
break;
|
|
case InstantMessageDialog_1.InstantMessageDialog.GroupNoticeRequested:
|
|
break;
|
|
case InstantMessageDialog_1.InstantMessageDialog.FriendshipOffered:
|
|
{
|
|
const fromName = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.FromAgentName);
|
|
const message = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.Message);
|
|
const frEvent = new __1.FriendRequestEvent();
|
|
frEvent.from = im.AgentData.AgentID;
|
|
frEvent.fromName = fromName;
|
|
frEvent.message = message;
|
|
frEvent.requestID = im.MessageBlock.ID;
|
|
this.clientEvents.onFriendRequest.next(frEvent);
|
|
break;
|
|
}
|
|
case InstantMessageDialog_1.InstantMessageDialog.FriendshipAccepted:
|
|
{
|
|
const fromName = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.FromAgentName);
|
|
const message = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.Message);
|
|
const frEvent = new __1.FriendResponseEvent();
|
|
frEvent.from = im.AgentData.AgentID;
|
|
frEvent.fromName = fromName;
|
|
frEvent.message = message;
|
|
frEvent.requestID = im.MessageBlock.ID;
|
|
frEvent.accepted = true;
|
|
this.clientEvents.onFriendResponse.next(frEvent);
|
|
break;
|
|
}
|
|
case InstantMessageDialog_1.InstantMessageDialog.FriendshipDeclined:
|
|
{
|
|
const fromName = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.FromAgentName);
|
|
const message = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.Message);
|
|
const frEvent = new __1.FriendResponseEvent();
|
|
frEvent.from = im.AgentData.AgentID;
|
|
frEvent.fromName = fromName;
|
|
frEvent.message = message;
|
|
frEvent.requestID = im.MessageBlock.ID;
|
|
frEvent.accepted = false;
|
|
this.clientEvents.onFriendResponse.next(frEvent);
|
|
break;
|
|
}
|
|
case InstantMessageDialog_1.InstantMessageDialog.StartTyping:
|
|
{
|
|
const imEvent = new __1.InstantMessageEvent();
|
|
imEvent.source = __1.ChatSourceType.Agent;
|
|
imEvent.from = im.AgentData.AgentID;
|
|
imEvent.owner = im.AgentData.AgentID;
|
|
imEvent.fromName = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.FromAgentName);
|
|
imEvent.message = '';
|
|
imEvent.flags = __1.InstantMessageEventFlags.startTyping;
|
|
this.clientEvents.onInstantMessage.next(imEvent);
|
|
break;
|
|
}
|
|
case InstantMessageDialog_1.InstantMessageDialog.StopTyping:
|
|
{
|
|
const imEvent = new __1.InstantMessageEvent();
|
|
imEvent.source = __1.ChatSourceType.Agent;
|
|
imEvent.from = im.AgentData.AgentID;
|
|
imEvent.owner = im.AgentData.AgentID;
|
|
imEvent.fromName = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.FromAgentName);
|
|
imEvent.message = '';
|
|
imEvent.flags = __1.InstantMessageEventFlags.finishTyping;
|
|
this.clientEvents.onInstantMessage.next(imEvent);
|
|
break;
|
|
}
|
|
case InstantMessageDialog_1.InstantMessageDialog.SessionSend:
|
|
{
|
|
const groupChatEvent = new __1.GroupChatEvent();
|
|
groupChatEvent.from = im.AgentData.AgentID;
|
|
groupChatEvent.fromName = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.FromAgentName);
|
|
groupChatEvent.groupID = im.MessageBlock.ID;
|
|
groupChatEvent.message = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.Message);
|
|
this.clientEvents.onGroupChat.next(groupChatEvent);
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
case Message_1.Message.ChatFromSimulator:
|
|
{
|
|
const chat = packet.message;
|
|
const event = new __1.ChatEvent();
|
|
event.fromName = Utils_1.Utils.BufferToStringSimple(chat.ChatData.FromName);
|
|
event.message = Utils_1.Utils.BufferToStringSimple(chat.ChatData.Message);
|
|
event.from = chat.ChatData.SourceID;
|
|
event.ownerID = chat.ChatData.OwnerID;
|
|
event.chatType = chat.ChatData.ChatType;
|
|
event.sourceType = chat.ChatData.SourceType;
|
|
event.audible = chat.ChatData.Audible;
|
|
event.position = chat.ChatData.Position;
|
|
this.clientEvents.onNearbyChat.next(event);
|
|
break;
|
|
}
|
|
case Message_1.Message.AlertMessage:
|
|
{
|
|
const alertm = packet.message;
|
|
const alertMessage = Utils_1.Utils.BufferToStringSimple(alertm.AlertData.Message);
|
|
console.log('Alert message: ' + alertMessage);
|
|
alertm.AlertInfo.forEach((info) => {
|
|
const alertInfoMessage = Utils_1.Utils.BufferToStringSimple(info.Message);
|
|
console.log('Alert info message: ' + alertInfoMessage);
|
|
});
|
|
break;
|
|
}
|
|
case Message_1.Message.ScriptDialog:
|
|
{
|
|
const scriptd = packet.message;
|
|
const event = new __1.ScriptDialogEvent();
|
|
event.ObjectID = scriptd.Data.ObjectID;
|
|
event.FirstName = Utils_1.Utils.BufferToStringSimple(scriptd.Data.FirstName);
|
|
event.LastName = Utils_1.Utils.BufferToStringSimple(scriptd.Data.LastName);
|
|
event.ObjectName = Utils_1.Utils.BufferToStringSimple(scriptd.Data.ObjectName);
|
|
event.Message = Utils_1.Utils.BufferToStringSimple(scriptd.Data.Message);
|
|
event.ChatChannel = scriptd.Data.ChatChannel;
|
|
event.ImageID = scriptd.Data.ImageID;
|
|
event.Buttons = [];
|
|
event.Owners = [];
|
|
for (const button of scriptd.Buttons) {
|
|
event.Buttons.push(Utils_1.Utils.BufferToStringSimple(button.ButtonLabel));
|
|
}
|
|
for (const owner of scriptd.OwnerData) {
|
|
event.Owners.push(owner.OwnerID);
|
|
}
|
|
this.clientEvents.onScriptDialog.next(event);
|
|
break;
|
|
}
|
|
}
|
|
});
|
|
}
|
|
shutdown() {
|
|
}
|
|
}
|
|
exports.Comms = Comms;
|
|
//# sourceMappingURL=Comms.js.map
|