Add ability to set methods on table cells
This commit is contained in:
@@ -10,7 +10,8 @@
|
|||||||
[com.badlogic.gdx.scenes.scene2d.utils ActorGestureListener Align
|
[com.badlogic.gdx.scenes.scene2d.utils ActorGestureListener Align
|
||||||
ChangeListener ClickListener DragListener FocusListener
|
ChangeListener ClickListener DragListener FocusListener
|
||||||
NinePatchDrawable SpriteDrawable TextureRegionDrawable
|
NinePatchDrawable SpriteDrawable TextureRegionDrawable
|
||||||
TiledDrawable]))
|
TiledDrawable]
|
||||||
|
[com.esotericsoftware.tablelayout Cell]))
|
||||||
|
|
||||||
(defmacro drawable
|
(defmacro drawable
|
||||||
[type & options]
|
[type & options]
|
||||||
@@ -37,27 +38,74 @@
|
|||||||
[key]
|
[key]
|
||||||
`(u/static-field-lower :scenes :scene2d :utils :Align ~key))
|
`(u/static-field-lower :scenes :scene2d :utils :Align ~key))
|
||||||
|
|
||||||
|
(defn cell!
|
||||||
|
[^Cell cell & args]
|
||||||
|
(let [method-name (first args)
|
||||||
|
[[a1 a2 a3 a4] rest-args] (split-with #(not (keyword? %)) (rest args))]
|
||||||
|
(when method-name
|
||||||
|
(case method-name
|
||||||
|
:width (.width cell ^double a1)
|
||||||
|
:height (.height cell ^double a1)
|
||||||
|
:size (.size cell ^double a1 ^double a2)
|
||||||
|
:min-width (.minWidth cell ^double a1)
|
||||||
|
:min-height (.minHeight cell ^double a1)
|
||||||
|
:min-size (.minSize cell ^double a1 ^double a2)
|
||||||
|
:max-width (.maxWidth cell ^double a1)
|
||||||
|
:max-height (.maxHeight cell ^double a1)
|
||||||
|
:max-size (.minSize cell ^double a1 ^double a2)
|
||||||
|
:space (.space cell ^double a1 ^double a2 ^double a3 ^double a4)
|
||||||
|
:space-top (.spaceTop cell ^double a1)
|
||||||
|
:space-left (.spaceLeft cell ^double a1)
|
||||||
|
:space-bottom (.spaceBottom cell ^double a1)
|
||||||
|
:space-right (.spaceRight cell ^double a1)
|
||||||
|
:pad (.pad cell ^double a1 ^double a2 ^double a3 ^double a4)
|
||||||
|
:pad-top (.padTop cell ^double a1)
|
||||||
|
:pad-left (.padLeft cell ^double a1)
|
||||||
|
:pad-bottom (.padBottom cell ^double a1)
|
||||||
|
:pad-right (.padRight cell ^double a1)
|
||||||
|
:fill (.fill cell ^boolean a1 ^boolean a2)
|
||||||
|
:fill-x (.fillX cell)
|
||||||
|
:fill-y (.fillY cell)
|
||||||
|
:center (.center cell)
|
||||||
|
:top (.top cell)
|
||||||
|
:left (.left cell)
|
||||||
|
:bottom (.bottom cell)
|
||||||
|
:right (.right cell)
|
||||||
|
:expand (.expand cell ^boolean a1 ^boolean a2)
|
||||||
|
:expand-x (.expandX cell)
|
||||||
|
:expand-y (.expandY cell)
|
||||||
|
:ignore (.ignore cell ^boolean a1)
|
||||||
|
:colspan (.colspan cell (int a1))
|
||||||
|
:uniform (.uniform cell ^boolean a1 ^boolean a2)
|
||||||
|
:uniform-x (.uniformX cell)
|
||||||
|
:uniform-y (.uniformY cell)
|
||||||
|
:row (.row cell)
|
||||||
|
nil)
|
||||||
|
(apply cell! cell rest-args))
|
||||||
|
cell))
|
||||||
|
|
||||||
(defmulti add-to-group! #(-> % first :object type) :default WidgetGroup)
|
(defmulti add-to-group! #(-> % first :object type) :default WidgetGroup)
|
||||||
|
|
||||||
(defmethod add-to-group! WidgetGroup
|
(defmethod add-to-group! WidgetGroup
|
||||||
[[{:keys [^WidgetGroup object]} children]]
|
[[parent child]]
|
||||||
(doseq [child children]
|
(.addActor ^WidgetGroup (:object parent) ^Actor (:object child)))
|
||||||
(.addActor object ^Actor (:object child))))
|
|
||||||
|
|
||||||
(defmethod add-to-group! Table
|
(defmethod add-to-group! Table
|
||||||
[[{:keys [^Table object]} children]]
|
[[parent child]]
|
||||||
(doseq [child children]
|
(cond
|
||||||
(cond
|
(map? child)
|
||||||
(map? child)
|
(.add ^Table (:object parent) ^Actor (:object child))
|
||||||
(.add object ^Actor (:object child))
|
(vector? child)
|
||||||
(keyword? child)
|
(apply cell! (add-to-group! [parent (first child)]) (rest child))
|
||||||
(case child
|
(keyword? child)
|
||||||
:row (.row object)
|
(case child
|
||||||
nil))))
|
:row (.row ^Table (:object parent))
|
||||||
|
nil)))
|
||||||
|
|
||||||
(defn add!
|
(defn add!
|
||||||
[group children]
|
[group children]
|
||||||
(add-to-group! [group children])
|
(doseq [child children]
|
||||||
|
(add-to-group! [group child]))
|
||||||
group)
|
group)
|
||||||
|
|
||||||
(defn ^:private create-group
|
(defn ^:private create-group
|
||||||
|
|||||||
Reference in New Issue
Block a user