node-insim
Version:
An InSim library for NodeJS with TypeScript support
288 lines (287 loc) • 7.78 kB
TypeScript
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 {};