Skip to content

Releases: Insality/druid

Defold Druid v0.6.0

05 Apr 21:16
c34ce71
Compare
Choose a tag to compare

Druid 0.6.0:

Hey! Are you tired from Druid updates? (It's a joke)

Finally, got a time to release component to process huge amount of data. So introducing: DataList component. It can help solve your problem with GUI nodes limit reached and helps with scroll optimization. Give feedback about it!

The next important stuff is EmmyLua docs. I'm implemented EmmyLua doc generator from LuaDoc and Protofiles, so now you can use EmmyLua annotations inside your IDE instead of website API looking or source code scanning.

Also the Druid examples is reworked, so each example will be in separate collection. Now it's become a much easier to learn Druid via examples. A lot of stuff in progress now, but you already can see on it!

Input priority got reworked too. Now instead of two input stacks: usual and high, Druid use simple input priority value.

And I should note here are several breaking changes, take a look in changelogs.

Wanna something more? Add an issues!
Have a good day.

Changelog 0.6.0

  • #43 Add DataList Druid extended component. Component used to manage huge amount of data to make stuff like infinity scroll.
    • This versions is first basic implementation. But it should be enough for almost all basic stuff.
    • Create Data List with druid:new_data_list(scroll, grid, create_function).
      • scroll - already created Scroll component
      • grid - already created StaticGrid or DynamicGrid component
      • create_function - your function to create node instances. This callback have next parameters: fun(self, data, index, data_list)
        • self - Script/Druid context
        • data- your element data
        • index - element index
        • data_list - current DataList component
    • Create function should return root node and optionaly, Druid component. It's required to manage create/remove lifecycle
    • Set data with data_list:set_data({...})
    • In current version there is no add/remove functions
  • Add EmmyLua annotations (ta-daaa). See how to use it FAQ!
  • Add context argument to Druid Event. You can pass this argument to forward it first in your callbacks (for example - object context)
  • Add SHIFT_POLICY for Static and Dynamic Grids. It mean how nodes will be shifted if you append data between nodes. There are const.SHIFT.RIGHT, const.SHIFT.LEFT and const.SHIFT.NO_SHIFT.
    • [BREAKING] Please check your StaticGrid:remove and DynamicGrid:remove functions
  • #102 [BREAKING] Removed component:increase_input_priority component function. Use component:set_input_priority function instead. The bigger priority value processed first. The value 10 is default for Druid components, the 100 value is maximum priority for acquire input in drag and input components
    • Add constants for priorities: const.PRIORITY_INPUT, const.PRIORITY_INPUT_HIGH, const.PRIORITY_INPUT_MAX.
    • [BREAKING] If you use in you custom components interest: component.ON_INPUT_HIGH you should replace it with component.ON_INPUT and add const.PRIORITY_INPUT_HIGH as third param. For example:
      before:
       local Drag = component.create("drag", { component.ON_INPUT_HIGH })
      after:
       local Drag = component.create("drag", { component.ON_INPUT }, const.PRIORITY_INPUT_HIGH)
  • Lang text now can be initialized without default locale id
  • Input component: rename field selected to is_selected (according to the docs)
  • #92 Setup repo for CI and unit tests. (Yea, successful build and tests badges!)
  • #86 Fix a lot of event triggers on scroll inertia moving
  • #101 Fix scroll to other node instead of swipe direction with scroll's points of interest (without inert settings)
  • #103 Add helper.centate_nodes function. It can horizontal align several Box and Text nodes
  • #105 Add Input:select and Input:unselect function.
  • #106 Add Input.style.IS_UNSELECT_ON_RESELECT style param. If true, it will be unselect input on click on input box, not only on outside click.
  • #108 Add component interests const to component.lua
  • #116 You can pass Text component in Input component instead of text node
  • #117 Move each Druid example in separate collection. It's a lot of easier now to learn via examples, check it!
    • Examples in progress, so a lot of stuff are locked now, stay tuned!
  • #118 Druid.scroll freezes if held in one place for a long time
  • #123 Add scroll for Scroll component via mouse wheel or touchpad:
    • Added Scroll style params: WHEEL_SCROLL_SPEED, WHEEL_SCROLL_INVERTED
    • Mouse scroll working when cursor is hover on scroll view node
    • Vertical scroll have more priority than horizontal
    • Fix: When Hover component node became disabled, reset hover state (throw on_hover and on_mouse_hover events)
    • By default mouse scroll is disabled
    • This is basic implementation, it is work not perfect
  • #124 Add Scroll:set_click_zone function. This is just link to Drag:set_click_zone function inside scroll component.
  • #127 The druid:create is deprecated. Use druid:new for creating custom components

Defold Druid v0.5.0

29 Sep 20:52
Compare
Choose a tag to compare

Druid 0.5.0:

Besides a lot of fixes (thanks for feedback!) two components was add: StaticGrid and DynamicGrid instead of usual Grid component (it is deprecated now).
Add component:set_input_enabled for basic component class. So you can enable/disable user input for any component.
Finaly implemented on_layout_changed support. Druid components now will try keep their data between layout changing! You also can use this callback in your custom components.
Also check component.template.lua what you can use for your own custom components!

  • #77 Grid update:
    • The grid component now is deprecated. Use static_grid instead. Druid will show you deprecated message, if you still using grid component
    • [BREAKING] Remove the grid:set_offset grid functions. To adjust the distance between nodes inside grid - setup correct node sizes
    • Add static_grid component
      • The behaviour like previous grid component
      • Have constant element size, so have ability to precalculate positions, indexes and size of content
      • By default, not shifting elements on removing element. Add is_shift flag to static_grid:remove function
      • This grid can spawn elements with several rows and columns
    • Add dynamic_grid component
      • Can have different element size. So have no ability to precalculate stuff like static_grid
      • This grid can't have gaps between elements. You will get the error, if spawn element far away from other elements
      • The grid can spawn elements only in row or in column
      • The grid node should have West, East, South or North pivot (vertical or horizontal element placement)
      • Able to shift nodes left or right on grid:add / grid:remove functions
  • Scroll update:
    • Add scroll:set_vertical_scroll and scroll:set_horizontal_scroll for disable scroll sides
    • Add scroll:bind_grid function. Now is possible to bind Druid Grid component (Static or Dynamic) to the scroll for auto refresh the scroll size on grid nodes changing
  • #37 Add on_layout_change support. Druid will keep and restore GUI component data between changing game layout. Override function on_layout_change in your custom components to do stuff you need.
  • #85 Move several components from base folder to extended. In future to use them, you have to register them manually. This is done for decrease build size by excluding unused components
  • Fix #61: Button component: fix button animation node creation
  • Fix #64: Hover component: wrong mouse_hover default state
  • Fix #71: Blocker: blocker now correct block mouse hover event
  • Fix #72: Fix return nil in some on_input functions
  • Fix #74: [BREAKING] Fix typo: strech -> stretch. Scroll function set_extra_stretch_size renamed
  • Fix #76: Add params for lang text localization component
  • Fix #79: Fix druid:remove inside on_input callback
  • Fix #80: Fix hover:set_enable typo function call
  • Fix #88: Add component:set_input_enabled function to enable/disable input for druid component. Now you can disable input of any druid component, even complex (with other components inside)
  • Add component.template.lua as template for Druid custom component
  • Update the example app

Defold Druid v0.4.4

19 Jul 10:12
Compare
Choose a tag to compare
  • Fix #76: Add params for lang text localization component
  • Fix #79: Fix druid:remove inside on_input callback
  • Fix #80: Fix hover set_enable typo function call

Defold Druid v0.4.3

14 Jun 17:16
Compare
Choose a tag to compare
  • Fix #71: Blocker: blocker now correct block mouse hover event
  • Fix #72: Fix return nil in some on_input functions
  • Fix #74: Fix typo: strech -> stretch. Scroll function set_extra_stretch_size renamed
  • Add component.tempalte.lua as template for Druid custom component

Defold Druid v0.4.2

19 May 21:03
Compare
Choose a tag to compare

Fix #64

Hover component: fix wrong mouse_hover default state

Defold Druid v0.4.1

16 May 13:56
Compare
Choose a tag to compare

Fix #61

  • Fix button anim node creation

Defold Druid v0.4.0

09 May 13:21
Compare
Choose a tag to compare

Druid 0.4.0:

  • Add Drag basic component

    • Drag component allow you detect dragging on GUI node
    • Drag will be processed even the cursor is outside of node, if drag is already started
    • Drag provides correct handle of several touches. Drag can switch between them (no more scroll gliches with position)
    • Drag have next events:
      • on_touch_start (self)
      • on_touch_end (self)
      • on_drag_start (self)
      • on_drag (self, dx, dy)
      • on_drag_end (self)
    • You can restriction side of dragging by changing drag.can_x and drag.can_y fields
    • You can setup drag deadzone to detect, when dragging is started (by default 10 pixels)
  • [Breaking changes] Druid Scroll component fully reworked. Input logic moved to Drag component

    • Update scroll documentation
    • Change constructor order params
    • Change scroll:set_border to scroll:set_size
    • Scroll now contains from view and content node
      • View node - static node, which size determine the "camera" zone
      • Content node - dynamic node, moving by Scroll component
    • Scroll will be disabled only if content size equals to view size (by width or height separatly)
    • You can adjust start scroll size via .gui scene. Just setup correct node size
    • Different anchoring is supported (for easier layouting)
    • Function scroll_to now accept position relative to content node. It's more easier for handling. Example: if you have children node of content_node, you can pass this node position to scroll to this.
    • Resolve #52: Content node size now can be less than view node size. In this case, content will be scrolled only inside view size (can be disabled via style field: SMALL_CONTENT_SCROLL)
    • Fix #50: If style:SOFT_ZONE_SIZE equals to [0..1], scroll can be disappeared
  • Druid Grid Update

    • Anchor by default equals to node pivot (so, more component settings in .gui settings) (#51)
    • Function grid:clear now don't delete any GUI nodes. Druid will not care about gui.delete_node logic anymore (#56)
  • Druid Hover component now have two hover events (#49):

    • on_hover is usual hover event. Trigger only if touch or mouse action_id pressed on node
    • on_mouse_hover action on node without action_id (desktop mouse over). Works only on desktop platform
  • Styles update:

    • Styles table now can be empty, every component have their default style values
    • Remove component:get_style function. Now you can only set styles
    • To get style values in component, add component:on_style_change function. It's invoked on component:set_style function
    • You can look up default values inside component:on_style_change function or style component API on Druid API
  • Druid update:

    • Now function druid:remove remove instance and all instance children components. No more manual deleting child components (#41)
  • Fix: Blocker component bug (blocker had very high priority, so it's block even button components, created after blocker)

  • Fix #58: Bug, when druid instance should be always named druid (ex: self.druid = druid.new(self))

  • Fix #53: Bug with final Druid instance without any components

Defold Druid v0.3.0

18 Apr 15:47
Compare
Choose a tag to compare

Druid 0.3.0:

  • Druid:final() now is important function for correct working

  • Add swipe basic component

    • Swipe component handle simple swipe gestures on node. It has single callback with direction on swipe. You can adjust a several parameters of swipe in druid style.
    • Swipe can be triggered on action.released or while user is make swiping (in process)
    • Add swipe example at main Druid example. Try swipe left/right to switch example pages.
  • Add input basic component

    • Input component handle user text input. Input contains from button and text components. Button needed for selecting/unselecting input field
    • Long click on input field for clear and select input field (clearing can be disable via styles)
    • Click outside of button to unselect input field
    • On focus lost (game minimized) input field will be unselected
    • You can setup max length of the text
    • You can setup allowed characters. On add not allowed characters on_input_wrong will be called. By default it cause simple shake animation
    • The keyboard for input will not show on mobile HTML5. So input field in mobile HTML5 is not working now
    • To make work different keyboard type, make sure value in game.project Android:InputMethod set to HiddenInputField (https://defold.com/manuals/project-settings/#input-method)
  • Add two functions to basic component: increase_input_priority and reset_input_priority. It used to process component input first in current input stack (there is two input stacks now: INPUT and INPUT_HIGH). Example: on selecting input field, it increase input self priority until it be unselected

  • Add two new component interests: on_focus_gain and on_focus_lost

  • Add global druid events:

    • on_window_callback: call druid.on_window_callback(event) for on_focus_gain/lost correct work
    • on_language_change: call druid.on_language_change() (#38) for update all druid instances lang components
    • on_layout_change: call druid.on_layout_change() (#37) for update all gui layouts (unimplemented now)
  • Add button on_click_outside event. You can subscribe on this event in button. Was needed for Input component (click outside to deselect input field)

  • Add start_pos field to button component

  • Changed input binding settings. Add esc, enter, text and marked_text. Backspace now is different from android back button event. Check the README setup section

  • Renamed on_change_language -> on_language_change component interest

  • Add several examples to druid-assets respository (see live example here): https://insality.github.io/druid-assets/)

  • Known issues:

    • Adjusting text size by height works wrong. Adjusting single line texting works fine
    • Space is not working in HTML5

Defold Druid v0.2.0

13 Apr 17:15
Compare
Choose a tag to compare

Commit version before release of Defold forum.

  • Polish default Druid style
  • Add scroll/slider examples
  • Update documentation

Defold Druid v0.1.0

21 Mar 21:07
Compare
Choose a tag to compare

First public release
Repository now public