moving game logic server side
parent
0511d661f7
commit
ebbf21d23d
|
|
@ -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)
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -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])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue