first step at dialogue trees.

This commit is contained in:
2014-09-24 13:25:07 -07:00
parent 4c2da6acd5
commit f90ae6b7c3
14 changed files with 113 additions and 200 deletions

View File

@@ -4,7 +4,8 @@
[play-clj.utils :refer :all]
[play-clj.g2d :refer :all]
[clojure.pprint]
[advent.pathfind])
[advent.pathfind]
#_[advent.screens.scene :as scene])
(:import [com.badlogic.gdx.graphics Pixmap Pixmap$Filter Texture Texture$TextureFilter]
[com.badlogic.gdx.graphics.g2d TextureRegion]
[com.badlogic.gdx.scenes.scene2d.utils Align]))
@@ -52,3 +53,36 @@
:on-resize (fn [screen entities]
(size! screen 1280 960)))
(defscreen choice-screen
:on-show
(fn [screen entities]
(update! screen :renderer (stage) :camera (orthographic))
{})
:on-render
(fn [screen [entities]]
(render! screen (vals entities))
entities)
:on-present-choices
(fn [{:keys [pairs]} [entities]]
(let [font (bitmap-font "ego/font.fnt" )
tr (bitmap-font! font :get-region)
scale 1
width (/ (game :width) 1.5)
tx (.getTexture tr)
_ (texture! tx :set-filter Texture$TextureFilter/Linear Texture$TextureFilter/Linear)]
(into entities (for [[[text result-script] i] (map vector pairs (range))]
(do (println result-script)
[i (assoc (label text (style :label font (color :white))) :x 0 :y (* 20 i) :result-script result-script)])))))
:on-touch-down (fn [screen [entities]]
(let [{:keys [x y]} (input->screen screen {:x (:input-x screen) :y (:input-y screen)})]
(when (seq entities)
(when (< y (* 20 (count entities)))
(run! @(resolve 'advent.screens.scene/scene) :on-start-script :script (:result-script (entities (int (/ y 20)))))
{}))))
:on-resize (fn [screen entities]
(size! screen 1280 960)))