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.
406 lines (393 loc) • 20.9 kB
TypeScript
/** @noSelfInFile */
import type { Section } from 'anomaly-packer'
declare global {
namespace utils_ui {
// Descriptor for a single item stat, as built by prepare_stats_table().
export interface StatDescriptor {
index: number
typ: string
name: string
icon_p: string
icon_n: string
track: boolean
magnitude: number
unit: string
compare?: boolean
sign?: boolean
show_always?: boolean
condition?: boolean
section?: Section.Item
sign_inverse?: boolean
sign_inverse_txt?: boolean
// { file, func, ...args } used to compute the value via a global function.
value_functor?: string[]
}
export const stats_table: Record<string, Record<string, StatDescriptor>>
export function add_stats_table(k1: string, k2: string, v: StatDescriptor): void
export function get_stats_func_value(obj: CGameObject, sec: Section.Item, file: string, func: string, ...args: unknown[]): number | undefined
export function get_stats_string_value(obj: CGameObject, sec: Section.Item, gr: string | StatDescriptor, stat: string, to_text: boolean): LuaMultiReturn<[string | number, boolean]>
export function get_stats_table(sec: Section.Item): Record<string, StatDescriptor> | undefined
export function get_stats_value(obj: CGameObject, sec: Section.Item, gr: string | StatDescriptor, stat: string): number | false
export function get_stats_xml(handler: CUIWindow, obj: CGameObject, sec: Section.Item, gr: string | StatDescriptor, stat: string): CUIStatic | undefined
export function get_time(): number
export function get_utils_xml(): CScriptXmlInit
export function main_menu_off(): void
export function main_menu_on(): void
export function on_game_start(): void
export function prepare_stats_table(): void
export function prop_accuracry(obj: CGameObject, sec: Section.Item): number
export function prop_condition(obj: CGameObject, sec: Section.Item): number
export function prop_damage(obj: CGameObject, sec: Section.Item): number
export function prop_handling(obj: CGameObject, sec: Section.Item): number
export function prop_rpm(obj: CGameObject, sec: Section.Item): number
export function set_item_order(): void
export function sort_by_index(t: AnyTable, a: number, b: number): boolean
export function sort_by_kind(t: AnyTable, a: number, b: number): boolean
export function sort_by_props(t: AnyTable, a: number, b: number): boolean
export function sort_by_size(t: AnyTable, a: number, b: number): boolean
export function sort_by_sizekind(t: AnyTable, a: number, b: number): boolean
export function sort_info(asec: string, bsec: string): void
}
/** @customConstructor UICellContainer */
class UICellContainer {
ID: TODO // @generated field — refine type
can_select: boolean // @generated field — refine type
cell: TODO // @generated field — refine type
cell_vis_offset: number // @generated field — refine type
col_end: TODO // @generated field — refine type
cols: TODO // @generated field — refine type
db: TODO // @generated field — refine type
disable_bar: boolean // @generated field — refine type
disable_callback: TODO // @generated field — refine type
disable_drag: boolean // @generated field — refine type
disable_highlight: boolean // @generated field — refine type
disable_info: boolean // @generated field — refine type
disable_scroll: TODO // @generated field — refine type
disable_scroll_dragdrop: boolean // @generated field — refine type
disable_stack: boolean // @generated field — refine type
drag_area: TODO // @generated field — refine type
drag_down: TODO // @generated field — refine type
drag_up: TODO // @generated field — refine type
grid: TODO // @generated field — refine type
grid_line: TODO // @generated field — refine type
grid_size: TODO // @generated field — refine type
hold: TODO // @generated field — refine type
hover: TODO // @generated field — refine type
idxer: TODO // @generated field — refine type
ignore_scroll: boolean // @generated field — refine type
indx_id: TODO // @generated field — refine type
indx_sec: TODO // @generated field — refine type
line: TODO // @generated field — refine type
line_cnt: number // @generated field — refine type
manual: TODO // @generated field — refine type
owner: TODO // @generated field — refine type
pad: TODO // @generated field — refine type
path: TODO // @generated field — refine type
pd: TODO // @generated field — refine type
prof: TODO // @generated field — refine type
rKind: TODO // @generated field — refine type
row_end: TODO // @generated field — refine type
scolling_power: TODO // @generated field — refine type
scolling_power_up: number // @generated field — refine type
scroll: TODO // @generated field — refine type
scroll_pause: boolean // @generated field — refine type
scroll_pos: TODO // @generated field — refine type
scroll_tg: TODO // @generated field — refine type
selected: TODO // @generated field — refine type
showcase: boolean // @generated field — refine type
sort_method: string // @generated field — refine type
st: TODO // @generated field — refine type
stack_all: boolean // @generated field — refine type
use_frame: TODO // @generated field — refine type
xml: TODO // @generated field — refine type
constructor(id: string, owner: CUIScriptWnd, path: string, prof: string, ele_base: CUIWindow, manual: boolean, use_frame: boolean)
InitControls(owner: CUIScriptWnd, prof: string, ele_base: CUIWindow): void
Reinit(t?: AnyTable, tf?: AnyTable): void
AddIndex(id: number, sec: Section.Item | undefined, indx: number): void
RemoveIndex(id: number, sec?: Section.Item, indx?: number): void
GetCell_ID(id: number, only_indx?: boolean): number | UICellItem | undefined
GetCell_SEC(sec: Section.Item): UICellItem | false
GetCell_Selected(only_obj?: boolean): CGameObject | UICellItem | undefined
GetCell_Focused(only_cell?: boolean): UICellItem | LuaMultiReturn<[string, number, CGameObject | undefined]> | undefined
GetObj(idx: number): CGameObject | undefined
GetID(obj: CGameObject | undefined, sec: Section.Item, create?: boolean): number | undefined
AddItemInCell(obj: CGameObject | undefined, sec: Section.Item, indx: number, area?: { y: number; x: number; w: number; h: number }): boolean
AddItem(obj?: CGameObject, sec?: Section.Item, info?: unknown): number | undefined
AddItemManual(obj?: CGameObject, sec?: Section.Item, indx?: number): boolean | undefined
RemoveItem(obj?: CGameObject, sec?: Section.Item): void
RemoveItem_byID(id: number): void
RemoveItemManual(indx: number): void
TransferItem(cont_to: UICellContainer, obj?: CGameObject, sec?: Section.Item): UICellItem | undefined
UpdateItem(obj?: CGameObject, sec?: Section.Item): void
FindFreeCell(obj?: CGameObject, sec?: Section.Item): { y: number; x: number; w: number; h: number } | false
IsFreeRoom(r: number, c: number, w: number, h: number): boolean
TakeRoom(r: number, c: number, w: number, h: number): { y: number; x: number; w: number; h: number }
FreeRoom(r: number, c: number, w: number, h: number): void
FindSimilar(obj?: CGameObject, sec?: Section.Item): UICellItem | false
Grow(): void
IsTradable(obj: CGameObject): boolean | undefined
GetCellCost(ci: UICellItem): number
On_Select(idx?: number | false): void
On_Drag(idx: number | false, tg: number, set?: boolean): void
On_Hover(idx: number | false): void
On_Mouse1(idx: number): void
On_Mouse1_DB(idx: number): unknown
On_Mouse2(idx: number): void
On_Scroll(): void
Update(item_info?: UIInfoItem, no_info?: boolean, hide?: boolean): boolean
OnKeyboard(dik: number, keyboard_action: number): void
Callback(func: string, ...args: unknown[]): unknown
Reset(): void
IsCellVisible(ci: UICellItem): boolean
Scroll_Reinit(keep_pos?: boolean): void
Scroll_SetPos(Y?: number, force?: boolean): void
Scroll_GetHeight(num?: number, ele?: boolean): number
Scroll_DragDrop_Ctrl(): boolean
Scroll_Pad_Ctrl(update?: boolean): void
GetSortMethod(): (this: void, t: AnyTable, a: number, b: number) => boolean
AdjustWnd(x?: number, y?: number, w?: number, h?: number): void
AdjustHeightToCell(): void
AdjustWidthToCell(): void
SetBackground(path: string, clr: number): void
SetGridSpecs(size?: number, line?: number): void
Show(state: boolean): void
IsShown(): boolean
EnableScrolling(state: boolean): void
IsCursorOverWindow(): boolean
Print(mark: string | undefined, fmt: string, ...args: unknown[]): void
}
/** @customConstructor UICellItem */
class UICellItem {
/** Running height of the list as rows are added, in UI units. */
H: number
/** Running width of the list, grown by `AddItemToList` to fit the widest row. */
W: number
area: TODO // @generated field — refine type
bar: TODO // @generated field — refine type
childs: TODO // @generated field — refine type
cnt: TODO // @generated field — refine type
ctxt: TODO // @generated field — refine type
ctxts: TODO // @generated field — refine type
ico_gl: TODO // @generated field — refine type
ico_scope: TODO // @generated field — refine type
ico_sil: TODO // @generated field — refine type
layer: TODO // @generated field — refine type
upgr: TODO // @generated field — refine type
constructor(container: UICellContainer, st: CUIStatic | { path: string; base: CUIStatic }, indx: number, manual: boolean)
// Instance fields set in __init/InitControls (utils_ui.script). The skeleton previously listed
// only methods; these are the `self.*` data members the class actually carries.
container: UICellContainer
/** Container path this cell's xml nodes hang off of. */
path: string
indx: number
/** `manual` placement disables some behaviour; `false` for object-attached cells. */
manual: boolean
/** `[0]` attached to object / `[1]` attached to section (showcase) / `[2]` showcase, no room adjust. */
showcase: number
/** Cell xml node name: `"cell"`, or `"cell_<indx>"` in manual placement. */
cx: string
grid_size: number
grid_line: number
/** Free-form table for custom per-cell info. */
flags: AnyTable
disable_bar: boolean
/** Highlight static (`:highlight`). */
hl: CUIStatic
/** Main cell static. */
cell: CUIStatic
/** Shadow static (`:pic` over `cell`). */
shadow: CUIStatic
/** Icon static (`:pic`). */
ico: CUIStatic
/** Set for free cells built from a `{ path, base }` descriptor. */
st?: CUIStatic
/** Game-object id once the cell is bound to an object; `undefined` for showcase cells. */
ID?: number
/** Section of the bound object/showcase; `undefined` when reset. */
section?: string
InitControls(path: string, st: CUIStatic | { path: string; base: CUIStatic }): void
// `obj` is a game object, or its section string for showcase cells.
Set(obj: CGameObject | string, area?: { x: number; y: number; w: number; h: number }): boolean
Update(obj?: CGameObject): boolean
Add_Icon(sec: Section.Item, w: number, h: number): void
Add_Shadow(sec: Section.Item, w: number, h: number): void
Add_Layers(xml: CScriptXmlInit, obj: CGameObject, sec: Section.Item, clsid: number): void
Add_ProgressBar(xml: CScriptXmlInit, obj: CGameObject, sec: Section.Item, clsid: number): void
Add_Counter(xml: CScriptXmlInit, obj: CGameObject, sec: Section.Item): void
Add_Upgrade(xml: CScriptXmlInit, obj: CGameObject, sec: Section.Item): void
Add_Attachements(xml: CScriptXmlInit, obj: CGameObject, sec: Section.Item, clsid: number): void
Add_CustomText(txt: string, align_h?: number, align_v?: number, clr?: number, fnt?: string): void
Create_Layer(ele: CUIStatic, base: CUIStatic, sec_m: string, sec_l: string, str_x?: string, str_y?: string, str_scale?: string): void
Colorize(clr_id: string): void
Highlight(state: boolean, clr_id?: string, main_clr?: boolean): void
Check_TradeMode(obj: CGameObject, sec: Section.Item): boolean
GetCost(): void
AddChild(obj: CGameObject): boolean
PopChild(obj?: CGameObject, id?: number): void
HasChild(obj?: CGameObject, id?: number): number | boolean | undefined
CountChilds(): number
ResetToChild(): boolean
Reset(): void
Show(state: boolean, obj?: CGameObject): void
IsShown(): boolean
IsCursorOverWindow(): boolean
GetXML(): CScriptXmlInit
Print(mark: string | undefined, fmt: string, ...args: unknown[]): void
}
/**
* The arguments a context menu entry's callback is invoked with: the id of the item the
* menu was opened on, the container it sits in, and whatever extra values the property's
* `action` tuple carried (its own method name included — vanilla ignores it).
*/
type CellPropertyParams = [id: number, bag: string, ...args: unknown[]]
/** @customConstructor UICellProperties */
class UICellProperties extends CUIScriptWnd {
/** Running height of the list as rows are added, in UI units. */
H: number
H_L: number // @generated field — refine type
PDH: number // @generated field — refine type
PDW: number // @generated field — refine type
/** Running width of the list, grown by `AddItemToList` to fit the widest row. */
W: number
W_L: number // @generated field — refine type
/** Game time an action was taken, or `false` before any; used to swallow the click. */
action_moment: number | false
/** Row text size read from `properties:file_item:fn` in xml. */
file_item_fn_sz: vector2
/** Row size read from `properties:file_item:main` in xml. */
file_item_main_sz: vector2
/** Background static the frame, list and highlight are attached to. */
form: CUIStatic
frame: CUIFrameWindow
/** Hover strip moved over the row under the cursor by `Update`. */
highlight: CUIStatic
list_box: CUIListBox
/** The window whose method an entry's `func` names — the inventory screen in practice. */
owner: CUIScriptWnd
constructor(owner: CUIScriptWnd)
__finalize(): void
InitControls(): void
Update(): void
Reset(
pos_override: vector2 | undefined,
action_list: string[],
name_list: string[],
params_list: CellPropertyParams[],
): void
FillList(action_list: string[], name_list: string[], params_list: CellPropertyParams[]): void
OnListItemClicked(): void
OnListItemDbClicked(): void
InitCallBacks(): void
AddItemToList(index: number, str_id: string, func: string, params?: CellPropertyParams): void
OnKeyboard(dik: number, keyboard_action: number): boolean
OnHide(): void
}
/** @customConstructor UICellProperties_item */
class UICellProperties_item extends CUIListBoxItem {
/** The row's text field, i.e. the `GetTextItem()` the constructor caches. */
textControl: CUITextWnd
constructor()
__finalize(): void
}
/** @customConstructor UIHint */
class UIHint {
delay: TODO // @generated field — refine type
dialog: TODO // @generated field — refine type
dialog_text: TODO // @generated field — refine type
owner: TODO // @generated field — refine type
path: TODO // @generated field — refine type
timer: TODO // @generated field — refine type
txt: TODO // @generated field — refine type
constructor(owner: CUIScriptWnd, delay?: number, path?: string)
InitControls(): void
Update(txt: string): void
Pass(txt: string): boolean
Show(state: boolean): void
}
/** @customConstructor UIInfoItem */
class UIInfoItem {
ammo: TODO // @generated field — refine type
ammo_cap: TODO // @generated field — refine type
ammo_ico: TODO // @generated field — refine type
ammo_ico_temp: TODO // @generated field — refine type
ammo_parse: TODO // @generated field — refine type
ammo_txt: TODO // @generated field — refine type
can_compare: boolean // @generated field — refine type
delay: TODO // @generated field — refine type
desc: TODO // @generated field — refine type
dialog: TODO // @generated field — refine type
frame: CUIFrameWindow
id: TODO // @generated field — refine type
name: TODO // @generated field — refine type
note: TODO // @generated field — refine type
owner: TODO // @generated field — refine type
section: TODO // @generated field — refine type
stats: TODO // @generated field — refine type
stats_dialog: TODO // @generated field — refine type
timer: TODO // @generated field — refine type
value: TODO // @generated field — refine type
weight: TODO // @generated field — refine type
constructor(owner: CUIScriptWnd, delay?: number)
InitControls(): void
Update(obj?: CGameObject, sec?: Section.Item, flags?: AnyTable): void
Pass(obj?: CGameObject, sec?: Section.Item): boolean
GetType(sec: Section.Item): string
GetUpgrades(obj?: CGameObject): unknown
Sync_Finale(cond: boolean, ele_syncer: CUIWindow | undefined, ele_resizer: CUIWindow, ele_adapter: CUIWindow, offset: number): boolean
Sync_Y(parent: CUIWindow | undefined, child: CUIWindow, offset?: number): number
Sync_H(parent: CUIWindow, child: CUIWindow, offset: number): number
Reset_Y(ele: CUIWindow): void
Reset(): void
IsShown(): boolean
Show(state: boolean): void
}
/** @customConstructor UIInfoUpgr */
class UIInfoUpgr {
cost: TODO // @generated field — refine type
delay: TODO // @generated field — refine type
desc: TODO // @generated field — refine type
dialog: TODO // @generated field — refine type
frame: CUIFrameWindow
name: TODO // @generated field — refine type
owner: TODO // @generated field — refine type
prereq: TODO // @generated field — refine type
prop: TODO // @generated field — refine type
prop_frame: TODO // @generated field — refine type
prop_h: TODO // @generated field — refine type
section: TODO // @generated field — refine type
timer: TODO // @generated field — refine type
constructor(owner: CUIScriptWnd, delay?: number)
InitControls(): void
Update(upgr: string, prereq: string, installed: boolean): void
Pass(sec: Section.Item): boolean
ExtractFunctor(sec: Section.Item, param: string, ...args: unknown[]): unknown
Sync_Y(parent: CUIWindow | undefined, child: CUIWindow, offset?: number): number
Sync_H(parent: CUIWindow, child: CUIWindow, offset: number): number
Reset(): void
IsShown(): boolean
Show(state: boolean): void
}
namespace utils_ui {
/** Anomaly `class "UICellContainer"` is also reachable on the `utils_ui` script namespace; typed as
* the instance so its methods can be captured/overridden (`utils_ui.UICellContainer.Method = ...`). */
export const UICellContainer: UICellContainer
/** Anomaly `class "UICellItem"` is also reachable on the `utils_ui` script namespace; typed as
* the instance so its methods can be captured/overridden (`utils_ui.UICellItem.Method = ...`). */
export const UICellItem: UICellItem
/** Anomaly `class "UICellProperties"` is also reachable on the `utils_ui` script namespace; typed as
* the instance so its methods can be captured/overridden (`utils_ui.UICellProperties.Method = ...`). */
export const UICellProperties: UICellProperties
/** Anomaly `class "UICellProperties_item"` is also reachable on the `utils_ui` script namespace; typed as
* the instance so its methods can be captured/overridden (`utils_ui.UICellProperties_item.Method = ...`). */
export const UICellProperties_item: UICellProperties_item
/** Anomaly `class "UIHint"` is also reachable on the `utils_ui` script namespace; typed as
* the instance so its methods can be captured/overridden (`utils_ui.UIHint.Method = ...`). */
export const UIHint: UIHint
/** Anomaly `class "UIInfoItem"` is also reachable on the `utils_ui` script namespace; typed as
* the instance so its methods can be captured/overridden (`utils_ui.UIInfoItem.Method = ...`). */
export const UIInfoItem: UIInfoItem
/** Anomaly `class "UIInfoUpgr"` is also reachable on the `utils_ui` script namespace; typed as
* the instance so its methods can be captured/overridden (`utils_ui.UIInfoUpgr.Method = ...`). */
export const UIInfoUpgr: UIInfoUpgr
}
}