UNPKG

anomaly-packer

Version:

Anomaly Packer is a utility package for STALKER Anomaly creators to help them develop addons at speed with TypeScript's type-safety and game-oriented build tools.

339 lines (329 loc) 16.8 kB
/** @noSelfInFile */ import type { Section } from 'anomaly-packer' declare global { namespace ui_inventory { export const GUI: UIInventory | undefined export function change_last_mode(mode: number): void /** `spairs` comparator ordering a property table by each entry's `index`. */ export function func_index<K extends string>(t: Record<K, { index: number }>, a: K, b: K): boolean export function hide_actor_menu(): boolean export function hide_inventory(): void export function is_enabled(): boolean export function keybind_pass(): boolean export function on_game_start(): void export function overrides(): void export function start(mode: string, obj?: CGameObject): void } /** The inventory screen's four modes, as assigned to `UIInventory.mode`. */ type InventoryMode = 'inventory' | 'loot' | 'trade' | 'repair' /** The containers a property can apply to, as used in `InventoryProperty.cont`. */ type InventoryContainer = | 'actor_bag' | 'actor_equ' | 'actor_belt' | 'actor_quick' | 'actor_trade' | 'actor_trade_bag' | 'npc_bag' | 'npc_trade' | 'npc_trade_bag' /** * The keys of the vanilla `UIInventory.properties` table — the stable ids of the item * context menu entries. `custom_1..10` are addon slots filled from an item's own * `useN_functor`, so unlike the rest they carry no fixed meaning. * * Left open with a `(string & {})` arm because addons add their own keys to the table. */ type InventoryPropertyId = | 'use' | 'attach_1' | 'attach_2' | 'attach_3' | 'to_slot' | 'to_ruck' | 'move' | 'move_all' | 'donate' | 'unload' | `custom_${number}` | 'detach_silencer' | 'detach_scope' | 'detach_gl' | 'drop' | 'drop_all' | (string & {}) /** * A call into a `UIInventory` method, written as the method name followed by extra * arguments. The whole tuple is passed on to the method after `(self, obj, bag)`, so the * name itself arrives as an argument too — vanilla ignores it. */ type InventoryPropertyCall = [method: string, ...args: unknown[]] /** * One entry of `UIInventory.properties`, describing a single context menu action: when it * is offered (`mode`/`cont` and the `preconditionN` chain), what it is called * (`name`/`name_func`) and what it does (`action`). * * `mode` and `cont` are authored as arrays but converted in place to key-sets by * `t2k_table` in the constructor, so at runtime they are looked up as * `props.cont[bag]` — which is what this type describes. */ interface InventoryProperty { /** Sort position within the menu; `func_index` orders the entries by it. */ index: number /** A localization key, used when `name_func` is absent. */ name?: string /** Returns the localization key, given `(self, id, bag, ...)`. */ name_func?: InventoryPropertyCall /** The method invoked when the entry is clicked. An entry without one is never listed. */ action?: InventoryPropertyCall /** Modes this entry appears in; absent means all. */ mode?: Partial<Record<InventoryMode, true>> /** Predicate deciding the mode, replacing `mode`. */ mode_func?: InventoryPropertyCall /** Containers this entry appears for; absent means all. */ cont?: Partial<Record<InventoryContainer, true>> /** Predicate deciding the container, replacing `cont`. */ cont_func?: InventoryPropertyCall /** * Gate predicates, evaluated as `precondition1`, `precondition2`, ... until one fails. * Numbered rather than a list because that is how vanilla walks them. */ [precondition: `precondition${number}`]: InventoryPropertyCall | undefined } /** @customConstructor UIInventory */ class UIInventory extends CUIScriptWnd { CC: TODO // @generated field — refine type bag_id: TODO // @generated field — refine type blocker_arty: TODO // @generated field — refine type blocker_bkpk: TODO // @generated field — refine type blocker_helm: TODO // @generated field — refine type boost_id: TODO // @generated field — refine type boost_id_inv: TODO // @generated field — refine type box_init_update: TODO // @generated field — refine type equ_background: TODO // @generated field — refine type equ_dialog: TODO // @generated field — refine type flags: TODO // @generated field — refine type found_cell: TODO // @generated field — refine type hint_wnd: TODO // @generated field — refine type hint_wnd_text: TODO // @generated field — refine type holding_ctrl: boolean // @generated field — refine type holding_shift: boolean // @generated field — refine type hover: TODO // @generated field — refine type item_info: TODO // @generated field — refine type item_props: UICellProperties message_box: TODO // @generated field — refine type message_box_up: TODO // @generated field — refine type mode: InventoryMode npc_background: TODO // @generated field — refine type npc_community: TODO // @generated field — refine type npc_dialog: TODO // @generated field — refine type npc_icon: TODO // @generated field — refine type npc_id: TODO // @generated field — refine type npc_is_box: TODO // @generated field — refine type npc_is_companion: TODO // @generated field — refine type npc_is_not_npc: TODO // @generated field — refine type npc_money: TODO // @generated field — refine type npc_name: TODO // @generated field — refine type npc_takeall: TODO // @generated field — refine type npc_trade: TODO // @generated field — refine type npc_trade_buy: TODO // @generated field — refine type npc_trade_cap: TODO // @generated field — refine type npc_trade_price: TODO // @generated field — refine type npc_trade_weight: TODO // @generated field — refine type npc_up_background: TODO // @generated field — refine type npc_up_community: TODO // @generated field — refine type npc_up_dialog: TODO // @generated field — refine type npc_up_icon: TODO // @generated field — refine type npc_up_item: TODO // @generated field — refine type npc_up_money: TODO // @generated field — refine type npc_up_name: TODO // @generated field — refine type npc_up_repair: TODO // @generated field — refine type npc_up_scheme: TODO // @generated field — refine type npc_weight: TODO // @generated field — refine type npc_weight_cap: TODO // @generated field — refine type npc_weight_max: TODO // @generated field — refine type player_background: TODO // @generated field — refine type player_community: TODO // @generated field — refine type player_dialog: TODO // @generated field — refine type player_icon: TODO // @generated field — refine type player_money: TODO // @generated field — refine type player_name: TODO // @generated field — refine type player_putall: TODO // @generated field — refine type player_trade: TODO // @generated field — refine type player_trade_cap: TODO // @generated field — refine type player_trade_price: TODO // @generated field — refine type player_trade_sell: TODO // @generated field — refine type player_trade_weight: TODO // @generated field — refine type player_weight: TODO // @generated field — refine type player_weight_cap: TODO // @generated field — refine type player_weight_max: TODO // @generated field — refine type possible_kind: TODO // @generated field — refine type properties: Record<InventoryPropertyId, InventoryProperty> quick_txt: TODO // @generated field — refine type slot_cell: TODO // @generated field — refine type slot_hl: TODO // @generated field — refine type sort_btn: TODO // @generated field — refine type sort_dialog: TODO // @generated field — refine type sort_num: TODO // @generated field — refine type stat: TODO // @generated field — refine type stat_arty: TODO // @generated field — refine type stat_boost: TODO // @generated field — refine type stat_helm: TODO // @generated field — refine type stat_list: TODO // @generated field — refine type stat_outfit: TODO // @generated field — refine type stats_dialog: TODO // @generated field — refine type tg_hint: TODO // @generated field — refine type tg_hint_step: number // @generated field — refine type tg_info: TODO // @generated field — refine type tg_info_step: number // @generated field — refine type tg_inv: TODO // @generated field — refine type tg_inv_step: number // @generated field — refine type tg_m1: TODO // @generated field — refine type tg_play: TODO // @generated field — refine type tg_stats: TODO // @generated field — refine type tg_stats_step: number // @generated field — refine type trash: TODO // @generated field — refine type update_bags: TODO // @generated field — refine type update_info: boolean // @generated field — refine type update_inv: boolean // @generated field — refine type update_items: TODO // @generated field — refine type upgr: TODO // @generated field — refine type upgr_info: TODO // @generated field — refine type upgr_installed: TODO // @generated field — refine type upgr_last_col: TODO // @generated field — refine type upgr_last_ii: TODO // @generated field — refine type upgr_last_row: TODO // @generated field — refine type upgr_order: TODO // @generated field — refine type upgr_tree: TODO // @generated field — refine type upx: TODO // @generated field — refine type xml: TODO // @generated field — refine type constructor() __finalize(): void InitControls(): void InitCallbacks(): void Reset(obj: CGameObject): void ParseInventory(npc: CGameObject, all?: boolean, id_list?: boolean, ignore_kind?: boolean): Record<number, CGameObject> ParseInventory_Companion(npc: CGameObject, id_list?: boolean, ignore_kind?: boolean): Record<number, CGameObject> IsMode(bag: string, mode: string | undefined, ...args: string[]): boolean Item_On_Mode(name: string, bag: string): boolean CheckItem(obj: CGameObject | number, msg: string): CGameObject | undefined GetPartner(): CGameObject | undefined ValidOwner(obj: CGameObject, state?: boolean): boolean IsInvOwner(npc: CGameObject): boolean InitProperties(obj: CGameObject, bag: InventoryContainer): void Discard(): void Name_Equip(obj: CGameObject, bag: string): string Name_UnEquip(obj: CGameObject, bag: string): string Name_Attach(obj: CGameObject, bag: string, temp?: boolean, slot?: number): string Name_Move(obj: CGameObject, bag: string): string Name_Custom(obj: CGameObject, bag: string, temp: boolean, i: number): boolean Mode_Custom(obj: CGameObject, bag: string, temp: boolean, i: number): boolean Cont_Custom(obj: CGameObject, bag: string, temp: boolean, i: number): boolean DB_Custom(obj: CGameObject, bag: string, temp: boolean, i: number): string Cond_Childs(obj: CGameObject, bag: string): boolean Cond_Use(obj: CGameObject, bag: string): boolean Cond_Move(obj: CGameObject, bag: string, temp?: boolean, bag_to?: string): boolean Cond_Quest(obj: CGameObject, bag: string): boolean Cond_NotQuest(obj: CGameObject, bag: string): boolean Cond_Attach(obj: CGameObject, bag: string, temp?: boolean, slot?: number, wpn?: CGameObject): boolean Cond_Equip(obj: CGameObject, bag: string): boolean Cond_Unload(obj: CGameObject, bag: string): boolean Cond_Detach_Silencer(obj: CGameObject, bag: string): boolean Cond_Detach_Scope(obj: CGameObject, bag: string): boolean Cond_Detach_GL(obj: CGameObject, bag: string): boolean Action_Use(obj: CGameObject, bag: string): void Action_Donate(obj: CGameObject, bag: string): void Action_Move(obj: CGameObject, bag: string): void Action_Move_All(obj: CGameObject, bag: string): void Action_UnEquip(obj: CGameObject, bag: string): void Action_Equip(obj: CGameObject, bag: string): void Action_Attach(obj: CGameObject, bag: string, temp?: boolean, slot?: number, wpn?: CGameObject): void Action_Custom(obj: CGameObject, bag: string, temp: boolean, i: number): void Action_Detach_Silencer(obj: CGameObject, bag: string): void Action_Detach_Scope(obj: CGameObject, bag: string): void Action_Detach_GL(obj: CGameObject, bag: string): void Action_Unload(obj: CGameObject, bag: string): void Action_Drop(obj: CGameObject, bag: string): void Action_Drop_All(obj: CGameObject, bag: string): void /** @param go a game object, or `true` to update instantly */ UpdateInfo(go?: CGameObject | boolean): void UpdateCharacter(): void UpdateWeight(): void UpdateInventories(): void UpdateItems(): void UpdateSlots(): void UpdateBelt(): void UpdateQuick(): void UpdateStats(): void On_Sort(ii: number, ignore?: boolean): void Highlight(sec: Section.Item, bag_id: string): void UnHighlight_All(): void highlight_section_in_slot(sec: Section.Item, bag_id: string): void Picker_Refresh(): void Picker_Toggle(bag: string | undefined, idx?: number, update_mode?: boolean, force_hide?: boolean): void Picker_Ownership(bag: string, idx: number, obj?: CGameObject): LuaMultiReturn<[string, number]> Picker_OwnerCell(cc?: UICellContainer): UICellItem | undefined Picker_IsFocused(): boolean Picker_Update(force_hide?: boolean): boolean IMode_Init(): void IMode_ResetInventories(): void IMode_RefreshInventories(): void LMode_Init(obj: CGameObject): void LMode_ResetInventories(reset_only?: boolean): void LMode_ResetNPCInventory(): void LMode_RefreshInventories(): void LMode_PutAll(): void LMode_TakeAll(): void LMode_TransferInfo(npc: CGameObject): void TMode_Init(npc: CGameObject): void TMode_ResetInventories(only_bags?: boolean): void TMode_RefreshInventories(): void TMode_InitProfile(npc: CGameObject): void TMode_UpdatePrice(ele_txt: CUITextWnd, ele_btn: CUI3tButton, bag: string): void TMode_Sell(): void TMode_Buy(): void RMode_Init(npc: CGameObject): void RMode_InitElements(): void RMode_InitItem(obj: CGameObject, bag: string, idx: number): void RMode_InitItemIcon(obj: CGameObject): void RMode_OnUpgrade(row: number, col: number, ii: UICellItem): void RMode_UpgradeYes(): void RMode_EvaluateUpgr(row: number, col: number, ii: UICellItem, info?: AnyTable): void RMode_EvaluateUpgrAll(): void RMode_OnRepair(): void RMode_RepairYes(): void actor_item_to_ruck(obj: CGameObject): void actor_item_to_slot(obj: CGameObject): void actor_item_to_belt(obj: CGameObject): void actor_on_item_drop(obj: CGameObject): void actor_on_item_use(obj: CGameObject): void actor_on_item_put_in_box(npc: CGameObject, obj: CGameObject): void actor_on_item_take_from_box(npc: CGameObject, obj: CGameObject): void npc_on_item_take(npc: CGameObject, obj: CGameObject): void npc_on_item_drop(npc: CGameObject, obj: CGameObject): void npc_on_use(obj: CGameObject, who: CGameObject): void physic_object_on_use_callback(obj: CGameObject, who: CGameObject): void actor_on_net_destroy(): void On_CC_DragDrop(bag_from: string, idx_from: number): void On_CC_Hover(bag: string, idx: number): void On_CC_Mouse1(bag: string, idx: number): void On_CC_Mouse1_DB(bag: string, idx: number): boolean On_CC_Mouse2(bag: string, idx: number): void On_CC_Add(bag: string, idx: number, on_area: boolean): void On_CC_Remove(bag: string, idx: number, on_area: boolean): void On_CC_Trasfer(bag_from: string, bag_to: string, idx_from: number, idx_to: number, obj: CGameObject | string): void On_Item_Exchange(npc_from: CGameObject, npc_to: CGameObject, obj: CGameObject): void On_Item_Update(): void PlaySND(snd: sound_object, vol?: number): void SetHint(text: string, pos?: vector2): void Update(): void OnKeyboard(dik: number, keyboard_action: number): boolean Close(): void Print(mark: string | undefined, fmt: string, ...args: unknown[]): void } namespace ui_inventory { /** Anomaly `class "UIInventory"` is also reachable on the `ui_inventory` script namespace; typed as * the instance so its methods can be captured/overridden (`ui_inventory.UIInventory.Method = ...`). */ export const UIInventory: UIInventory } }