UNPKG

@krp-races/krp-sharedmemory-client

Version:

A node.js wrapper for shared memory plugin in kart racing pro.

181 lines (177 loc) 6.23 kB
Object.defineProperty(exports, '__esModule', { value: true }); var EventEmitter = require('events'); var binding = require('./binding.js'); var enums_GameState = require('./enums/GameState.js'); var enums_ChallengeSessionType = require('./enums/ChallengeSessionType.js'); var enums_CommunicationOffence = require('./enums/CommunicationOffence.js'); var enums_CommunicationPenaltyType = require('./enums/CommunicationPenaltyType.js'); var enums_CommunicationReason = require('./enums/CommunicationReason.js'); var enums_CommunicationType = require('./enums/CommunicationType.js'); var enums_DriveType = require('./enums/DriveType.js'); var enums_EngineCooling = require('./enums/EngineCooling.js'); var enums_EntryState = require('./enums/EntryState.js'); var enums_EventType = require('./enums/EventType.js'); var enums_PracticeSessionState = require('./enums/PracticeSessionState.js'); var enums_RaceSessionState = require('./enums/RaceSessionState.js'); var enums_RaceSessionType = require('./enums/RaceSessionType.js'); var enums_TrackSegmentType = require('./enums/TrackSegmentType.js'); var enums_WeatherCondition = require('./enums/WeatherCondition.js'); require('module'); class KRPSharedMemoryClient extends EventEmitter { constructor(retryInterval = 5000, updateInterval = 100) { super(); this.activated = false; this.connected = false; this.sequenceNumber = -1; this.retryInterval = retryInterval; this.updateInterval = updateInterval; } activate() { this.activated = true; this.emit('activated'); this.connect(); } deactivate() { this.activated = false; this.emit('deactivated'); this.disconnect(); } isActivated() { return this.activated; } isConnected() { return this.connected; } connect() { if (!this.activated || this.connected) return; try { binding.addon.connect(); if (!binding.addon.isConnected()) { setTimeout(this.connect.bind(this), this.retryInterval); return; } this.connected = true; this.emit('connected'); this.update(); } catch (e) { if (e instanceof Error) this.emit('error', e.message); setTimeout(this.connect.bind(this), this.retryInterval); } } disconnect() { if (!this.connected) return; try { binding.addon.disconnect(); } catch (e) { if (e instanceof Error) this.emit('error', e.message); } this.sequenceNumber = -1; this.connected = false; this.emit('disconnected'); } update() { if (!this.connected) return; let data; try { data = binding.addon.read(); } catch (e) { if (e instanceof Error) this.emit('error', e.message); } if (!data) { this.disconnect(); this.connect(); return; } if (data.gameState === enums_GameState.EGameState.Closed) { this.disconnect(); this.connect(); return; } if (data.sequenceNumber % 2 == 0 && this.sequenceNumber != data.sequenceNumber) { this.sequenceNumber = data.sequenceNumber; this.emit('update', data); } setTimeout(this.update.bind(this), this.updateInterval); } requestSpectateVehicle(id) { if (!this.connected) return; binding.addon.requestSpectateVehicle(id); } requestCamera(id) { if (!this.connected) return; binding.addon.requestCamera(id); } } Object.defineProperty(exports, "EGameState", { enumerable: true, get: function () { return enums_GameState.EGameState; } }); Object.defineProperty(exports, "EChallengeSessionType", { enumerable: true, get: function () { return enums_ChallengeSessionType.EChallengeSessionType; } }); Object.defineProperty(exports, "ECommunicationOffence", { enumerable: true, get: function () { return enums_CommunicationOffence.ECommunicationOffence; } }); Object.defineProperty(exports, "ECommunicationPenaltyType", { enumerable: true, get: function () { return enums_CommunicationPenaltyType.ECommunicationPenaltyType; } }); Object.defineProperty(exports, "ECommunicationReason", { enumerable: true, get: function () { return enums_CommunicationReason.ECommunicationReason; } }); Object.defineProperty(exports, "ECommunicationType", { enumerable: true, get: function () { return enums_CommunicationType.ECommunicationType; } }); Object.defineProperty(exports, "EDriveType", { enumerable: true, get: function () { return enums_DriveType.EDriveType; } }); Object.defineProperty(exports, "EEngineCooling", { enumerable: true, get: function () { return enums_EngineCooling.EEngineCooling; } }); Object.defineProperty(exports, "EEntryState", { enumerable: true, get: function () { return enums_EntryState.EEntryState; } }); Object.defineProperty(exports, "EEventType", { enumerable: true, get: function () { return enums_EventType.EEventType; } }); Object.defineProperty(exports, "EPracticeSessionState", { enumerable: true, get: function () { return enums_PracticeSessionState.EPracticeSessionState; } }); Object.defineProperty(exports, "ERaceSessionState", { enumerable: true, get: function () { return enums_RaceSessionState.ERaceSessionState; } }); Object.defineProperty(exports, "ERaceSessionType", { enumerable: true, get: function () { return enums_RaceSessionType.ERaceSessionType; } }); Object.defineProperty(exports, "ETrackSegmentType", { enumerable: true, get: function () { return enums_TrackSegmentType.ETrackSegmentType; } }); Object.defineProperty(exports, "EWeatherCondition", { enumerable: true, get: function () { return enums_WeatherCondition.EWeatherCondition; } }); exports.KRPSharedMemoryClient = KRPSharedMemoryClient; exports.default = KRPSharedMemoryClient;