moving game logic server side

master
Bel LaPointe 2021-03-13 14:52:23 -06:00
parent 0511d661f7
commit ebbf21d23d
4 changed files with 18 additions and 25 deletions

View File

@ -1,6 +1,8 @@
package main package main
type Players [16]Player import "fmt"
type Players []Player
type Game struct { type Game struct {
Pot Currency Pot Currency
@ -26,16 +28,14 @@ type Card struct {
Value int Value int
} }
func (game Game) GetPlayers() []Player { func (game Game) Equals(gameB Game) bool {
players := []Player{} return fmt.Sprint(game) != fmt.Sprint(gameB)
for _, player := range game.Players {
if !player.Empty() {
players = append(players, player)
}
}
return players
} }
func (p Player) Empty() bool { func (p Player) Empty() bool {
return p == (Player{}) return p == (Player{})
} }
func (players *Players) Add(player Player) {
*players = append(*players, player)
}

View File

@ -14,16 +14,3 @@ func TestPlayerEmpty(t *testing.T) {
t.Fatal(p) 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])
}
}

View File

@ -22,7 +22,11 @@ func (gm *GameMaster) GetGame(id string) (Game, error) {
gm.locks.RLock(id) gm.locks.RLock(id)
defer gm.locks.RUnlock(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 { func (gm *GameMaster) CreateGame(id string) error {

View File

@ -47,7 +47,9 @@ func TestGameMasterUpdate(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
game.Players[2].ID = "hi" game.Players.Add(Player{
ID: "hi",
})
game.Pot = 123 game.Pot = 123
err = gm.ReplaceGame(id, game) err = gm.ReplaceGame(id, game)
if err != nil { if err != nil {
@ -58,7 +60,7 @@ func TestGameMasterUpdate(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) 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) t.Fatalf("replace+get don't match:\nwant\t%+v\ngot\t%+v", game, game2)
} }
} }