Fix compilation with Typescript 4

This commit is contained in:
Casper Warden
2020-12-01 14:06:03 +00:00
parent 15eb17264b
commit 2a37224908
2 changed files with 60 additions and 45 deletions

View File

@@ -34,26 +34,51 @@ import { AgentMovementCompleteMessage } from './classes/messages/AgentMovementCo
import { Subscription } from 'rxjs/internal/Subscription';
import Timer = NodeJS.Timer;
export class Bot
{
private loginParams: LoginParameters;
private currentRegion: Region;
private agent: Agent;
private ping: Timer | null = null;
private pingNumber = 0;
private lastSuccessfulPing = 0;
private circuitSubscription: Subscription | null = null;
private options: BotOptionFlags;
private eventQueueRunning = false;
public clientEvents: ClientEvents;
public clientCommands: ClientCommands;
private eventQueueWaits: any = {};
private stay = false;
public clientEvents: ClientEvents;
private stayRegion = '';
private stayPosition = new Vector3();
private _agent?: Agent;
private _currentRegion?: Region;
private _clientCommands?: ClientCommands;
get currentRegion(): Region
{
if (this._currentRegion === undefined)
{
throw new Error('Internal error - currentRegion is undefined');
}
return this._currentRegion;
}
get agent(): Agent
{
if (this._agent === undefined)
{
throw new Error('Internal error - agent is undefined');
}
return this._agent;
}
get clientCommands(): ClientCommands
{
if (this._clientCommands === undefined)
{
throw new Error('Internal error - clientCommands is undefined');
}
return this._clientCommands;
}
constructor(login: LoginParameters, options: BotOptionFlags)
{
@@ -96,19 +121,19 @@ export class Bot
{
const loginHandler = new LoginHandler(this.clientEvents, this.options);
const response: LoginResponse = await loginHandler.Login(this.loginParams);
this.currentRegion = response.region;
this.agent = response.agent;
this.clientCommands = new ClientCommands(response.region, response.agent, this);
this.currentRegion.clientCommands = this.clientCommands;
this._currentRegion = response.region;
this._agent = response.agent;
this._clientCommands = new ClientCommands(response.region, response.agent, this);
this.currentRegion.clientCommands = this._clientCommands;
return response;
}
async changeRegion(region: Region, requested: boolean)
{
this.closeCircuit();
this.currentRegion = region;
this.clientCommands = new ClientCommands(this.currentRegion, this.agent, this);
this.currentRegion.clientCommands = this.clientCommands;
this._currentRegion = region;
this._clientCommands = new ClientCommands(this.currentRegion, this.agent, this);
this._currentRegion.clientCommands = this._clientCommands;
if (this.ping !== null)
{
clearInterval(this.ping);
@@ -155,10 +180,10 @@ export class Bot
this.circuitSubscription.unsubscribe();
this.circuitSubscription = null;
}
delete this.currentRegion;
delete this._currentRegion;
this.clientCommands.shutdown();
delete this.clientCommands;
delete this._clientCommands;
if (this.ping !== null)
{
clearInterval(this.ping);
@@ -171,7 +196,7 @@ export class Bot
{
this.closeCircuit();
this.agent.shutdown();
delete this.agent;
delete this._agent;
this.disconnected(false, message);
}
@@ -200,7 +225,7 @@ export class Bot
this.stayPosition = new Vector3();
this.closeCircuit();
this.agent.shutdown();
delete this.agent;
delete this._agent;
this.disconnected(true, 'Logout completed');
}
@@ -279,9 +304,9 @@ export class Bot
console.error(error);
});
if (this.clientCommands !== null)
if (this._clientCommands)
{
this.clientCommands.network.setBandwidth(1536000);
this._clientCommands.network.setBandwidth(1536000);
}
const agentRequest = new AgentDataUpdateRequestMessage();

View File

@@ -347,13 +347,13 @@ export class InventoryFolder
});
}
populate(useCached = true)
populate(useCached = true): Promise<void>
{
if (!useCached)
{
return this.populateInternal();
}
return new Promise((resolve, reject) =>
return new Promise<void>((resolve, reject) =>
{
this.loadCache().then(() =>
{
@@ -414,31 +414,6 @@ export class InventoryFolder
Description: Utils.StringToBuffer(description)
};
if (data.length + 100 < 1200)
{
msg.AssetBlock.AssetData = data;
this.agent.currentRegion.circuit.sendMessage(msg, PacketFlags.Reliable);
this.agent.currentRegion.circuit.sendMessage(createMsg, PacketFlags.Reliable);
}
else
{
this.agent.currentRegion.circuit.sendMessage(msg, PacketFlags.Reliable);
this.agent.currentRegion.circuit.sendMessage(createMsg, PacketFlags.Reliable);
this.agent.currentRegion.circuit.waitForMessage<RequestXferMessage>(Message.RequestXfer, 10000).then((result: RequestXferMessage) =>
{
this.agent.currentRegion.circuit.XferFileUp(result.XferID.ID, data).then(() =>
{
console.log('Xfer finished');
resolve();
}).catch((err: Error) =>
{
console.error('Error with transfer');
console.error(err);
reject(err);
});
});
}
this.agent.currentRegion.circuit.waitForMessage<UpdateCreateInventoryItemMessage>(Message.UpdateCreateInventoryItem, 10000, (message: UpdateCreateInventoryItemMessage) =>
{
if (message.InventoryData[0].CallbackID === callbackID)
@@ -457,6 +432,21 @@ export class InventoryFolder
}
resolve(result.InventoryData[0].ItemID);
});
if (data.length + 100 < 1200)
{
msg.AssetBlock.AssetData = data;
this.agent.currentRegion.circuit.sendMessage(msg, PacketFlags.Reliable);
this.agent.currentRegion.circuit.sendMessage(createMsg, PacketFlags.Reliable);
}
else
{
this.agent.currentRegion.circuit.sendMessage(msg, PacketFlags.Reliable);
this.agent.currentRegion.circuit.sendMessage(createMsg, PacketFlags.Reliable);
const result: RequestXferMessage = await this.agent.currentRegion.circuit.waitForMessage<RequestXferMessage>(Message.RequestXfer, 10000);
await this.agent.currentRegion.circuit.XferFileUp(result.XferID.ID, data);
}
});
}