From ebbf21d23d969ee556a49cb2da1dac1f9d2bf5d7 Mon Sep 17 00:00:00 2001 From: Bel LaPointe Date: Sat, 13 Mar 2021 14:52:23 -0600 Subject: [PATCH] moving game logic server side --- src/server/game.go | 18 +++++++++--------- src/server/game_test.go | 13 ------------- src/server/gamemaster.go | 6 +++++- src/server/gamemaster_test.go | 6 ++++-- 4 files changed, 18 insertions(+), 25 deletions(-) diff --git a/src/server/game.go b/src/server/game.go index c5b2643..7cc7562 100644 --- a/src/server/game.go +++ b/src/server/game.go @@ -1,6 +1,8 @@ package main -type Players [16]Player +import "fmt" + +type Players []Player type Game struct { Pot Currency @@ -26,16 +28,14 @@ type Card struct { Value int } -func (game Game) GetPlayers() []Player { - players := []Player{} - for _, player := range game.Players { - if !player.Empty() { - players = append(players, player) - } - } - return players +func (game Game) Equals(gameB Game) bool { + return fmt.Sprint(game) != fmt.Sprint(gameB) } func (p Player) Empty() bool { return p == (Player{}) } + +func (players *Players) Add(player Player) { + *players = append(*players, player) +} diff --git a/src/server/game_test.go b/src/server/game_test.go index 3f7a473..571505a 100644 --- a/src/server/game_test.go +++ b/src/server/game_test.go @@ -14,16 +14,3 @@ func TestPlayerEmpty(t *testing.T) { t.Fatal(p) } } - -func TestGameGetPlayers(t *testing.T) { - var g Game - if players := g.GetPlayers(); len(players) != 0 { - t.Fatal(players) - } - g.Players[5].ID = "id" - if players := g.GetPlayers(); len(players) != 1 { - t.Fatal(players) - } else if players[0].ID != "id" { - t.Fatal(players[0]) - } -} diff --git a/src/server/gamemaster.go b/src/server/gamemaster.go index 57c342a..0904503 100644 --- a/src/server/gamemaster.go +++ b/src/server/gamemaster.go @@ -22,7 +22,11 @@ func (gm *GameMaster) GetGame(id string) (Game, error) { gm.locks.RLock(id) defer gm.locks.RUnlock(id) - return gm.storage.GetGame(id) + game, err := gm.storage.GetGame(id) + if game.Players == nil { + game.Players = make(Players, 0) + } + return game, err } func (gm *GameMaster) CreateGame(id string) error { diff --git a/src/server/gamemaster_test.go b/src/server/gamemaster_test.go index f1e7ca2..f1cf9e8 100644 --- a/src/server/gamemaster_test.go +++ b/src/server/gamemaster_test.go @@ -47,7 +47,9 @@ func TestGameMasterUpdate(t *testing.T) { t.Fatal(err) } - game.Players[2].ID = "hi" + game.Players.Add(Player{ + ID: "hi", + }) game.Pot = 123 err = gm.ReplaceGame(id, game) if err != nil { @@ -58,7 +60,7 @@ func TestGameMasterUpdate(t *testing.T) { if err != nil { t.Fatal(err) } - if game2 != game { + if game2.Equals(game) { t.Fatalf("replace+get don't match:\nwant\t%+v\ngot\t%+v", game, game2) } }