Show the tilemap palette for picking

This commit is contained in:
Joseph Ferano 2026-08-30 19:12:41 +07:00
parent a8178cbf52
commit 8c3eb725e1

View File

@ -179,13 +179,20 @@
(set-tile! game layer at-row at-col nil)
(do-neighbors! layer at-row at-col
(fn [l r c]
(when (tile-at game l r c)
(set-random-tile! game l r c)))))
(when-let [tile (tile-at game l r c)]
(when (contains? (:tags tile) :randomized)
(set-random-tile! game l r c))))))
;; (when (contains? (:tags tile) :randomized)
(defn set-tile2! [game layer row col tile]
)
(defn handle-game-input [config game]
(update-as-> [g game]
(assoc g :event-queue [])
(when (not (:editor-mode game))
(cond-> g
(rl/key-pressed? rl/key-space)
(update :editor-mode not)
@ -201,7 +208,12 @@
(or (rl/mouse-button-released? rl/mouse-button-left)
(rl/mouse-button-released? rl/mouse-button-right))
(dissoc :drag-mode))
(dissoc :drag-mode)))
#_(when (and (:editor-mode game)
(rl/mouse-button-pressed? rl/mouse-button-left))
(let [{mx :x my :y} (rl/get-mouse-position)]
(doseq)))
(when (rl/mouse-button-pressed? rl/mouse-button-middle)
(do-grid [r 10 c 20]
@ -249,7 +261,8 @@
(do-grid [row rows col cols]
(when-let [[tilemap [tx ty]] (tile-at game layer row col)]
(draw-tile! game tilemap tx ty (* col cell-size scale) (* row cell-size scale) scale))))
(when (not (contains? game :draw-drag))
(when (and (not (contains? game :draw-drag))
(not (:editor-mode game)))
(let [{mx :x my :y :as mouse-pos} (rl/get-mouse-position)]
;; TODO: Maybe better if we create a get-tilemap-by-name
(draw-tile! game (get (:tilemaps game) 0) 3 3 mx my scale)))
@ -259,7 +272,30 @@
(rl/vec2-seg 0 0) (float 0.0) rl/white)
(when (:editor-mode game)
(rl/draw-rectangle-lines-ex!* (rl/rect-seg 0 0 screen-width screen-height) 5.0 rl/green)
(doseq [[idx [k {:keys [width height seg]}]] (into [] (map-indexed vector) (:tilemaps game))
(rl/draw-rectangle!* 0 0 screen-width screen-height color-tint-gray)
(let [[_ texture cells] (first (:atlases game))
{:keys [width height seg]} texture]
(doseq [[r c] cells]
(let [padding 10
curr-size (* cell-size scale)
pos-x (+ (* padding (inc c)) (* c curr-size))
pos-y (+ (* padding (inc r)) (* r curr-size))
dst-rec (rl/rect-seg pos-x pos-y curr-size curr-size)
mouse-pos (rl/get-mouse-position)
{mx :x my :y} mouse-pos]
(rl/draw-texture-pro!* seg
(rl/rect-seg (* c cell-size) (* r cell-size) cell-size cell-size)
dst-rec
(rl/vec2-seg 0 0) (float 0.0)
rl/white)
(rl/draw-rectangle-lines!* pos-x pos-y curr-size curr-size rl/white)
(when (rl/collision-point-rec? mouse-pos {:x pos-x :y pos-y :width curr-size :height curr-size})
(rl/draw-rectangle-lines!* pos-x pos-y curr-size curr-size rl/green)
(when (rl/mouse-button-pressed? rl/mouse-button-left)
(swap! e/game-state assoc :selected-tile [r c])
(swap! e/game-state dissoc :editor-mode))))))
#_(doseq [[idx [k {:keys [width height seg]}]] (into [] (map-indexed vector) (:tilemaps game))
:let [padding 10]]
(rl/draw-texture-pro!* seg
(rl/rect-seg 0 0 width height)
@ -268,7 +304,9 @@
(rl/draw-text!* "EDIT MODE" (- screen-width 100) 10 16 rl/green)))
(defn watch-game [config game]
{})
{:mouse-pos (rl/get-mouse-position)
:current-layer (:current-layer game)
:current-tilemap (:current-tilemap game)})
(defn unload-game [game])