Browse Source

create play route, render requirements for level

pull/1/head
Stephanie Gredell 7 months ago
parent
commit
15a0c60a68
  1. 35
      main.go
  2. 28
      static/game.html

35
main.go

@ -2,10 +2,13 @@ package main @@ -2,10 +2,13 @@ package main
import (
"context"
"fmt"
"html/template"
"net/http"
"net/url"
"os"
"os/signal"
"strings"
"systemdesigngame/internals/level"
"time"
)
@ -17,11 +20,18 @@ func main() { @@ -17,11 +20,18 @@ func main() {
mux.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))
mux.HandleFunc("/", index)
mux.HandleFunc("/game", game)
mux.HandleFunc("/play/", play)
srv := &http.Server{
Addr: ":8080",
Handler: mux,
}
levels, err := level.LoadLevels("data/levels.json")
if err != nil {
panic("failed to load levels: " + err.Error())
}
level.InitRegistry(levels)
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt)
defer stop()
@ -62,3 +72,28 @@ func game(w http.ResponseWriter, r *http.Request) { @@ -62,3 +72,28 @@ func game(w http.ResponseWriter, r *http.Request) {
}
tmpl.ExecuteTemplate(w, "game.html", data)
}
func play(w http.ResponseWriter, r *http.Request) {
levelName := r.URL.Path[len("/play/"):]
levelName, err := url.PathUnescape(levelName)
if err != nil {
http.Error(w, "Invalid level name", http.StatusBadRequest)
return
}
lvl, err := level.GetLevel(strings.ToLower(levelName), level.DifficultyEasy)
if err != nil {
http.Error(w, "Level not found"+err.Error(), http.StatusNotFound)
return
}
allLevels := level.AllLevels()
data := struct {
Levels []level.Level
Level *level.Level
}{
Levels: allLevels,
Level: lvl,
}
tmpl.ExecuteTemplate(w, "game.html", data)
}

28
static/game.html

@ -550,7 +550,7 @@ @@ -550,7 +550,7 @@
<ul class="challenge-list">
{{range .Levels}}
<li class="challenge-item">
<li class="challenge-item {{if and (eq .Name $.Level.Name) (eq .Difficulty $.Level.Difficulty)}}active{{end}}">
<div class="challenge-name">{{.Name}}</div>
<div class="challenge-difficulty {{.Difficulty}}">{{.Difficulty}}</div>
</li>
@ -571,22 +571,38 @@ @@ -571,22 +571,38 @@
<!-- Requirements -->
<div id="content1" class="tab-content">
{{ if .Level.InterviewerRequirements }}
<div class="requirements-section">
<h3>Interviewer Requirements</h3>
<ul class="requirements-list">
{{ range .Level.InterviewerRequirements }}
<li class="requirement-item">{{ . }}</li>
{{ end }}
</ul>
</div>
{{ end }}
{{ if .Level.FunctionalRequirements }}
<div class="requirements-section">
<h3>Functional Requirements</h3>
<ul class="requirements-list">
<li class="requirement-item">Something</li>
<li class="requirement-item">Something else</li>
{{ range .Level.FunctionalRequirements }}
<li class="requirement-item">{{ . }}</li>
{{ end }}
</ul>
</div>
{{ end }}
{{ if .Level.NonFunctionalRequirements }}
<div class="requirements-section">
<h3>Non-Functional Requirements</h3>
<ul class="requirements-list">
<li class="requirement-item">Something</li>
<li class="requirement-item">Something else</li>
{{ range .Level.NonFunctionalRequirements }}
<li class="requirement-item">{{ . }}</li>
{{ end }}
</ul>
</div>
{{ end }}
</div>
<!-- Design-->

Loading…
Cancel
Save