From 30c54a0e2329b4ea8b451b3d98684f6a64e4be5d Mon Sep 17 00:00:00 2001 From: Maeght Loan <37497007+loan-mgt@users.noreply.github.com> Date: Sun, 19 May 2024 16:57:54 +0000 Subject: [PATCH] add reset --- internal/handlers/moveHandler.go | 69 ++++++++++++++++++++++++++------ template/move.html.tmpl | 8 ++-- 2 files changed, 61 insertions(+), 16 deletions(-) diff --git a/internal/handlers/moveHandler.go b/internal/handlers/moveHandler.go index 16917b7..f6d0da5 100644 --- a/internal/handlers/moveHandler.go +++ b/internal/handlers/moveHandler.go @@ -19,7 +19,7 @@ type MoveRequest struct { type MoveData struct { TargetId string - Move string + Move *string } type Messenger struct { @@ -48,7 +48,7 @@ func HandleMove(message []byte, conn *websocket.Conn) error { playerMoveData := MoveData{ TargetId: "player-selected-move", - Move: request.Move, + Move: &request.Move, } var tplBuffer bytes.Buffer @@ -73,26 +73,53 @@ func HandleMove(message []byte, conn *websocket.Conn) error { if err != nil { log.Println("Failed to send opponent move:", err) } + err = sendMove(player.Conn, "opponent", opponent.Move) if err != nil { log.Println("Failed to send opponent move:", err) } + message := "next round in 3s" + if err := sendMessage(conn, message); err != nil { + log.Println("Error sending message to player:", err) + } + + opponent, err := services.GetOpponent(player.Name) + if err != nil { + log.Println("Failed getting opponent:", err) + } else { + if err := sendMessage(opponent.Conn, message); err != nil { + log.Println("Error sending message to opponent:", err) + } + } + go func() { - time.Sleep(5 * time.Second) - message := "test after 5s" - if err := sendMessage(conn, message); err != nil { - log.Println("Error sending message to player:", err) + time.Sleep(3 * time.Second) + + services.SetPlayerMove(player.Name, "") + + services.SetPlayerMove(opponent.Name, "") + + err = resetMove(opponent.Conn, "player") + if err != nil { + log.Println("Failed to send player move:", err) + } + + err = resetMove(opponent.Conn, "opponent") + if err != nil { + log.Println("Failed to send opponent move:", err) + } + + err = resetMove(player.Conn, "player") + if err != nil { + log.Println("Failed to send player move:", err) } - opponent, err := services.GetOpponent(player.Name) + err = resetMove(player.Conn, "opponent") if err != nil { - log.Println("Failed getting opponent:", err) - } else { - if err := sendMessage(opponent.Conn, message); err != nil { - log.Println("Error sending message to opponent:", err) - } + log.Println("Failed to send opponent move:", err) } + }() } @@ -141,7 +168,23 @@ func sendMessage(conn *websocket.Conn, message string) error { func sendMove(conn *websocket.Conn, to string, move string) error { moveData := MoveData{ TargetId: fmt.Sprintf("%s-selected-move", to), - Move: move, + Move: &move, + } + + var tplBufferOpponent bytes.Buffer + err := utils.Templates.ExecuteTemplate(&tplBufferOpponent, "move", moveData) + if err != nil { + log.Println("Error executing template for opponent:", err) + return err + } + + return conn.WriteMessage(websocket.TextMessage, tplBufferOpponent.Bytes()) + +} + +func resetMove(conn *websocket.Conn, to string) error { + moveData := MoveData{ + TargetId: fmt.Sprintf("%s-selected-move", to), } var tplBufferOpponent bytes.Buffer diff --git a/template/move.html.tmpl b/template/move.html.tmpl index 0c7fe8f..168fa08 100644 --- a/template/move.html.tmpl +++ b/template/move.html.tmpl @@ -1,5 +1,7 @@ {{ define "move" }} -
- {{.Move}} -
+
+ {{ if .Move }} + {{.Move}} + {{ end }} +
{{ end }}