diff --git a/pkg/generator/world.go b/pkg/generator/world.go index 5d3c6e5..eb3f430 100644 --- a/pkg/generator/world.go +++ b/pkg/generator/world.go @@ -102,6 +102,8 @@ func New(size int, numWastelands int, numMountains int, numRuins int, seed strin Seed: seed, } + // TODO: Return error wenn kein Platz mehr da ist + // All empty for start for i := 0; i < w.Size*w.Size; i++ { w.World = append(w.World, Tile{Territory: EmptyTerritory}) diff --git a/pkg/web/service.go b/pkg/web/service.go index 556c396..c49f58d 100644 --- a/pkg/web/service.go +++ b/pkg/web/service.go @@ -21,6 +21,7 @@ func Start(address string, port int) { http.Handle("/static/", http.FileServer(http.FS(staticFiles))) http.HandleFunc("/", indexHandler) http.HandleFunc("/map.svg", mapHandler) + http.HandleFunc("/print", printHandler) addr := address + ":" + strconv.Itoa(port) @@ -32,7 +33,7 @@ func Start(address string, port int) { } } -func mapHandler(w http.ResponseWriter, req *http.Request) { +func worldFromRequest(req *http.Request) generator.World { size, err := strconv.Atoi(req.URL.Query().Get("s")) if err != nil { size = 11 @@ -54,21 +55,35 @@ func mapHandler(w http.ResponseWriter, req *http.Request) { ruins = 6 } - world := generator.New(size, wastelands, mountains, ruins, seed) + return generator.New(size, wastelands, mountains, ruins, seed) +} +func mapHandler(w http.ResponseWriter, req *http.Request) { + world := worldFromRequest(req) log.Printf("GET /map.svg?%v (%v)", req.URL.Query().Encode(), req.RemoteAddr) w.Header().Set("Content-Type", "image/svg+xml") w.Header().Set("Content-Length", strconv.Itoa(len(world.SVG()))) io.WriteString(w, world.SVG()) } -func indexHandler(w http.ResponseWriter, req *http.Request) { - seed := generator.RandomSeed() - world := generator.New(11, 7, 5, 6, seed) +func printHandler(w http.ResponseWriter, req *http.Request) { + world := worldFromRequest(req) + log.Printf("GET /print?%v (%v)", req.URL.Query().Encode(), req.RemoteAddr) + tpl, err := template.ParseFS(templateFiles, "templates/print.tpl.html") + + if err != nil { + log.Fatal(err) + } + + tpl.Execute(w, world) +} + +func indexHandler(w http.ResponseWriter, req *http.Request) { + seed := generator.RandomSeed() + world := generator.New(11, 7, 5, 6, seed) + log.Printf("GET / (%v) Seed: %v", req.RemoteAddr, seed) + tpl, err := template.ParseFS(templateFiles, "templates/index.tpl.html") - log.Printf("GET / (%v) Seed: %v", req.RemoteAddr, seed) - - tpl, err := template.ParseFS(templateFiles, "templates/index.tpl.html") if err != nil { log.Fatal(err) } diff --git a/pkg/web/static/generator.js b/pkg/web/static/generator.js index 3e83561..2fe3377 100644 --- a/pkg/web/static/generator.js +++ b/pkg/web/static/generator.js @@ -16,6 +16,14 @@ document.addEventListener('DOMContentLoaded', function() { document.querySelector('#map-link').setAttribute('href', newMapUrl); }; + let actionButtons = document.querySelectorAll('button[class="action"]'); + Array.prototype.forEach.call(actionButtons, function(action, i) { + action.addEventListener('click', function(e) { + console.log("adsf"); + document.location.href = e.target.getAttribute('data-target'); + }); + }); + let buttons = document.querySelectorAll('input[type="button"]') Array.prototype.forEach.call(buttons, function(button, i) { button.addEventListener('click', function(e) { diff --git a/pkg/web/static/print.css b/pkg/web/static/print.css new file mode 100644 index 0000000..b0cbece --- /dev/null +++ b/pkg/web/static/print.css @@ -0,0 +1,9 @@ +img { + margin: 10px; + width: 420px; +} + +p { + font-family: Courier new; + font-size: 18px; +} diff --git a/pkg/web/static/styles.css b/pkg/web/static/styles.css index 075bdf6..746c1dd 100644 --- a/pkg/web/static/styles.css +++ b/pkg/web/static/styles.css @@ -31,6 +31,14 @@ input[type="text"] { input[name="seed"] { width: 250px; } +input[name="refresh"] { + margin-right: 8px; + float: left; +} +a.action { + display: inline-block; + margin: 5px 8px; +} fieldset { width: 370px; diff --git a/pkg/web/templates/index.tpl.html b/pkg/web/templates/index.tpl.html index da21f9f..76aad92 100644 --- a/pkg/web/templates/index.tpl.html +++ b/pkg/web/templates/index.tpl.html @@ -3,23 +3,20 @@ - Map Generator für "Der Kartograph" - + Der Kartograph -- Map Generator -

Map Generator für "Der Kartograph"

+

Der Kartograph — Map Generator

- Wem der beigelegte Block zu eintönig wird oder schon leergespielt hat, kann sich - entweder die Mini-Erweiterung kaufen, in dem ein weiterer Block enthalten ist, - oder aber diesen Generator nutzen, um sich zufällige Maps generieren zu lassen. - Die generierten Karten entsprechen den erweiterten Regeln, können aber für etwas - mehr Spaß angepasst werden.

- - {{ with . }} + Wem der beigelegte Spielblock des Spiels Der Kartograph + des PEGASUS SPIELE Verlags zu eintönig wird oder ihn schon leergespielt hat, + hat hier die Möglichkeit, neue Karten zu generieren. Die Standardwerte + sind der Minivariante + "Tabula Rasa" entnommen.
Seed @@ -50,8 +47,11 @@
-
- {{ end }} + + + + +

2011 Aaron Fischer

diff --git a/pkg/web/templates/print.tpl.html b/pkg/web/templates/print.tpl.html new file mode 100644 index 0000000..717d3b6 --- /dev/null +++ b/pkg/web/templates/print.tpl.html @@ -0,0 +1,15 @@ + + + + + + Der Kartograph -- Map Generator + + + + +

{{ .Seed }}

+ + + +