-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
51622b6
commit 2eaf4b8
Showing
1 changed file
with
143 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,143 @@ | ||
---@meta | ||
|
||
---@class CallbackRequest | ||
---@field menu { id: string; resource: string; title: string; subtitle?: string } | ||
---@field selected? string | ||
---@field checked? boolean | ||
---@field current? number | ||
|
||
---@alias BadgeName | ||
--- | 'card_suit_clubs' | ||
--- | 'card_suit_diamonds' | ||
--- | 'card_suit_hearts' | ||
--- | 'card_suit_spades' | ||
--- | 'medal_bronze' | ||
--- | 'medal_gold' | ||
--- | 'medal_silver' | ||
--- | 'mp_alerttriangle' | ||
--- | 'mp_hostcrown' | ||
--- | 'mp_medal_bronze' | ||
--- | 'mp_medal_gold' | ||
--- | 'mp_medal_silver' | ||
--- | 'mp_specitem_cash' | ||
--- | 'mp_specitem_coke' | ||
--- | 'mp_specitem_heroin' | ||
--- | 'mp_specitem_meth' | ||
--- | 'mp_specitem_weed' | ||
--- | 'shop_ammo_icon' | ||
--- | 'shop_armour_icon' | ||
--- | 'shop_art_icon' | ||
--- | 'shop_barber_icon' | ||
--- | 'shop_chips' | ||
--- | 'shop_clothing_icon' | ||
--- | 'shop_franklin_icon' | ||
--- | 'shop_garage_bike_icon' | ||
--- | 'shop_garage_icon' | ||
--- | 'shop_gunclub_icon' | ||
--- | 'shop_health_icon' | ||
--- | 'shop_lock' | ||
--- | 'shop_lock_arena' | ||
--- | 'shop_makeup_icon' | ||
--- | 'shop_mask_icon' | ||
--- | 'shop_michael_icon' | ||
--- | 'shop_new_star' | ||
--- | 'shop_tattoos_icon' | ||
--- | 'shop_tick_icon' | ||
--- | 'shop_trevor_icon' | ||
|
||
---@alias MenuType 'button' | 'checkbox' | 'separator' | 'list' | 'slider' | ||
|
||
---@class MenuComponentData | ||
---@field id string | ||
---@field type MenuType | ||
---@field label string | ||
---@field description? string | ||
---@field badges? { left?: BadgeName; right?: BadgeName } | ||
---@field values? string[] | ||
---@field checked? boolean | ||
---@field current? number | ||
---@field iconStyle? 'cross' | 'tick' | ||
---@field max? number | ||
---@field min? number | ||
|
||
---@class MenuComponentBase:MenuComponentData | ||
---@field __events table<string, fun(...: any)[]> | ||
---@field on fun(self: self, event: string, func: fun(...: any)): fun() | ||
---@field trigger fun(self: self, event: string, ...: any) | ||
---@field set fun(self: self, key: string, value: any) | ||
---@field OnSelect fun(self: self, func: fun(component: MenuComponent)): fun() | ||
---@field OnClick fun(self: self, func: fun(component: MenuComponent)): fun() | ||
---@field SetLabel fun(self: self, label: string) | ||
---@field SetDescription fun(self: self, description: string) | ||
---@field SetBadges fun(self: self, badges: { left?: BadgeName; right?: BadgeName }) | ||
---@field toJSON fun(self: self): MenuComponentData | ||
|
||
---@class CheckboxComponent:MenuComponentBase | ||
---@field type 'checkbox' | ||
---@field checked boolean | ||
---@field iconStyle? 'cross' | 'tick' | ||
---@field OnClick nil | ||
---@field OnCheck fun(self: self, func: fun(checked: boolean)): fun() | ||
---@field SetChecked fun(self: self, checked: boolean) | ||
---@field SetIconStyle fun(self: self, iconStyle: 'cross' | 'tick') | ||
|
||
---@class ListComponent:MenuComponentBase | ||
---@field type 'list' | ||
---@field values string[] | ||
---@field current number | ||
---@field OnChange fun(self: self, func: fun(current: number, currentValue: string)): fun() | ||
---@field SetValues fun(self: self, values: string[]) | ||
---@field SetCurrent fun(self: self, current: number) | ||
|
||
---@class SliderComponent:MenuComponentBase | ||
---@field type 'slider' | ||
---@field current number | ||
---@field max number | ||
---@field min? number | ||
---@field step? number | ||
---@field OnChange fun(self: self, func: fun(current: number)): fun() | ||
---@field SetCurrent fun(self: self, current: number) | ||
---@field SetMax fun(self: self, max: number) | ||
---@field SetMin fun(self: self, min: number) | ||
---@field SetStep fun(self: self, step: number) | ||
|
||
---@class MenuComponent:MenuComponentBase, CheckboxComponent, ListComponent, SliderComponent | ||
|
||
---@class MenuData | ||
---@field id string | ||
---@field resource string | ||
---@field title string | ||
---@field subtitle? string | ||
|
||
---@class Menu:MenuData | ||
---@field __components MenuComponent[] | ||
---@field set fun(self: self, key: string, value: any) | ||
---@field SetTitle fun(self: self, title: string) | ||
---@field SetSubtitle fun(self: self, subtitle: string) | ||
---@field addComponent fun(self: self, type: MenuType, label: string, description?: string, badges?: { left?: BadgeName; right?: BadgeName }, values?: string[], checked?: boolean, current?: number, iconStyle?: 'cross' | 'tick', max?: number, min?: number, step?: number): MenuComponent | ||
---@field AddButton fun(self: self, label: string, description?: string, badges?: { left?: BadgeName; right?: BadgeName }): MenuComponentBase | ||
---@field AddSubmenu fun(self: self, submenu: Menu | { id: string } | string, label: string, description?: string, badges?: { left?: BadgeName; right?: BadgeName }): MenuComponentBase | ||
---@field AddSeparator fun(self: self, label: string, badges?: { left?: BadgeName; right?: BadgeName }): MenuComponentBase | ||
---@field AddCheckbox fun(self: self, label: string, description?: string, badges?: { left?: BadgeName; right?: BadgeName }, checked?: boolean, iconStyle?: 'cross' | 'tick'): CheckboxComponent | ||
---@field AddList fun(self: self, label: string, description?: string, badges?: { left?: BadgeName; right?: BadgeName }, values: string[], current: number): ListComponent | ||
---@field AddSlider fun(self: self, label: string, description?: string, badges?: { left?: BadgeName; right?: BadgeName }, max: number, min?: number, step?: number, current?: number): SliderComponent | ||
---@field Open fun(self: self) | ||
---@field Close fun(self: self) | ||
---@field IsOpen fun(self: self): boolean | ||
---@field toJSON fun(self: self): MenuData | ||
---@field getComponentById fun(self: self, id: string): MenuComponent? | ||
---@field componentsToJSON fun(self: self): MenuComponentData[] | ||
|
||
---@class MenuClass | ||
---@field __cached Menu[] | ||
---@field current? string | ||
---@field opened string[] | ||
---@field Create fun(self: self, title: string, subtitle?: string): Menu | ||
---@field GetById fun(self: self, id: string): Menu? | ||
---@field GetOpened fun(self: self): Menu? | ||
---@field Open fun(self: self, menu: Menu) | ||
---@field Close fun(self: self) | ||
---@field CloseAll fun(self: self) | ||
|
||
---@class MenuClass | ||
Menu = {}; |