Add lobby and pack concept.

This commit is contained in:
Greyson Parrelli
2026-07-23 22:01:54 -04:00
parent 9d9acc4577
commit e74f983470
18 changed files with 665 additions and 111 deletions
+25 -6
View File
@@ -22,12 +22,15 @@ type client struct {
// clientMessage is anything a player can ask the server to do. Type decides
// which other fields matter.
type clientMessage struct {
Type string `json:"type"`
Row int `json:"row"` // buy
Cards []string `json:"cards"` // discard, trade
Pick int `json:"pick"` // tradeChoose
Order []string `json:"order"` // arrange
Name string `json:"name"` // debugAdd
Type string `json:"type"`
Row int `json:"row"` // buy
Cards []string `json:"cards"` // discard, trade
Pick int `json:"pick"` // tradeChoose
Order []string `json:"order"` // arrange
Name string `json:"name"` // debugAdd
Pack string `json:"pack"` // setPack
Difficulty string `json:"difficulty"` // addBot
Target string `json:"target"` // removePlayer (player ID)
}
type serverMessage struct {
@@ -119,6 +122,22 @@ func (s *Server) apply(r *room, c *client, msg clientMessage) {
g := r.game
var err error
switch msg.Type {
case "setPack":
if err = requireHost(g, c.playerID); err == nil {
err = g.SetPack(msg.Pack)
}
case "addBot":
if err = requireHost(g, c.playerID); err == nil {
err = addBot(g, msg.Difficulty)
}
case "removePlayer":
if err = requireHost(g, c.playerID); err == nil {
err = g.RemovePlayer(msg.Target)
}
case "start":
if err = requireHost(g, c.playerID); err == nil {
err = g.StartGame()
}
case "buy":
err = g.Buy(c.playerID, msg.Row)
case "sell":