Feat: roomlist & join room
This commit is contained in:
		| @@ -8,6 +8,16 @@ import ( | ||||
| 	"net/http" | ||||
| ) | ||||
|  | ||||
| // func HandleRoomList(w http.ResponseWriter, r *http.Request) { | ||||
| // 	pubRooms := listPublicRooms() | ||||
| // 	tmpl, err := template.ParseGlob("components/*.html") | ||||
| // 	if err != nil { | ||||
| // 		abortWithError(w, err.Error()) | ||||
| // 		return | ||||
| // 	} | ||||
| // 	tmpl.ExecuteTemplate(w, "base", pubRooms) | ||||
| // } | ||||
|  | ||||
| func HandleCreateRoom(w http.ResponseWriter, r *http.Request) { | ||||
| 	// parse payload | ||||
| 	payload := &models.RoomReq{ | ||||
| @@ -32,6 +42,7 @@ func HandleCreateRoom(w http.ResponseWriter, r *http.Request) { | ||||
| 	} | ||||
| 	fi.State.RoomID = room.ID | ||||
| 	fi.Room = room | ||||
| 	fi.Room.IsPublic = true // hardcode for local test; move to form | ||||
| 	if err := saveFullInfo(fi); err != nil { | ||||
| 		msg := "failed to set current room to session" | ||||
| 		log.Error(msg, "error", err) | ||||
| @@ -103,9 +114,6 @@ func HandleRoomEnter(w http.ResponseWriter, r *http.Request) { | ||||
| } | ||||
|  | ||||
| func HandleJoinTeam(w http.ResponseWriter, r *http.Request) { | ||||
| 	// parse payload | ||||
| 	// team := r.URL.Query().Get("team") | ||||
| 	// role := r.URL.Query().Get("role") | ||||
| 	r.ParseForm() | ||||
| 	team := r.PostFormValue("team") | ||||
| 	role := r.PostFormValue("role") | ||||
| @@ -121,11 +129,20 @@ func HandleJoinTeam(w http.ResponseWriter, r *http.Request) { | ||||
| 		abortWithError(w, err.Error()) | ||||
| 		return | ||||
| 	} | ||||
| 	if fi.Room.IsRunning && role == "mime" { | ||||
| 		err = errors.New("cannot join as mime when game is running") | ||||
| 		abortWithError(w, err.Error()) | ||||
| 		return | ||||
| 	} | ||||
| 	fi, err = joinTeam(r.Context(), role, team) | ||||
| 	if err != nil { | ||||
| 		abortWithError(w, err.Error()) | ||||
| 		return | ||||
| 	} | ||||
| 	// reveal all cards | ||||
| 	if role == "mime" { | ||||
| 		fi.Room.RevealAllCards() | ||||
| 	} | ||||
| 	// return html | ||||
| 	tmpl, err := template.ParseGlob("components/*.html") | ||||
| 	if err != nil { | ||||
| @@ -177,6 +194,39 @@ func HandleStartGame(w http.ResponseWriter, r *http.Request) { | ||||
| 		abortWithError(w, err.Error()) | ||||
| 		return | ||||
| 	} | ||||
| 	// reveal all cards | ||||
| 	if fi.State.Role == "mime" { | ||||
| 		fi.Room.RevealAllCards() | ||||
| 	} | ||||
| 	// return html | ||||
| 	tmpl, err := template.ParseGlob("components/*.html") | ||||
| 	if err != nil { | ||||
| 		abortWithError(w, err.Error()) | ||||
| 		return | ||||
| 	} | ||||
| 	tmpl.ExecuteTemplate(w, "room", fi) | ||||
| } | ||||
|  | ||||
| func HandleJoinRoom(w http.ResponseWriter, r *http.Request) { | ||||
| 	roomID := r.URL.Query().Get("id") | ||||
| 	room, err := getRoomByID(roomID) | ||||
| 	if err != nil { | ||||
| 		abortWithError(w, err.Error()) | ||||
| 		return | ||||
| 	} | ||||
| 	fi, err := getFullInfoByCtx(r.Context()) | ||||
| 	if err != nil { | ||||
| 		abortWithError(w, err.Error()) | ||||
| 		return | ||||
| 	} | ||||
| 	room.PlayerList = append(room.PlayerList, fi.State.Username) | ||||
| 	fi.State.RoomID = room.ID | ||||
| 	fi.Room = room | ||||
| 	fi.List = nil | ||||
| 	if err := saveFullInfo(fi); err != nil { | ||||
| 		abortWithError(w, err.Error()) | ||||
| 		return | ||||
| 	} | ||||
| 	// return html | ||||
| 	tmpl, err := template.ParseGlob("components/*.html") | ||||
| 	if err != nil { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Grail Finder
					Grail Finder