select random quote and sources
This commit is contained in:
parent
47199bb6eb
commit
f4b027d7a7
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"authcode": "",
|
"authcode": "",
|
||||||
"name": "Lew Nikolajewitsch Tolstoi",
|
"name": "Lew N. Tolstoi",
|
||||||
"role": "source",
|
"role": "source",
|
||||||
"game": "067fb1b8-8303-4faa-95d2-1832770a791c"
|
"game": "067fb1b8-8303-4faa-95d2-1832770a791c"
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"authcode": "",
|
"authcode": "",
|
||||||
"name": "Antoine de Saint-Exupéry",
|
"name": "A. de Saint-Exupéry",
|
||||||
"role": "source",
|
"role": "source",
|
||||||
"game": "067fb1b8-8303-4faa-95d2-1832770a791c"
|
"game": "067fb1b8-8303-4faa-95d2-1832770a791c"
|
||||||
}
|
}
|
||||||
|
@ -16,3 +16,14 @@ func (gm *Game) getQuoteById(id string) (*quote.Quote, error) {
|
|||||||
|
|
||||||
return quote, nil
|
return quote, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (gm *Game) getAllQuotes() []*quote.Quote {
|
||||||
|
gm.mu.Lock()
|
||||||
|
defer gm.mu.Unlock()
|
||||||
|
|
||||||
|
quotes := make([]*quote.Quote, 0)
|
||||||
|
for _, quote := range gm.quotes {
|
||||||
|
quotes = append(quotes, quote)
|
||||||
|
}
|
||||||
|
return quotes
|
||||||
|
}
|
||||||
|
@ -2,6 +2,9 @@ package game
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"math/rand"
|
||||||
|
"sirlab.de/go/knyt/quote"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (gm *Game) setupRound() {
|
func (gm *Game) setupRound() {
|
||||||
@ -20,16 +23,25 @@ func newRound() Round {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (gm *Game) selectQuote() {
|
func (gm *Game) selectQuote() {
|
||||||
quote, err := gm.getQuoteById("455df6bc-070d-4728-83ab-481ceafa8590")
|
allQuotes := gm.getAllQuotes()
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
sources := []Source{
|
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||||
gm.getSourceById(quote.GetSourceId()),
|
var quote *quote.Quote
|
||||||
}
|
sources := make([]Source, 0)
|
||||||
|
|
||||||
|
for idx, quoteIdx := range r.Perm(len(allQuotes)) {
|
||||||
|
if idx == 0 {
|
||||||
|
quote = allQuotes[0]
|
||||||
|
}
|
||||||
|
sourceId := allQuotes[quoteIdx].GetSourceId()
|
||||||
|
|
||||||
|
if !gm.isSourceIdInList(sources, sourceId) {
|
||||||
|
sources = append(sources, gm.getSourceById(sourceId))
|
||||||
|
}
|
||||||
|
if len(sources) == 12 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
gm.mu.Lock()
|
gm.mu.Lock()
|
||||||
defer gm.mu.Unlock()
|
defer gm.mu.Unlock()
|
||||||
|
|
||||||
@ -49,3 +61,12 @@ func (gm *Game) getSourceById(id string) Source {
|
|||||||
name: plInfo.name,
|
name: plInfo.name,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (gm *Game) isSourceIdInList(sources []Source, sourceId string) bool {
|
||||||
|
for _, source := range sources {
|
||||||
|
if source.id == sourceId {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user