From 05e9daf6629804ed30bc200806ed4aa87b9852f7 Mon Sep 17 00:00:00 2001 From: Simon Brooke Date: Tue, 22 Jul 2014 10:11:57 +0100 Subject: [PATCH] New heightmap, new templates, new parameters feature. --- .../public/img/heightmaps/isle_of_man.png | Bin 0 -> 6291 bytes resources/templates/params.html | 37 ++++++++++++ resources/templates/trusted-content.html | 6 ++ src/mw_ui/routes/params.clj | 56 ++++++++++++++++++ 4 files changed, 99 insertions(+) create mode 100644 resources/public/img/heightmaps/isle_of_man.png create mode 100644 resources/templates/params.html create mode 100644 resources/templates/trusted-content.html create mode 100644 src/mw_ui/routes/params.clj diff --git a/resources/public/img/heightmaps/isle_of_man.png b/resources/public/img/heightmaps/isle_of_man.png new file mode 100644 index 0000000000000000000000000000000000000000..7de05e91fcb2475d47ed08cfd828d7785522c2b6 GIT binary patch literal 6291 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 literal 0 HcmV?d00001 diff --git a/resources/templates/params.html b/resources/templates/params.html new file mode 100644 index 0000000..f0e13cb --- /dev/null +++ b/resources/templates/params.html @@ -0,0 +1,37 @@ +{% extends "templates/base.html" %} +{% block content %} +
+

+ + +

+

+ + +

+

+ + +

+

+ The pause beteen computing a new state of your world, in seconds +

+

+ + +

+
+ +{% endblock %} \ No newline at end of file diff --git a/resources/templates/trusted-content.html b/resources/templates/trusted-content.html new file mode 100644 index 0000000..94f188b --- /dev/null +++ b/resources/templates/trusted-content.html @@ -0,0 +1,6 @@ +{% extends "templates/base.html" %} +{% block content %} +
+ {{content|safe}} +
+{% endblock %} diff --git a/src/mw_ui/routes/params.clj b/src/mw_ui/routes/params.clj new file mode 100644 index 0000000..d7f4150 --- /dev/null +++ b/src/mw_ui/routes/params.clj @@ -0,0 +1,56 @@ +(ns mw-ui.routes.params + (:use clojure.walk + compojure.core) + (:require [hiccup.core :refer [html]] + [mw-engine.heightmap :as heightmap] + [mw-parser.bulk :as compiler] + [mw-ui.layout :as layout] + [mw-ui.util :as util] + [mw-ui.render-world :as world] + [noir.session :as session])) + +(defn- send-params [] + {{:title "Choose your world" + :heightmaps (util/list-resources "resources/public/img/heightmaps" #"([0-9a-z-_]+).png") + :pause (or (session/get :pause) 5) + :rulesets (util/list-resources "resources/rulesets" #"([0-9a-z-_]+).txt") + }) + +(defn params-page + "Handler for params request. If no `request` passed, show empty params form. + If `request` is passed, put parameters from request into session and show + the world page." + ([] + (layout/render "params.html" (send-params))) + ([request] + (try + (let [params (keywordize-keys (:form-params request)) + map (:heightmap params) + pause (:pause params) + rulefile (:ruleset params) + rulepath (str "resources/rulesets/" rulefile ".txt")] + (if (not (= map "")) + (session/put! :world + (heightmap/apply-heightmap + (str "resources/public/img/heightmaps/" map ".png")))) + (if (not (= rulefile "")) + (do + (session/put! :rule-text (slurp rulepath)) + (session/put! :rules (compiler/compile-file rulepath)))) + (if (not (= pause "")) + (session/put! :pause pause)) + (layout/render "params.html" + (merge (send-params) + {:r rulefile + :h map + :message "Your parameters are saved, now look at your world"}))) + (catch Exception e + (let [params (keywordize-keys (:form-params request))] + (layout/render "params.html" + (merge (send-params) + {:title "Choose your world" + :r (:ruleset params) + :h (:heightmap params) + :message "Your paramters are not saved" + :error (str (.getName (.getClass e)) ": " (.getMessage e) "; " params)} + )))))))