Update 2025.08.17 Events, animations and more


This is a very big and important update that brings the system closer to a more stable state.

Firstly, all component constructor arguments have been removed. Instead, each element accepts a structure with element parameters. There are basic parameters in LuiBase + additional ones for each element. This greatly improves code readability, as there will no longer be any “empty” arguments at the beginning of each element. You only write the parameters you need. For example: new LuiButton({text: “Login”, width: 150, color: c_red}). In addition to this, all the corresponding methods have been added to the parameters so that they can be called in chain mode. For example: new LuiButton().setText(“Login”).setWidth(150).setColor(c_red).

Secondly, an event listener system has been added. Each element can have different logic added to it depending on the event that occurs, whether it be a mouse hover, click, or drag. A complete list of events can be found in the “LuiEvents” script. Events are already used by default in each component to designate their logic. But you can stack these events on top of each other and they will be executed one after another. Due to this change, the old logic with the “callback” method has been removed from all elements.

Thirdly, animation support has been added. Currently, it is being designed within components and can now be seen in the following components: LuiToggleSwitch, LuiProgressBar, LuiProgressRing, LuiSlider. It is called using the animate(target_element, property, end_value, duration, easing_func) method from LuiMain. The system also initializes all possible available easing functions in global.Ease.

Almost all elements and methods have been renamed for logical designation. The description of errors and warnings when designing your UI has also been improved. You can enable or disable them by changing the macro mode LUI_LOG_ERROR_MODE.

Full changelog 2025.08.17:

  • ADDED: Component animation (animate method in LuiMain)
  • ADDED: Event model: addEvent(eventType, callback) All possible events can be viewed in the “LuiEvents” script
  • ADDED: New LuiSurface element - Renders game maker surface
  • ADDED: New LuiToggleSwitch element - switch similar to LuiCheckbox, moves horizontally on/off
  • ADDED: New element LuiToggleButton - switch like LuiButton, but has the property of being on or off, glows with accent color when on
  • ADDED: New LuiWindow element - a movable panel on the screen with a title and “minimize” and “close” buttons
  • ADDED: getContent method to get the element’s content array
  • ADDED: view_region struct with coordinates of the visible area of the element for optimization
  • ADDED: Added the ability to specify the displayed text for LuiCheckbox, which is a clickable area. Also added the setText method for LuiCheckbox
  • ADDED: can_drag flag that determines whether to trigger DRAGGING, DRAG_START, DRAG_END events on an element with a mouse/finger or not
  • ADDED: luiRescale methods for adjusting the UI size to the window/screen size, luiNextDebugMode(), luiToggleDebugGrid()
  • ADDED: setData and getData methods for storing, retrieving, and modifying user data within elements
  • ADDED: Methods to all possible elements to support chained parameter specification instead of element parameters
  • ADDED: LuiSlider: Thickness setting
  • ADDED: LuiButton, LuiTab, LuiComboBoxItem: Improved icon placement before text
  • ADDED: Auxiliary method setPositionAbsolute(), equivalent to calling setPositionType(flexpanel_position_type.absolute)
  • ADDED: LuiInput: Parameters for excluding characters, for allowed characters. Letter, number, and password input modes
  • ADDED: Optional indentation from the container for LuiTabs tabs
  • ADDED: LuiProgressBar, LuiProgressRing, LuiSlider - ability to set custom colors
  • ADDED: setMouseIgnoreAll method to ignore the mouse for all nested elements
  • CHANGED: All optional arguments have been removed from all components and replaced with a structure with parameters. Available parameters have been added to the description of each component.
  • CHANGED: Renamed LuiSprite > LuiImage
  • CHANGED: Renamed LuiSpriteButton > LuiImageButton
  • CHANGED: Renamed LuiTextbox > LuiInput
  • CHANGED: Renamed LuiTabGroup > LuiTabs
  • CHANGED: Renamed LuiDropDown > LuiComboBox
  • CHANGED: Renamed LuiDropDownItem > LuiComboBoxItem
  • CHANGED: Renamed LuiAbsContainer > LuiAbsoluteContainer
  • CHANGED: Renamed LuiBlockArea > LuiBox
  • CHANGED: Renamed LuiFlexColumn > LuiColumn
  • CHANGED: Renamed LuiFlexRow > LuiRow
  • CHANGED: Renamed textbox_cursor > input_cursor
  • CHANGED: Renamed textbox_password > input_password
  • CHANGED: Renamed sprite_textbox > sprite_input
  • CHANGED: Renamed sprite_textbox_border > sprite_input_border
  • CHANGED: Renamed setSpriteDropdownArrow > setSpriteComboBoxArrow
  • CHANGED: Renamed sprite_dropdown to sprite_combobox
  • CHANGED: Renamed sprite_dropdown_border to sprite_combobox_border
  • CHANGED: Renamed sprite_dropdown_item to sprite_combobox_item
  • CHANGED: Renamed sprite_dropdown_item_border > sprite_combobox_item_border
  • CHANGED: Renamed sprite_dropdown_arrow > sprite_combobox_arrow
  • CHANGED: Renamed setSpriteTabGroup > setSpriteTabs
  • CHANGED: Renamed sprite_tabgroup > sprite_tabs
  • CHANGED: Renamed sprite_tabgroup_border > sprite_tabs_border
  • CHANGED: Renamed setFlexPadding, setFlexGap, setFlexBorder > setPadding, setGap, setBorder
  • CHANGED: Renamed showLuiMessage > luiShowMessage
  • CHANGED: Renamed setBinding > bindVariable
  • CHANGED: Renamed script “Additional” > “LuiAdditional”
  • CHANGED: setPos…, setSize… now do not change the position/size if the user tries to specify the same position/size
  • CHANGED: Changed color logic (Now uses primary, secondary, background, accent, and border colors for all elements)
  • CHANGED: Element depth system (Now a more accurate and precise system for distributing element depth)
  • CHANGED: Now the system indicates the incorrect number of ratios when adding elements, but continues to add, filling or trimming excess elements automatically
  • FIXED: LuiDropDown: Does not close when clicking on another element or empty space
  • FIXED: LuiDropDown: LuiDropDownPanel may throw an error when deleting the main UI after deletion
  • FIXED: LuiDropDownPanel: Incorrect drop-down panel size is set for buttons
  • FIXED: setFlexPadding, setFlexGap, setFlexBorder do not work properly
  • FIXED: LuiTabGroup When moving a tab, the render does not keep up with the main panel
  • FIXED: When checking isInteractingMouse, invisible LuiFlexRow and others are taken into account…
  • FIXED: LuiScrollPanel scrolls if there is something on top of it
  • FIXED: Memory leaks fixed
  • FIXED: Performance improved
  • REMOVED: All callbacks from components, the setCallback() method, and the macro LUI_DEBUG_CALLBACK (the callback has been replaced with the events listener system)
  • REMOVED: The pos_x and pos_y variables (element initialization logic has been fixed)

Get Lime.UI [alpha]

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.