import { Vector2 } from '../types/Vector2'; import { Vector3 } from '../types/Vector3'; import { Vector4 } from '../types/Vector4'; import { Color } from '../types/Color'; import { createFromHandle } from '../types/HandleRegistry'; import { inv, rai, raf, ras, rav, pvi, pvf, pvv, pvii, pvfi, _h, f, int, uint, float, Hash, u8, u16, u32, u64, i8, i16, i32, i64 } from '../types/NativeAliases'; export class Pad { /** * @param action * @param control * @returns */ static isControlActionValid(action: string | number, control: int): boolean { return !!inv('0xBC0884BC590951C7', _h(action), control, rai()); } /** * nullsub, doesn't do anything * * @param control */ static clearControlLightEffect(control: int): void { inv('0xCB0360EFEFB2580D', control); } /** * @param control * @param action * @returns */ static isDisabledControlPressed(control: int, action: string | number): boolean { return !!inv('0xE2587F8CBBD87B1D', control, _h(action), rai()); } /** * _IS_R* - _IS_S* * * @returns */ static N_0x1252C029FC8EBB4D(): boolean { return !!inv('0x1252C029FC8EBB4D', rai()); } /** * Old name: STOP_PAD_SHAKE * * @param control */ static stopControlShake(control: int): void { inv('0x38C16A305E8CDC8D', control); } /** * @param control * @param action * @returns */ static getControlNormal(control: int, action: string | number): float { return inv('0xEC3C9B8D5327B563', control, _h(action), raf()); } /** * Returns time in ms since last input. * * @param control * @returns */ static getControlHowLongAgo(control: int): int { return inv('0xD7D22F5592AED8BA', control, rai()); } /** * @param control * @param action * @returns */ static isDisabledControlJustPressed(control: int, action: string | number): boolean { return !!inv('0x91AEF906BCA88877', control, _h(action), rai()); } /** * Old name: SET_PAD_SHAKE * * @param control * @param duration * @param frequency */ static setControlShake(control: int, duration: int, frequency: int): void { inv('0x48B3886C1358D0D5', control, duration, frequency); } /** * @param control * @param action */ static setInputExclusive(control: int, action: string | number): void { inv('0xEDE476E5EE29EDB1', control, _h(action)); } /** * @param control * @param action * @returns */ static isControlJustPressed(control: int, action: string | number): boolean { return !!inv('0x580417101DDB492F', control, _h(action), rai()); } /** * @param control * @param action * @returns */ static isControlEnabled(control: int, action: string | number): boolean { return !!inv('0x1CEA6BFDF248E5D9', control, _h(action), rai()); } /** * @param control * @param action * @returns */ static isDisabledControlJustReleased(control: int, action: string | number): boolean { return !!inv('0x305C8DCD79DA8B0F', control, _h(action), rai()); } /** * @param control * @param action * @param disableRelatedActions */ static disableControlAction(control: int, action: string | number, disableRelatedActions: boolean): void { inv('0xFE99B66D079CF6BC', control, _h(action), disableRelatedActions); } /** * nullsub, doesn't do anything * * @param control * @param leftDuration * @param leftFrequency * @param rightDuration * @param rightFrequency */ static setControlTriggerShake(control: int, leftDuration: int, leftFrequency: int, rightDuration: int, rightFrequency: int): void { inv('0x14D29BB12D47F68C', control, leftDuration, leftFrequency, rightDuration, rightFrequency); } /** * Old name: _CLEAR_SUPPRESSED_PAD_RUMBLE * * @param control */ static clearControlShakeSuppressedId(control: int): void { inv('0xA0CEFCEA390AAB9B', control); } static N_0x709BA8C08C5C008D(): void { inv('0x709BA8C08C5C008D'); } /** * @param control * @param action * @returns */ static isControlPressed(control: int, action: string | number): boolean { return !!inv('0xF3A21BCD95725A4A', control, _h(action), rai()); } /** * @param control * @param action * @returns */ static isControlReleased(control: int, action: string | number): boolean { return !!inv('0x648EE3E7F38877DD', control, _h(action), rai()); } /** * @param p0 * @returns */ static N_0xBD629C1C4F501C80(p0: any): any { return inv('0xBD629C1C4F501C80', p0); } /** * @param control * @param action * @returns */ static isControlJustReleased(control: int, action: string | number): boolean { return !!inv('0x50F940259D3841E6', control, _h(action), rai()); } /** * nullsub, doesn't do anything * * @param control * @param color */ static setControlLightEffectFlashingColor(control: int, color: Color): void { inv('0xA45884DB10EC7EE3', control, color.r, color.g, color.b, color.a); } /** * @param control * @returns */ static getDisabledControlHowLongAgo(control: int): int { return inv('0x771DFCB24D19C2F6', control, rai()); } /** * @param p0 * @param p1 * @returns */ static N_0x43F35DDB2905D945(p0: any, p1: any): any { return inv('0x43F35DDB2905D945', p0, p1); } /** * This is for simulating player input. * value is a float value from 0 - 1 control: see IS_CONTROL_ENABLED Old name: _SET_CONTROL_NORMAL * * @param control * @param action * @param value * @returns */ static setControlValueNextFrame(control: int, action: string | number, value: float): boolean { return !!inv('0xE8A25867FBA3B05E', control, _h(action), f(value), rai()); } /** * @param control * @param action * @returns */ static getControlValue(control: int, action: string | number): int { return inv('0xD95E79E8686D2C27', control, _h(action), rai()); } /** * @param control * @param action * @returns */ static getDisabledControlUnboundNormal(control: int, action: string | number): float { return inv('0x4F8A26A890FD62FB', control, _h(action), raf()); } /** * @param control * @param action * @returns */ static getDisabledControlNormal(control: int, action: string | number): float { return inv('0x11E65974A982637C', control, _h(action), raf()); } /** * nullsub, doesn't do anything Old name: _SET_CONTROL_GROUP_COLOR * * @param control * @param color */ static setControlLightEffectColor(control: int, color: Color): void { inv('0x8290252FFF36ACB5', control, color.r, color.g, color.b, color.a); } /** * @returns */ static isLookInverted(): boolean { return !!inv('0x77B612531280010D', rai()); } /** * padIndex is not used Old name: _IS_USING_KEYBOARD * * @param control * @returns */ static isUsingKeyboardAndMouse(control: int): boolean { return !!inv('0xA571D46727E2B718', control, rai()); } /** * @param control */ static disableAllControlActions(control: int): void { inv('0x5F4B6931816E599B', control); } /** * @param control * @param action * @returns */ static getControlUnboundNormal(control: int, action: string | number): float { return inv('0x5B84D09CEC5209C5', control, _h(action), raf()); } /** * @param control * @param action * @param enableRelatedActions */ static enableControlAction(control: int, action: string | number, enableRelatedActions: boolean): void { inv('0x351220255D64C155', control, _h(action), enableRelatedActions); } /** * Old name: SET_PAD_SHAKE_SUPPRESSED_ID * * @param control * @param uniqueId */ static setControlShakeSuppressedId(control: int, uniqueId: int): void { inv('0xF239400E16C23E08', control, uniqueId); } /** * rumbleCurve: common_0/data/rumblecurves.meta * * @param rumbleCurve * @param p1 */ static N_0x5F217BC1190503D8(rumbleCurve: string, p1: float): void { inv('0x5F217BC1190503D8', rumbleCurve, f(p1)); } /** * @param p0 */ static N_0x52C68E92D6E23ADD(p0: any): void { inv('0x52C68E92D6E23ADD', p0); } /** * Gets the current control context. See: _SET_CONTROL_CONTEXT * * @param control * @returns */ static getCurrentControlContext(control: int): number { return (inv('0xDDCEB0F26C89C00F', control, rai())) & 0xFFFFFFFF; } /** * Sets the current control context. Must be called every frame. context: https://alloc8or.re/rdr3/doc/misc/input_contexts.txt * For more information, see common:/data/control/settings.meta * https://github.com/femga/rdr3_discoveries/tree/master/Controls * * @param control * @param context */ static setControlContext(control: int, context: string | number): void { inv('0x2804658EB7D8A50B', control, _h(context)); } /** * @param control * @returns */ static haveControlsChanged(control: int): boolean { return !!inv('0x6CD79468A1E595C6', control, rai()); } }