a number of cool improvements, hotspots for cursors, non-jumpy text.
This commit is contained in:
@@ -53,7 +53,8 @@
|
|||||||
|
|
||||||
:on-talk
|
:on-talk
|
||||||
(fn [screen entities {:keys [create-talk target-id color text x y scale scene-viewport id]}]
|
(fn [screen entities {:keys [create-talk target-id color text x y scale scene-viewport id]}]
|
||||||
(let [font (bitmap-font "ego/font.fnt" )
|
(let [font (doto (bitmap-font "ego/font.fnt" )
|
||||||
|
(bitmap-font! :set-use-integer-positions false))
|
||||||
p (NinePatchEntity. (skin! (skin "ui/ui.json") :get-patch "ui-bg"))
|
p (NinePatchEntity. (skin! (skin "ui/ui.json") :get-patch "ui-bg"))
|
||||||
_ (nine-patch! p :set-padding 25 25 5 15)
|
_ (nine-patch! p :set-padding 25 25 5 15)
|
||||||
|
|
||||||
|
|||||||
@@ -66,6 +66,7 @@
|
|||||||
disappear-left {1 [:disappear 0.7]}
|
disappear-left {1 [:disappear 0.7]}
|
||||||
}
|
}
|
||||||
:night-profile :sprite
|
:night-profile :sprite
|
||||||
|
:label "Gandarf"
|
||||||
:cursor :talk
|
:cursor :talk
|
||||||
:origin-x 0
|
:origin-x 0
|
||||||
:origin-y 0
|
:origin-y 0
|
||||||
|
|||||||
@@ -697,6 +697,7 @@
|
|||||||
[:stand 1] sheep-1
|
[:stand 1] sheep-1
|
||||||
[:stand 2] sheep-2
|
[:stand 2] sheep-2
|
||||||
[:stand 3] sheep-3
|
[:stand 3] sheep-3
|
||||||
|
:label "Sheep"
|
||||||
:cursor :hand
|
:cursor :hand
|
||||||
:origin-y 3
|
:origin-y 3
|
||||||
:origin-x 6
|
:origin-x 6
|
||||||
@@ -798,6 +799,7 @@
|
|||||||
)
|
)
|
||||||
:lamb (assoc (utils/get-texture "outsidehouse/lamb.png")
|
:lamb (assoc (utils/get-texture "outsidehouse/lamb.png")
|
||||||
:cursor :look
|
:cursor :look
|
||||||
|
:label "Baby lamb"
|
||||||
:x 10 :y 163 :baseline 77
|
:x 10 :y 163 :baseline 77
|
||||||
:right {:stand (animation 0.1 [lamb-stand])
|
:right {:stand (animation 0.1 [lamb-stand])
|
||||||
:walk lamb-walk}
|
:walk lamb-walk}
|
||||||
@@ -827,6 +829,7 @@
|
|||||||
:cauldron (rooms/make-entity :cauldron (assoc (animation->texture screen cauldron)
|
:cauldron (rooms/make-entity :cauldron (assoc (animation->texture screen cauldron)
|
||||||
:cursor :look
|
:cursor :look
|
||||||
:x 139 :y 73 :baseline 167
|
:x 139 :y 73 :baseline 167
|
||||||
|
:label "Magical cauldron"
|
||||||
:anim cauldron
|
:anim cauldron
|
||||||
:anim-start 0
|
:anim-start 0
|
||||||
:night-profile :none
|
:night-profile :none
|
||||||
@@ -836,6 +839,7 @@
|
|||||||
:charcoal (rooms/make-entity :charcoal
|
:charcoal (rooms/make-entity :charcoal
|
||||||
(assoc (animation->texture screen charcoal)
|
(assoc (animation->texture screen charcoal)
|
||||||
:cursor :hand
|
:cursor :hand
|
||||||
|
:label "Charcoal"
|
||||||
:anim charcoal
|
:anim charcoal
|
||||||
:anim-start 0
|
:anim-start 0
|
||||||
:night-profile :none
|
:night-profile :none
|
||||||
|
|||||||
@@ -44,6 +44,8 @@
|
|||||||
[com.badlogic.gdx.graphics.g2d TextureRegion Animation Batch]
|
[com.badlogic.gdx.graphics.g2d TextureRegion Animation Batch]
|
||||||
[com.badlogic.gdx.math Vector3 Matrix4]
|
[com.badlogic.gdx.math Vector3 Matrix4]
|
||||||
[com.badlogic.gdx.utils.viewport FitViewport]
|
[com.badlogic.gdx.utils.viewport FitViewport]
|
||||||
|
|
||||||
|
[com.badlogic.gdx.utils Align]
|
||||||
[com.badlogic.gdx.scenes.scene2d Actor Stage]
|
[com.badlogic.gdx.scenes.scene2d Actor Stage]
|
||||||
[com.badlogic.gdx.graphics.glutils ShaderProgram]
|
[com.badlogic.gdx.graphics.glutils ShaderProgram]
|
||||||
[java.lang Object]
|
[java.lang Object]
|
||||||
@@ -902,12 +904,12 @@ void main ()
|
|||||||
|
|
||||||
:else
|
:else
|
||||||
(do
|
(do
|
||||||
(graphics! :set-cursor (utils/cursor "cursor.png" (translate-depressed (or (:cursor new-current) new-current)
|
(graphics! :set-cursor (utils/cursor "cursor.png"
|
||||||
depressed?)))
|
(translate-depressed (or (:cursor new-current) new-current)
|
||||||
|
depressed?)))
|
||||||
(update-in entities [:cursor ] assoc
|
(update-in entities [:cursor ] assoc
|
||||||
:last [new-current depressed?]
|
:last [new-current depressed?]
|
||||||
:time-changed total-time))
|
:time-changed total-time)))))
|
||||||
)))
|
|
||||||
|
|
||||||
|
|
||||||
(defn get-looped-animation-point ^double [^Animation animation ^double total-time]
|
(defn get-looped-animation-point ^double [^Animation animation ^double total-time]
|
||||||
@@ -1138,120 +1140,128 @@ void main ()
|
|||||||
:on-show
|
:on-show
|
||||||
(fn [screen entities options]
|
(fn [screen entities options]
|
||||||
(log/info "Initializing scene.")
|
(log/info "Initializing scene.")
|
||||||
|
(let [{cam :camera :as screen} (utils/setup-viewport screen 320 240)
|
||||||
(let [screen (assoc screen :total-time 0)]
|
screen (assoc screen :total-time 0)]
|
||||||
(let [{cam :camera} (utils/setup-viewport screen 320 240)]
|
(set! (. cam zoom) 0.95)
|
||||||
(set! (. cam zoom) 0.95)
|
(let [shader (ShaderProgram. ^String v-shader ^String pix-shader)
|
||||||
(let [shader (ShaderProgram. ^String v-shader ^String pix-shader)
|
_ (log/info "shader log:" (.getLog shader))
|
||||||
_ (log/info "shader log:" (.getLog shader))
|
state (get-state @utils/selected-save)
|
||||||
state (get-state @utils/selected-save)
|
start-pos [(:x state) (:y state)]
|
||||||
start-pos [(:x state) (:y state)]
|
has-start-pos? (:x state)
|
||||||
has-start-pos? (:x state)
|
font (doto (bitmap-font "label-font.fnt" )
|
||||||
|
(bitmap-font! :set-use-integer-positions false))
|
||||||
|
tr (bitmap-font! font :get-region)
|
||||||
|
_ (.setFilter (.getTexture tr) Texture$TextureFilter/Linear Texture$TextureFilter/Linear)
|
||||||
|
style (doto (style :label font (color :white))
|
||||||
|
(#(-> % .font .getData (.setScale 0.0625))))
|
||||||
|
|
||||||
_ (update! screen :shader shader)
|
_ (update! screen :shader shader)
|
||||||
rooms {:inside-house (rooms.inside-house/make screen)
|
rooms {:inside-house (rooms.inside-house/make screen)
|
||||||
:inside-stash (rooms.inside-stash/make screen)
|
:inside-stash (rooms.inside-stash/make screen)
|
||||||
:outside-house (rooms.outside-house/make screen)
|
:outside-house (rooms.outside-house/make screen)
|
||||||
:behind-house (rooms.behind-house/make screen)
|
:behind-house (rooms.behind-house/make screen)
|
||||||
:cat-tree (rooms.cat-tree/make screen)
|
:cat-tree (rooms.cat-tree/make screen)
|
||||||
:inside-castle (rooms.inside-castle/make screen)
|
:inside-castle (rooms.inside-castle/make screen)
|
||||||
:space (rooms.space/make screen)
|
:space (rooms.space/make screen)
|
||||||
:held (rooms.held/make screen)
|
:held (rooms.held/make screen)
|
||||||
:inside-cafeteria (rooms.inside-cafeteria/make screen)
|
:inside-cafeteria (rooms.inside-cafeteria/make screen)
|
||||||
:inside-antique (rooms.inside-antique/make screen)
|
:inside-antique (rooms.inside-antique/make screen)
|
||||||
:inside-jail (rooms.inside-jail/make screen)
|
:inside-jail (rooms.inside-jail/make screen)
|
||||||
:dream (rooms.dream/make screen)
|
:dream (rooms.dream/make screen)
|
||||||
:ending (rooms.ending/make screen)
|
:ending (rooms.ending/make screen)
|
||||||
:castle-gate (rooms.castle-gate/make screen)
|
:castle-gate (rooms.castle-gate/make screen)
|
||||||
:outside-jail (rooms.outside-jail/make screen)
|
:outside-jail (rooms.outside-jail/make screen)
|
||||||
:outside-castle (rooms.outside-castle/make screen)}
|
:outside-castle (rooms.outside-castle/make screen)}
|
||||||
rooms (add-georgia-to-all-rooms screen rooms)
|
rooms (add-georgia-to-all-rooms screen rooms)
|
||||||
entities {:rooms rooms
|
entities {:rooms rooms
|
||||||
:step-particles (assoc (particle-effect "particles/step") :x 100 :y 100 :baseline 241)
|
:step-particles (assoc (particle-effect "particles/step") :x 100 :y 100 :baseline 241)
|
||||||
:cam {:zoom 0.95
|
:cam {:zoom 0.95
|
||||||
:paused? false
|
:paused? false
|
||||||
:object nil}
|
:object nil}
|
||||||
|
|
||||||
:current-sounds {:object nil
|
:current-sounds {:object nil
|
||||||
:value []}
|
:value []}
|
||||||
:musics {:object nil
|
:musics {:object nil
|
||||||
:inside-antique (utils/make-music "music/inside-antique.ogg")
|
:inside-antique (utils/make-music "music/inside-antique.ogg")
|
||||||
:town-1 (utils/make-music "music/town-music-1.ogg")
|
:town-1 (utils/make-music "music/town-music-1.ogg")
|
||||||
:town-2 (utils/make-music "music/town-music-2.ogg")
|
:town-2 (utils/make-music "music/town-music-2.ogg")
|
||||||
:love (utils/make-music "music/love.ogg")
|
:love (utils/make-music "music/love.ogg")
|
||||||
:inside-fangald (utils/make-music "music/inside-fangald.ogg")
|
:inside-fangald (utils/make-music "music/inside-fangald.ogg")
|
||||||
:fight (utils/make-music "music/megaboss.mp3")
|
:fight (utils/make-music "music/megaboss.mp3")
|
||||||
:pull-sword (utils/make-music "music/pull-sword.ogg")
|
:pull-sword (utils/make-music "music/pull-sword.ogg")
|
||||||
:night (utils/make-music "music/night.ogg")
|
:night (utils/make-music "music/night.ogg")
|
||||||
:dream (utils/make-music "dream/music.ogg")
|
:dream (utils/make-music "dream/music.ogg")
|
||||||
:secret-hideout (utils/make-music "music/secret-hideout.ogg")
|
:secret-hideout (utils/make-music "music/secret-hideout.ogg")
|
||||||
:wind (utils/make-music "music/wind.ogg")}
|
:wind (utils/make-music "music/wind.ogg")}
|
||||||
:state state
|
:state state
|
||||||
:time-profiles {:object nil
|
:time-profiles {:object nil
|
||||||
:default utils/default-night-merge
|
:default utils/default-night-merge
|
||||||
:sprite utils/default-night-merge-sprite
|
:sprite utils/default-night-merge-sprite
|
||||||
:none {}}
|
:none {}}
|
||||||
|
|
||||||
:closing? {:object nil
|
:closing? {:object nil
|
||||||
:value false}
|
:value false}
|
||||||
:sounds {:blink (utils/load-sound "ego/blink2.ogg")
|
:sounds {:blink (utils/load-sound "ego/blink2.ogg")
|
||||||
:pickup (utils/load-sound "pickup.ogg")
|
:pickup (utils/load-sound "pickup.ogg")
|
||||||
:disappear (utils/load-sound "inside-house/disappear.ogg")
|
:disappear (utils/load-sound "inside-house/disappear.ogg")
|
||||||
:grow-sound (utils/load-sound "ego/potion.ogg")
|
:grow-sound (utils/load-sound "ego/potion.ogg")
|
||||||
|
:object nil}
|
||||||
|
:fade {:object nil
|
||||||
|
:opacity 0.0}
|
||||||
|
:white-fade (assoc (utils/get-texture "white.png")
|
||||||
|
:scale-x 30
|
||||||
|
:scale-y 30
|
||||||
|
:baseline 9500
|
||||||
|
:opacity 0.0
|
||||||
|
:origin-x 0
|
||||||
|
:origin-y 0
|
||||||
|
:x -20
|
||||||
|
:y -20)
|
||||||
|
:fg-actions {:object nil
|
||||||
|
:channel (chan)
|
||||||
|
:current nil
|
||||||
|
:script-running? false
|
||||||
|
:started? false
|
||||||
|
:script-chan (chan (dropping-buffer 1))}
|
||||||
|
:bg-actions {:object nil
|
||||||
|
:channel (chan)
|
||||||
|
:current nil
|
||||||
|
:script-running? false
|
||||||
|
:started? false
|
||||||
|
:script-chan (chan (dropping-buffer 1))}
|
||||||
|
:volume {:object nil
|
||||||
|
:value 0.0}
|
||||||
|
:music-override {:object nil
|
||||||
|
:value nil}
|
||||||
|
:label (utils/add-actor-to-stage screen
|
||||||
|
(assoc (label "Sheep" style :set-alignment Align/left)
|
||||||
|
:x 0 :y 0 :baseline 10000))
|
||||||
|
:cursor {:id "cursor"
|
||||||
|
:last nil
|
||||||
|
:override :hourglass
|
||||||
|
:last-pos [0 0]
|
||||||
|
:down-target nil}
|
||||||
|
|
||||||
|
:all-items (assoc items/items :object nil)
|
||||||
|
:started? {:value false
|
||||||
:object nil}
|
:object nil}
|
||||||
:fade {:object nil
|
:room (as-> (get rooms (:last-room state)) room
|
||||||
:opacity 0.0}
|
(assoc-in room [:entities :ego] (get-ego screen (if has-start-pos?
|
||||||
:white-fade (assoc (utils/get-texture "white.png")
|
start-pos
|
||||||
:scale-x 30
|
(:start-pos room))
|
||||||
:scale-y 30
|
((:scale-fn room)
|
||||||
:baseline 9500
|
(if has-start-pos?
|
||||||
:opacity 0.0
|
start-pos
|
||||||
:origin-x 0
|
(:start-pos room))))))}]
|
||||||
:origin-y 0
|
|
||||||
:x -20
|
|
||||||
:y -20)
|
|
||||||
:fg-actions {:object nil
|
|
||||||
:channel (chan)
|
|
||||||
:current nil
|
|
||||||
:script-running? false
|
|
||||||
:started? false
|
|
||||||
:script-chan (chan (dropping-buffer 1))}
|
|
||||||
:bg-actions {:object nil
|
|
||||||
:channel (chan)
|
|
||||||
:current nil
|
|
||||||
:script-running? false
|
|
||||||
:started? false
|
|
||||||
:script-chan (chan (dropping-buffer 1))}
|
|
||||||
:volume {:object nil
|
|
||||||
:value 0.0}
|
|
||||||
:music-override {:object nil
|
|
||||||
:value nil}
|
|
||||||
:cursor {:id "cursor"
|
|
||||||
:last nil
|
|
||||||
:override :hourglass
|
|
||||||
:last-pos [0 0]
|
|
||||||
:down-target nil}
|
|
||||||
|
|
||||||
:all-items (assoc items/items :object nil)
|
|
||||||
:started? {:value false
|
|
||||||
:object nil}
|
|
||||||
:room (as-> (get rooms (:last-room state)) room
|
|
||||||
(assoc-in room [:entities :ego] (get-ego screen (if has-start-pos?
|
|
||||||
start-pos
|
|
||||||
(:start-pos room))
|
|
||||||
((:scale-fn room)
|
|
||||||
(if has-start-pos?
|
|
||||||
start-pos
|
|
||||||
(:start-pos room))))))}]
|
|
||||||
|
|
||||||
(doseq [[k [start time fn]] (get-in entities [:room :timers])]
|
(doseq [[k [start time fn]] (get-in entities [:room :timers])]
|
||||||
(add-timer! screen k start time))
|
(add-timer! screen k start time))
|
||||||
|
|
||||||
(log/info "[done] Initializing scene.")
|
(log/info "[done] Initializing scene.")
|
||||||
|
|
||||||
(if-let [apply-state (get-in entities [:room :apply-state])]
|
(if-let [apply-state (get-in entities [:room :apply-state])]
|
||||||
(apply-state screen entities)
|
(apply-state screen entities)
|
||||||
entities)))))
|
entities))))
|
||||||
|
|
||||||
:on-resume (fn [screen {{:keys [current override last active was-active]} :cursor :as entities} options]
|
:on-resume (fn [screen {{:keys [current override last active was-active]} :cursor :as entities} options]
|
||||||
(let [current (or override (get-selected-inventory-item) :main)
|
(let [current (or override (get-selected-inventory-item) :main)
|
||||||
@@ -1268,13 +1278,13 @@ void main ()
|
|||||||
nil)
|
nil)
|
||||||
|
|
||||||
:on-render
|
:on-render
|
||||||
(fn [{:keys [^OrthographicCamera camera ^FitViewport viewport ^Stage renderer] :as screen} entities options]
|
(fn [{:keys [^OrthographicCamera camera ^FitViewport viewport ^Stage renderer] :as screen} {{:keys [last-pos]} :cursor :keys [tweens] :as entities} options]
|
||||||
(steam/update)
|
(steam/update)
|
||||||
(.apply viewport)
|
(.apply viewport)
|
||||||
|
|
||||||
(if (get-in entities [:closing? :value])
|
(if (get-in entities [:closing? :value])
|
||||||
|
|
||||||
(let [entities (utils/apply-tweens screen entities (:tweens entities))
|
(let [entities (utils/apply-tweens screen entities tweens)
|
||||||
entities (update-current-sound-vols! entities)
|
entities (update-current-sound-vols! entities)
|
||||||
entities (remove-ended-sounds screen entities)
|
entities (remove-ended-sounds screen entities)
|
||||||
get-rendered (partial get-rendered entities)
|
get-rendered (partial get-rendered entities)
|
||||||
@@ -1298,7 +1308,7 @@ void main ()
|
|||||||
(render! screen [e])))
|
(render! screen [e])))
|
||||||
entities)
|
entities)
|
||||||
(let [entities (fade-in-first-time-if-necessary screen entities)
|
(let [entities (fade-in-first-time-if-necessary screen entities)
|
||||||
entities (utils/apply-tweens screen entities (:tweens entities))
|
entities (utils/apply-tweens screen entities tweens)
|
||||||
entities (update-cursor screen entities)
|
entities (update-cursor screen entities)
|
||||||
entities (start-script-if-necessary screen entities :fg-actions)
|
entities (start-script-if-necessary screen entities :fg-actions)
|
||||||
entities (update-from-script screen entities :fg-actions)
|
entities (update-from-script screen entities :fg-actions)
|
||||||
@@ -1306,6 +1316,13 @@ void main ()
|
|||||||
entities (update-from-script screen entities :bg-actions)
|
entities (update-from-script screen entities :bg-actions)
|
||||||
entities (update-from-room screen entities)
|
entities (update-from-room screen entities)
|
||||||
entities (update-from-hotspots screen entities)
|
entities (update-from-hotspots screen entities)
|
||||||
|
[last-pos-x last-pos-y] (utils/unproject screen nil last-pos)
|
||||||
|
last-pos-x (double last-pos-x)
|
||||||
|
last-pos-y (double last-pos-y)
|
||||||
|
|
||||||
|
entities (update-in entities [:label] assoc
|
||||||
|
:x (unchecked-add last-pos-x 20.0)
|
||||||
|
:y (unchecked-subtract last-pos-y 12 ))
|
||||||
|
|
||||||
|
|
||||||
entities (if (and (@utils/settings :camera-man? true)
|
entities (if (and (@utils/settings :camera-man? true)
|
||||||
@@ -1349,6 +1366,7 @@ void main ()
|
|||||||
(assoc-in entities [:room :entities] (persistent! room))))
|
(assoc-in entities [:room :entities] (persistent! room))))
|
||||||
layers (get-in entities [:room :current-layers])
|
layers (get-in entities [:room :current-layers])
|
||||||
all-entities (concat layers (vals (get-in entities [:room :entities])))]
|
all-entities (concat layers (vals (get-in entities [:room :entities])))]
|
||||||
|
(label! (:label entities) :set-text (get-in entities [:label :text]))
|
||||||
(clear!)
|
(clear!)
|
||||||
(screen! talking-screen :on-update-camera { :scene-viewport (:viewport screen) :scene-camera (:camera screen)})
|
(screen! talking-screen :on-update-camera { :scene-viewport (:viewport screen) :scene-camera (:camera screen)})
|
||||||
(screen! fade-screen :update-fade { :opacity (get-in entities [:fade :opacity])})
|
(screen! fade-screen :update-fade { :opacity (get-in entities [:fade :opacity])})
|
||||||
@@ -1367,6 +1385,7 @@ void main ()
|
|||||||
(if (:parallax e)
|
(if (:parallax e)
|
||||||
(render-parallax screen e)
|
(render-parallax screen e)
|
||||||
(render! screen [e])))
|
(render! screen [e])))
|
||||||
|
(render! screen [(:label entities)])
|
||||||
|
|
||||||
entities))))
|
entities))))
|
||||||
|
|
||||||
@@ -1818,7 +1837,7 @@ void main ()
|
|||||||
:mouse-in? (zone/box 278 0 320 42)
|
:mouse-in? (zone/box 278 0 320 42)
|
||||||
:opacity 0.8)
|
:opacity 0.8)
|
||||||
:all-items (texture! (texture (pixmap "cursor.png")) :split 18 16)
|
:all-items (texture! (texture (pixmap "cursor.png")) :split 18 16)
|
||||||
:fps (->> (assoc (label "" (color :white) ) :x 5 :baseline 0 :opacity 0.1)
|
#_#_:fps (->> (assoc (label "" (color :white) ) :x 5 :baseline 0 :opacity 0.1)
|
||||||
(utils/add-actor-to-stage screen))}))
|
(utils/add-actor-to-stage screen))}))
|
||||||
|
|
||||||
:on-render
|
:on-render
|
||||||
@@ -1849,14 +1868,14 @@ void main ()
|
|||||||
(grow-hud screen entities :save false)))
|
(grow-hud screen entities :save false)))
|
||||||
|
|
||||||
entities (or (process-fsm screen entities) entities)]
|
entities (or (process-fsm screen entities) entities)]
|
||||||
(label! (:fps entities) :set-text (str (game :fps)))
|
#_(label! (:fps entities) :set-text (str (game :fps)))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(render! screen [ (if (and hud-interactable? (not (:already-saved? entities)))
|
(render! screen [ (if (and hud-interactable? (not (:already-saved? entities)))
|
||||||
(:save entities)
|
(:save entities)
|
||||||
(assoc (:save entities) :opacity 0.5))
|
(assoc (:save entities) :opacity 0.5))
|
||||||
(:fps entities)
|
#_(:fps entities)
|
||||||
(if hud-interactable?
|
(if hud-interactable?
|
||||||
(:inventory entities)
|
(:inventory entities)
|
||||||
(assoc (:inventory entities) :opacity 0.5))
|
(assoc (:inventory entities) :opacity 0.5))
|
||||||
|
|||||||
@@ -47,6 +47,9 @@
|
|||||||
|
|
||||||
(def ^:const +all-cursors+ [:main :wool :mushrooms :carrot :right :down :left :up :flask :flask-with-contents :trophy :ladder :stick :cat-toy :balloon :frog-legs :teddy :portrait :recipe :glass-eye :motivational-tapes :used-earplugs :grass :slobber :flask-with-strength :medal :kiss :sword :hourglass :mandrake :ball-n-chain :key :rope :crowbar :note-1 :ash :sack-lunch :flies :spear :monocle :feather :spell-component :money :charcoal :broken-clock :slingshot :camera :walkie-talkies :alarm-clock :walkie-talkie :flask-water :flask-water-stuff :flask-water-stuff-2 :note-2 :magic-slingshot :active-main :shovel :broom :tune :hand :hand-depressed :talk :talk-depressed :look :look-depressed])
|
(def ^:const +all-cursors+ [:main :wool :mushrooms :carrot :right :down :left :up :flask :flask-with-contents :trophy :ladder :stick :cat-toy :balloon :frog-legs :teddy :portrait :recipe :glass-eye :motivational-tapes :used-earplugs :grass :slobber :flask-with-strength :medal :kiss :sword :hourglass :mandrake :ball-n-chain :key :rope :crowbar :note-1 :ash :sack-lunch :flies :spear :monocle :feather :spell-component :money :charcoal :broken-clock :slingshot :camera :walkie-talkies :alarm-clock :walkie-talkie :flask-water :flask-water-stuff :flask-water-stuff-2 :note-2 :magic-slingshot :active-main :shovel :broom :tune :hand :hand-depressed :talk :talk-depressed :look :look-depressed])
|
||||||
|
|
||||||
|
(def ^:const +cursor-hotspots+ {:look [8 8]
|
||||||
|
:look-depressed [8 8]})
|
||||||
|
|
||||||
(def settings (atom {:music-volume 50.0
|
(def settings (atom {:music-volume 50.0
|
||||||
:sound-volume 75.0
|
:sound-volume 75.0
|
||||||
:fullscreen true}))
|
:fullscreen true}))
|
||||||
@@ -69,12 +72,15 @@
|
|||||||
target-width (* 16 scale)
|
target-width (* 16 scale)
|
||||||
target-height (* 16 scale)
|
target-height (* 16 scale)
|
||||||
resized (Pixmap. target-width target-height (.getFormat base-cursor))
|
resized (Pixmap. target-width target-height (.getFormat base-cursor))
|
||||||
index (.indexOf +all-cursors+ which)]
|
index (.indexOf +all-cursors+ which)
|
||||||
|
[hot-x hot-y] (+cursor-hotspots+ which [0 0])
|
||||||
|
hot-x (int hot-x)
|
||||||
|
hot-y (int hot-y)]
|
||||||
(Pixmap/setFilter Pixmap$Filter/NearestNeighbour)
|
(Pixmap/setFilter Pixmap$Filter/NearestNeighbour)
|
||||||
(pixmap! resized :draw-pixmap base-cursor (* index 18) 0 16 16
|
(pixmap! resized :draw-pixmap base-cursor (* index 18) 0 16 16
|
||||||
0 0 target-width target-height)
|
0 0 target-width target-height)
|
||||||
|
|
||||||
(graphics! :new-cursor resized 0 0 )))
|
(graphics! :new-cursor resized (* hot-x scale) (* hot-y scale) )))
|
||||||
|
|
||||||
(defn get-texture [path]
|
(defn get-texture [path]
|
||||||
(let [atlas-name (str/replace path #".png" "")
|
(let [atlas-name (str/replace path #".png" "")
|
||||||
@@ -388,6 +394,7 @@
|
|||||||
(first raw-pos) (last raw-pos)))
|
(first raw-pos) (last raw-pos)))
|
||||||
hovering-ego (hovering-ego entities last-pos)
|
hovering-ego (hovering-ego entities last-pos)
|
||||||
current (get-in entities [:cursor :current])
|
current (get-in entities [:cursor :current])
|
||||||
|
entities (assoc-in entities [:label :text] "")
|
||||||
selected-inventory-item (@(resolve 'advent.screens.scene/get-selected-inventory-item))]
|
selected-inventory-item (@(resolve 'advent.screens.scene/get-selected-inventory-item))]
|
||||||
|
|
||||||
(cond
|
(cond
|
||||||
@@ -408,13 +415,19 @@
|
|||||||
(assoc-in [:cursor :override] nil))
|
(assoc-in [:cursor :override] nil))
|
||||||
|
|
||||||
(and mouse-override (:only-script mouse-override))
|
(and mouse-override (:only-script mouse-override))
|
||||||
(assoc-in entities [:cursor :override] (:cursor mouse-override))
|
(-> entities
|
||||||
|
(assoc-in [:cursor :override] (:cursor mouse-override))
|
||||||
|
(assoc-in [:label :text] (:label mouse-override)))
|
||||||
|
|
||||||
selected-inventory-item
|
selected-inventory-item
|
||||||
(assoc-in entities [:cursor :override] selected-inventory-item)
|
(-> entities
|
||||||
|
(assoc-in [:cursor :override] selected-inventory-item)
|
||||||
|
(assoc-in [:label :text] (:label mouse-override)))
|
||||||
|
|
||||||
mouse-override
|
mouse-override
|
||||||
(assoc-in entities [:cursor :override] (:cursor mouse-override))
|
(-> entities
|
||||||
|
(assoc-in [:cursor :override] (:cursor mouse-override))
|
||||||
|
(assoc-in [:label :text] (:label mouse-override)))
|
||||||
|
|
||||||
:else
|
:else
|
||||||
(assoc-in entities [:cursor :override] :main))))
|
(assoc-in entities [:cursor :override] :main))))
|
||||||
|
|||||||
Reference in New Issue
Block a user