UNPKG

node-insim

Version:

An InSim library for NodeJS with TypeScript support

288 lines (287 loc) 7.78 kB
import { SendablePacket, SendableStruct } from './base'; import type { PlayerFlags } from './enums'; import { PacketType } from './enums'; import type { PacketDataWithOptionalReqI } from './types'; /** * AI Control */ export declare class IS_AIC extends SendablePacket { static readonly MAX_INPUTS = 20; /** 4 + 4 * (number of inputs) */ Size: number; readonly Type = PacketType.ISP_AIC; /** Optional - returned in any immediate response e.g. reply to {@link CS_SEND_AI_INFO} */ ReqI: number; /** Unique ID of AI player to control */ PLID: number; /** * Inputs in {@link AIInputVal} marked 'hold' must be set back to zero after some time. * This can be done either by use of the Time field or by sending a later packet with Value = 0. * * E.g. Set Time to 10 when issuing a {@link CS_CHUP} - hold shift up lever for 0.1 sec. * * E.g. Set Time to 50 when issuing a {@link CS_HORN} - sound horn for 0.5 sec. */ Inputs: AIInputVal[]; private readonly inputsOffset; constructor(data?: IS_AIC_Data); pack(): Uint8Array<ArrayBuffer>; } export declare class AIInputVal extends SendableStruct { /** Select input value to set * * Inputs marked 'hold' must be set back to zero after some time. * This can be done either by use of the Time field or by sending a later packet with Value = 0. * * E.g. Set Time to 10 when issuing a {@link CS_CHUP} - hold shift up lever for 0.1 sec. * * E.g. Set Time to 50 when issuing a {@link CS_HORN} - sound horn for 0.5 sec. */ Input: AICInput; /** * Time to hold (optional, hundredths of a second) * * If the Time value is set, that input will return to default after that time. * This is probably most useful for {@link CS_CHUP} / {@link CS_CHDN} / {@link CS_FLASH} / {@link CS_HORN} inputs. * If you don't use Time then you should send another packet to zero the input. */ Time: number; /** Value to set */ Value: number; constructor(data?: AIInputValData); } export type AIInputValData = { Input: AICInput.CS_MSX; Time?: number; Value: number | AICSteering; } | { Input: AICInput.CS_BRAKE; Time?: number; Value: number; } | { Input: AICInput.CS_THROTTLE; Time?: number; Value: number; } | { Input: AICInput.CS_CHUP; Time?: number; Value: OnOffValue; } | { Input: AICInput.CS_CHDN; Time?: number; Value: OnOffValue; } | { Input: AICInput.CS_IGNITION; Time?: number; Value: AICToggleValue; } | { Input: AICInput.CS_EXTRALIGHT; Time?: number; Value: AICToggleValue; } | { Input: AICInput.CS_HEADLIGHTS; Time?: number; Value: AICHeadlights; } | { Input: AICInput.CS_SIREN; Time?: number; Value: OnOffValue; } | { Input: AICInput.CS_HORN; Time?: number; Value: 1 | 2 | 3 | 4 | 5; } | { Input: AICInput.CS_FLASH; Time?: number; Value: OnOffValue; } | { Input: AICInput.CS_CLUTCH; Time?: number; Value: number; } | { Input: AICInput.CS_HANDBRAKE; Time?: number; Value: number; } | { Input: AICInput.CS_INDICATORS; Time?: number; Value: AICIndicators; } | { Input: AICInput.CS_GEAR; Time?: number; Value: AICGear; } | { Input: AICInput.CS_LOOK; Time?: number; Value: AICLook; } | { Input: AICInput.CS_PITSPEED; Time?: number; Value: AICToggleValue; } | { Input: AICInput.CS_TCDISABLE; Time?: number; Value: AICToggleValue; } | { Input: AICInput.CS_FOGREAR; Time?: number; Value: AICToggleValue; } | { Input: AICInput.CS_FOGFRONT; Time?: number; Value: AICToggleValue; } | { Input: AICInput.CS_SEND_AI_INFO; Time?: never; } | { Input: AICInput.CS_REPEAT_AI_INFO; Time: number; } | { Input: AICInput.CS_SET_HELP_FLAGS; Time?: never; Value: PlayerFlags; } | { Input: AICInput.CS_RESET_INPUTS; Time?: never; } | { Input: AICInput.CS_STOP_CONTROL; Time?: never; }; type OnOffValue = 0 | 1; export declare enum AICToggleValue { TOGGLE = 1, SWITCH_OFF = 2, SWITCH_ON = 3 } export type IS_AIC_Data = PacketDataWithOptionalReqI<IS_AIC>; export declare enum AICSteering { HARD_LEFT = 1, CENTRE = 32768, HARD_RIGHT = 65535 } export declare enum AICHeadlights { /** All lights off */ OFF = 1, /** Sidelights on */ SIDE = 2, /** Low beam on */ LOW = 3, /** High beam on */ HIGH = 4 } export declare enum AICIndicators { /** All indicators off */ CANCEL = 1, /** Left indicators on */ LEFT = 2, /** Right indicators on */ RIGHT = 3, /** All indicators on */ HAZARD = 4 } export declare enum AICGear { REVERSE = 0, NEUTRAL = 1, FIRST = 2, SECOND = 3, THIRD = 4, FOURTH = 5, FIFTH = 6, SIXTH = 7, SEVENTH = 8, /** Use sequential shift control */ SEQUENTIAL = 255 } export declare enum AICLook { NONE = 0, /** Look left */ LEFT = 4, /** Look left more */ LEFT_PLUS = 5, /** Look right */ RIGHT = 6, /** Look right more */ RIGHT_PLUS = 7 } /** * Inputs marked 'hold' must be set back to zero after some time. * This can be done either by use of the Time field or by sending a later packet with Value = 0. * * E.g. Set Time to 10 when issuing a {@link CS_CHUP} - hold shift up lever for 0.1 sec. * * E.g. Set Time to 50 when issuing a {@link CS_HORN} - sound horn for 0.5 sec. */ export declare enum AICInput { /** Steer: 1 hard left / 32768 centre / 65535 hard right */ CS_MSX = 0, /** Throttle */ CS_THROTTLE = 1, /** Brake */ CS_BRAKE = 2, /** Hold shift up lever */ CS_CHUP = 3, /** Hold shift down lever */ CS_CHDN = 4, /** Ignition: 1 toggle / 2 switch off / 3 switch on */ CS_IGNITION = 5, /** Extra light: 1 toggle / 2 switch off / 3 switch on */ CS_EXTRALIGHT = 6, /** Headlights: 1: off / 2: side / 3: low / 4: high */ CS_HEADLIGHTS = 7, /** Siren */ CS_SIREN = 8, /** Hold horn - 1 to 5 */ CS_HORN = 9, /** Hold flash */ CS_FLASH = 10, /** Clutch */ CS_CLUTCH = 11, /** Handbrake */ CS_HANDBRAKE = 12, /** 1: cancel / 2: left / 3: right / 4: hazard */ CS_INDICATORS = 13, /** Gear for shifter (leave at 255 for sequential control) */ CS_GEAR = 14, /** Look: 0: none / 4: left / 5: left+ / 6: right / 7: right+ */ CS_LOOK = 15, /** Pit speed limiter: 1 toggle / 2 switch off / 3 switch on */ CS_PITSPEED = 16, /** Traction control disable: 1 toggle / 2 switch off / 3 switch on */ CS_TCDISABLE = 17, /** Rear fog light: 1 toggle / 2 switch off / 3 switch on */ CS_FOGREAR = 18, /** Front fog light: 1 toggle / 2 switch off / 3 switch on */ CS_FOGFRONT = 19, CS_NUM = 20, /** Send an {@link IS_AII} (AI Info) packet */ CS_SEND_AI_INFO = 240, /** * Start or stop sending regular {@link IS_AII} packets * Time = time interval in hundredths of a second (0 : stop) */ CS_REPEAT_AI_INFO = 241, /** Set help flags. * * Value can be any combination of * - {@link PIF_AUTOGEARS} * - {@link PIF_HELP_B} * - {@link PIF_AUTOCLUTCH} * * Default value for an AI driver is {@link PIF_AUTOCLUTCH} only. * If you set {@link PIF_AUTOGEARS} you don't need to set {@link PIF_AUTOCLUTCH}. */ CS_SET_HELP_FLAGS = 253, /** * Reset all inputs * * Most inputs are zero / {@link CS_MSX} is 32768 / {@link CS_GEAR} is 255 */ CS_RESET_INPUTS = 254, /** * Stop control * * The AI driver will stop the car. */ CS_STOP_CONTROL = 255 } export {};