# HG changeset patch # User Steve Losh # Date 1450012329 0 # Node ID 251301483006b9af1aba8dbb10d091a444b000e9 # Parent 1e658fe8fe4ba6dfd431369ed58a31166c6b4672 Add temperature control. diff -r 1e658fe8fe4b -r 251301483006 README.markdown --- a/README.markdown Sat Dec 12 20:26:29 2015 +0000 +++ b/README.markdown Sun Dec 13 13:12:09 2015 +0000 @@ -43,8 +43,8 @@ Those are the basic controls. To actually interact with the world you have two options: -* **`w`** make the world one degree hotter. -* **`s`** make the world one degree colder. +* **`+`** make the world one degree hotter. +* **`-`** make the world one degree colder. ## Game Mechanics diff -r 1e658fe8fe4b -r 251301483006 src/silt/core.clj --- a/src/silt/core.clj Sat Dec 12 20:26:29 2015 +0000 +++ b/src/silt/core.clj Sun Dec 13 13:12:09 2015 +0000 @@ -23,7 +23,7 @@ (def window-loc (ref [0 0])) (defonce last-timestamp (atom 0)) -(defonce terrain (ref [])) +(defonce terrain (ref {})) (def terrain-rate 2) (def terrain-objects {{:name :rock :glyph "*"} 20 @@ -106,7 +106,8 @@ (defn affect-temp [animal] animal) (defn fix-temp [animal] animal) -(defn find-resources [animal] animal) +(defn find-resources [animal] + animal) (defn wander [animal] (update-in animal [:loc] @@ -187,9 +188,11 @@ (dosync (ref-set window-loc [0 0]))) (defn reset-terrain! [] - (let [new-terrain (-> (generate-terrain) - (into (generate-water)) - dedupe-things)] + (let [new-terrain (as-> (generate-terrain) t + (into t (generate-water)) + (dedupe-things t) + (map (juxt :loc identity) t) + (into {} t))] (dosync (ref-set terrain new-terrain)) nil)) @@ -208,7 +211,7 @@ (defn draw-terrain! [screen] (let [[swidth sheight] (s/get-size screen)] - (doseq [{:keys [loc glyph styles]} @terrain + (doseq [{:keys [loc glyph styles]} (vals @terrain) :let [[sx sy] (calc-screen-coords loc)] :when (and (< -1 sx swidth) (< -1 sy sheight))] @@ -277,6 +280,9 @@ \9 10000)))) nil) +(defn update-temperature! [amt] + (dosync (commute world-temp + amt))) + (defn reset-world! [] (reset-window!) (reset-terrain!) @@ -300,6 +306,12 @@ (\1 \2 \3 \4 \5 \6 \7 \8 \9) (update-animals! key) + (\+ \=) + (update-temperature! 1) + + (\- \_) + (update-temperature! -1) + \r (reset-world!)