New heightmap, new templates, new parameters feature.
This commit is contained in:
parent
6618fded9d
commit
05e9daf662
BIN
resources/public/img/heightmaps/isle_of_man.png
Normal file
BIN
resources/public/img/heightmaps/isle_of_man.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.1 KiB |
37
resources/templates/params.html
Normal file
37
resources/templates/params.html
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
{% extends "templates/base.html" %}
|
||||||
|
{% block content %}
|
||||||
|
<form action="{{servlet-context}}/params" method="POST">
|
||||||
|
<p class="widget">
|
||||||
|
<label for="ruleset">The rule set to use</label>
|
||||||
|
<select name="ruleset">
|
||||||
|
<option value="">No change - use your current rules</option>
|
||||||
|
{% for ruleset in rulesets %}
|
||||||
|
<option value="{{ruleset}}">{{ruleset}}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</p>
|
||||||
|
<p class="widget">
|
||||||
|
<label for="heightmap">The map to use</label>
|
||||||
|
<select name="heightmap">
|
||||||
|
<option value="">No change - use your current map</option>
|
||||||
|
{% for heightmap in heightmaps %}
|
||||||
|
<option value="{{heightmap}}">{{heightmap}}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</p>
|
||||||
|
<p class="widget">
|
||||||
|
<label for="pause">
|
||||||
|
Pause duration
|
||||||
|
</label>
|
||||||
|
<input id="pause" type="range" value="{{pause}}" min="0" max="60" step="5" />
|
||||||
|
</p>
|
||||||
|
<p class="help">
|
||||||
|
The pause beteen computing a new state of your world, in seconds
|
||||||
|
</p>
|
||||||
|
<p class="widget">
|
||||||
|
<label for="submit">When you have chosen your parameters</label>
|
||||||
|
<input name="submit" id="submit" type="submit" value="Save your parameters!"/>
|
||||||
|
</p>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{% endblock %}
|
6
resources/templates/trusted-content.html
Normal file
6
resources/templates/trusted-content.html
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{% extends "templates/base.html" %}
|
||||||
|
{% block content %}
|
||||||
|
<div>
|
||||||
|
{{content|safe}}
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
56
src/mw_ui/routes/params.clj
Normal file
56
src/mw_ui/routes/params.clj
Normal file
|
@ -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)}
|
||||||
|
)))))))
|
Loading…
Reference in a new issue