Feat: which bot to move
This commit is contained in:
		| @@ -6,6 +6,7 @@ import ( | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| 	"golias/broker" | ||||
| 	"golias/llmapi" | ||||
| 	"golias/models" | ||||
| 	"golias/utils" | ||||
| 	"golias/wordloader" | ||||
| @@ -121,6 +122,10 @@ func loadState(username string) (*models.UserState, error) { | ||||
| 	return resp, nil | ||||
| } | ||||
|  | ||||
| func loadBot(botName, roomID string) (*llmapi.Bot, error) { | ||||
| 	return nil, nil | ||||
| } | ||||
|  | ||||
| func getAllNames() []string { | ||||
| 	names := []string{} | ||||
| 	// will not scale | ||||
|   | ||||
| @@ -85,7 +85,7 @@ func HandleShowColor(w http.ResponseWriter, r *http.Request) { | ||||
| 		fi.Room.IsRunning = false | ||||
| 		fi.Room.IsOver = true | ||||
| 		fi.Room.TeamWon = oppositeColor | ||||
| 	case "white", oppositeColor: | ||||
| 	case "white", string(oppositeColor): | ||||
| 		// end turn | ||||
| 		fi.Room.TeamTurn = oppositeColor | ||||
| 	} | ||||
|   | ||||
| @@ -3,6 +3,7 @@ package handlers | ||||
| import ( | ||||
| 	"context" | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| 	"golias/models" | ||||
| 	"html/template" | ||||
| 	"net/http" | ||||
| @@ -146,9 +147,9 @@ func HandleEndTurn(w http.ResponseWriter, r *http.Request) { | ||||
| 		return | ||||
| 	} | ||||
| 	// check if one who pressed it is from the team who has the turn | ||||
| 	if fi.Room.TeamTurn != string(fi.State.Team) { | ||||
| 		err = errors.New("unexpected team turn:" + fi.Room.TeamTurn) | ||||
| 		abortWithError(w, err.Error()) | ||||
| 	if fi.Room.TeamTurn != fi.State.Team { | ||||
| 		msg := fmt.Sprintln("unexpected team turn:" + fi.Room.TeamTurn) | ||||
| 		abortWithError(w, msg) | ||||
| 		return | ||||
| 	} | ||||
| 	fi.Room.ChangeTurn() | ||||
| @@ -162,6 +163,17 @@ func HandleEndTurn(w http.ResponseWriter, r *http.Request) { | ||||
| 		abortWithError(w, err.Error()) | ||||
| 		return | ||||
| 	} | ||||
| 	if botName := fi.Room.WhichBotToMove(); botName != "" { | ||||
| 		// get bot from memcache | ||||
| 		bot, err := loadBot(botName, fi.Room.ID) | ||||
| 		if err != nil { | ||||
| 			log.Error("failed to load bot", "bot_name", botName, "room_id", fi.Room.ID) | ||||
| 			abortWithError(w, err.Error()) | ||||
| 			return | ||||
| 		} | ||||
| 		// send signal to bot | ||||
| 		bot.SignalsCh <- true | ||||
| 	} | ||||
| 	notify(models.NotifyRoomUpdatePrefix+fi.Room.ID, "") | ||||
| 	tmpl.ExecuteTemplate(w, "base", fi) | ||||
| } | ||||
| @@ -203,6 +215,17 @@ func HandleStartGame(w http.ResponseWriter, r *http.Request) { | ||||
| 		abortWithError(w, err.Error()) | ||||
| 		return | ||||
| 	} | ||||
| 	if botName := fi.Room.WhichBotToMove(); botName != "" { | ||||
| 		// get bot from memcache | ||||
| 		bot, err := loadBot(botName, fi.Room.ID) | ||||
| 		if err != nil { | ||||
| 			log.Error("failed to load bot", "bot_name", botName, "room_id", fi.Room.ID) | ||||
| 			abortWithError(w, err.Error()) | ||||
| 			return | ||||
| 		} | ||||
| 		// send signal to bot | ||||
| 		bot.SignalsCh <- true | ||||
| 	} | ||||
| 	// to update only the room that should be updated | ||||
| 	notify(models.NotifyRoomUpdatePrefix+fi.Room.ID, "") | ||||
| 	// notify(models.NotifyBacklogPrefix+fi.Room.ID, "game started") | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Grail Finder
					Grail Finder