Feat: start game btn; add todos.md

This commit is contained in:
Grail Finder
2025-05-09 09:28:30 +03:00
parent 659c8dbbec
commit e20118acea
5 changed files with 42 additions and 14 deletions

View File

@ -1,6 +1,13 @@
{{define "room"}}
<div id="hello-user">
<p>Hello {{.State.Username}};</p>
<p>Room created by {{.Room.CreatorName}};</p>
<p>Game is running: {{.Room.IsRunning}}</p>
<p>
{{if eq .State.Username .Room.CreatorName}}
<button hx-get="/start-game" hx-target="#room" class="bg-amber-100 text-black px-4 py-2 rounded">Start Game</button>
{{end}}
</p>
<p>Turn of the {{.Room.TeamTurn}} team</p>
<p>
{{if eq .State.Team ""}}

View File

@ -72,7 +72,7 @@ func HandleFrontLogin(w http.ResponseWriter, r *http.Request) {
abortWithError(w, err.Error())
return
}
state := models.MakeTestState()
state := models.MakeTestState(cleanName)
state.State.Username = cleanName
// save state to cache
// if err := saveState(cleanName, state.State); err != nil {

View File

@ -47,16 +47,17 @@ type Room struct {
TeamTurn string
RedTeam Team
BlueTeam Team
// RedMime string
// BlueMime string
// RedGuessers []string
// BlueGuessers []string
Cards []WordCard
GameSettings *GameSettings `json:"settings"`
Result uint8 // 0 for unknown; 1 is win for red; 2 if for blue;
BlueCounter uint8
RedCounter uint8
RedTurn bool // false is blue turn
Cards []WordCard
Result uint8 // 0 for unknown; 1 is win for red; 2 if for blue;
BlueCounter uint8
RedCounter uint8
RedTurn bool // false is blue turn
// GameSettings *GameSettings `json:"settings"`
IsRunning bool `json:"is_running"`
Language string `json:"language" example:"en" form:"language"`
RoundTime int32 `json:"round_time"`
// ProgressPct uint32 `json:"progress_pct"`
IsOver bool
}
func (r *Room) ChangeTurn() {

View File

@ -47,7 +47,7 @@ type UserState struct {
Role UserRole
}
func MakeTestState() *FullInfo {
func MakeTestState(creatorName string) *FullInfo {
cards := []WordCard{
{Word: "hamster", Color: "blue"},
{Word: "child", Color: "red"},
@ -80,14 +80,14 @@ func MakeTestState() *FullInfo {
room := &Room{
ID: "test-id",
CreatedAt: time.Now(),
CreatorName: "test-name",
CreatorName: creatorName,
Cards: cards,
RedTeam: redTeam,
BlueTeam: blueTeam,
TeamTurn: "blue",
}
us := &UserState{
Username: "test-name",
Username: creatorName,
Team: UserTeamNone,
Role: UserRoleNone,
RoomID: "test-id",

20
todos.md Normal file
View File

@ -0,0 +1,20 @@
### feats
- game state (running/not);
- start game: btn, endpoint;
- mime: clue + number;
- game log: what clues were given, who opened what cards;
- end game: who won.
- end game: two reasons (black word; all words);
#### sse points
- clue sse update;
- join team;
- start game;
- end turn;
- open card;
- game over;
- timer per turn (when added);
### issues
- new client login rewrites room creator (test room issue);