Show the tilemap palette for picking
This commit is contained in:
parent
a8178cbf52
commit
8c3eb725e1
72
src/game.clj
72
src/game.clj
@ -179,29 +179,41 @@
|
|||||||
(set-tile! game layer at-row at-col nil)
|
(set-tile! game layer at-row at-col nil)
|
||||||
(do-neighbors! layer at-row at-col
|
(do-neighbors! layer at-row at-col
|
||||||
(fn [l r c]
|
(fn [l r c]
|
||||||
(when (tile-at game l r c)
|
(when-let [tile (tile-at game l r c)]
|
||||||
(set-random-tile! 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]
|
(defn handle-game-input [config game]
|
||||||
(update-as-> [g game]
|
(update-as-> [g game]
|
||||||
(assoc g :event-queue [])
|
(assoc g :event-queue [])
|
||||||
|
|
||||||
(cond-> g
|
(when (not (:editor-mode game))
|
||||||
(rl/key-pressed? rl/key-space)
|
(cond-> g
|
||||||
(update :editor-mode not)
|
(rl/key-pressed? rl/key-space)
|
||||||
|
(update :editor-mode not)
|
||||||
|
|
||||||
;; (rl/key-pressed? rl/key-r)
|
;; (rl/key-pressed? rl/key-r)
|
||||||
;; (assoc :layers (object-array (* rows cols)))
|
;; (assoc :layers (object-array (* rows cols)))
|
||||||
|
|
||||||
(rl/mouse-button-pressed? rl/mouse-button-left)
|
(rl/mouse-button-pressed? rl/mouse-button-left)
|
||||||
(assoc :drag-mode :draw)
|
(assoc :drag-mode :draw)
|
||||||
|
|
||||||
(rl/mouse-button-pressed? rl/mouse-button-right)
|
(rl/mouse-button-pressed? rl/mouse-button-right)
|
||||||
(assoc :drag-mode :erase)
|
(assoc :drag-mode :erase)
|
||||||
|
|
||||||
(or (rl/mouse-button-released? rl/mouse-button-left)
|
(or (rl/mouse-button-released? rl/mouse-button-left)
|
||||||
(rl/mouse-button-released? rl/mouse-button-right))
|
(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)
|
(when (rl/mouse-button-pressed? rl/mouse-button-middle)
|
||||||
(do-grid [r 10 c 20]
|
(do-grid [r 10 c 20]
|
||||||
@ -249,7 +261,8 @@
|
|||||||
(do-grid [row rows col cols]
|
(do-grid [row rows col cols]
|
||||||
(when-let [[tilemap [tx ty]] (tile-at game layer row col)]
|
(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))))
|
(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)]
|
(let [{mx :x my :y :as mouse-pos} (rl/get-mouse-position)]
|
||||||
;; TODO: Maybe better if we create a get-tilemap-by-name
|
;; TODO: Maybe better if we create a get-tilemap-by-name
|
||||||
(draw-tile! game (get (:tilemaps game) 0) 3 3 mx my scale)))
|
(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)
|
(rl/vec2-seg 0 0) (float 0.0) rl/white)
|
||||||
(when (:editor-mode game)
|
(when (:editor-mode game)
|
||||||
(rl/draw-rectangle-lines-ex!* (rl/rect-seg 0 0 screen-width screen-height) 5.0 rl/green)
|
(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]]
|
:let [padding 10]]
|
||||||
(rl/draw-texture-pro!* seg
|
(rl/draw-texture-pro!* seg
|
||||||
(rl/rect-seg 0 0 width height)
|
(rl/rect-seg 0 0 width height)
|
||||||
@ -268,7 +304,9 @@
|
|||||||
(rl/draw-text!* "EDIT MODE" (- screen-width 100) 10 16 rl/green)))
|
(rl/draw-text!* "EDIT MODE" (- screen-width 100) 10 16 rl/green)))
|
||||||
|
|
||||||
(defn watch-game [config game]
|
(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])
|
(defn unload-game [game])
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user