don't crash on setupRound() when there're no more quotes
This commit is contained in:
parent
f2e0166062
commit
32f9fa68b3
@ -6,7 +6,7 @@ import (
|
|||||||
|
|
||||||
func (gm *Game) FinishGame() {
|
func (gm *Game) FinishGame() {
|
||||||
state, _ := gm.GetState()
|
state, _ := gm.GetState()
|
||||||
if state != STATE_PLAY {
|
if state != STATE_IDLE && state != STATE_PLAY {
|
||||||
fmt.Printf("invalid state, can't finish game in %s state\n", state)
|
fmt.Printf("invalid state, can't finish game in %s state\n", state)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,10 @@ func (gm *Game) runRound() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
gm.setupRound()
|
errRound := gm.setupRound()
|
||||||
|
if errRound != nil {
|
||||||
|
gm.runFinal()
|
||||||
|
return
|
||||||
|
}
|
||||||
gm.notifyClients()
|
gm.notifyClients()
|
||||||
}
|
}
|
||||||
|
@ -7,9 +7,10 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (gm *Game) setupRound() {
|
func (gm *Game) setupRound() error {
|
||||||
gm.round = newRound()
|
gm.round = newRound()
|
||||||
gm.selectQuote()
|
err := gm.selectQuote()
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func newRound() Round {
|
func newRound() Round {
|
||||||
@ -22,7 +23,7 @@ func newRound() Round {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gm *Game) selectQuote() {
|
func (gm *Game) selectQuote() error {
|
||||||
allQuotes := gm.getAllQuotes()
|
allQuotes := gm.getAllQuotes()
|
||||||
|
|
||||||
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||||
@ -46,6 +47,11 @@ func (gm *Game) selectQuote() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if quote == nil {
|
||||||
|
return fmt.Errorf("no more quotes found")
|
||||||
|
}
|
||||||
|
|
||||||
gm.mu.Lock()
|
gm.mu.Lock()
|
||||||
defer gm.mu.Unlock()
|
defer gm.mu.Unlock()
|
||||||
|
|
||||||
@ -54,6 +60,7 @@ func (gm *Game) selectQuote() {
|
|||||||
for idx, idxPerm := range r.Perm(len(sources)) {
|
for idx, idxPerm := range r.Perm(len(sources)) {
|
||||||
gm.round.sources[idx] = sources[idxPerm]
|
gm.round.sources[idx] = sources[idxPerm]
|
||||||
}
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gm *Game) getSourceById(id string) Source {
|
func (gm *Game) getSourceById(id string) Source {
|
||||||
|
Loading…
Reference in New Issue
Block a user