send quote and sources to clients
This commit is contained in:
parent
7ccef35f3d
commit
5f5033e846
@ -24,6 +24,8 @@ export default {
|
|||||||
right: 0;
|
right: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
background-color: #002040;
|
background-color: #002040;
|
||||||
|
max-width: 600px;
|
||||||
|
overflow: auto;
|
||||||
|
|
||||||
&__json {
|
&__json {
|
||||||
margin: 1em 2em;
|
margin: 1em 2em;
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package game
|
package game
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"sirlab.de/go/knyt/syncdata"
|
"sirlab.de/go/knyt/syncdata"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -17,6 +18,7 @@ func (gm *Game) populateGameInfo() syncdata.GameInfo {
|
|||||||
State: gm.state,
|
State: gm.state,
|
||||||
Phase: gm.phase,
|
Phase: gm.phase,
|
||||||
Players: gm.getPlayers(),
|
Players: gm.getPlayers(),
|
||||||
|
Round: gm.getRoundInfo(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -34,3 +36,22 @@ func (gm *Game) getPlayers() []syncdata.PlayerInfo {
|
|||||||
|
|
||||||
return players
|
return players
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (gm *Game) getRoundInfo() *syncdata.RoundInfo {
|
||||||
|
if gm.state != STATE_PLAY {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
quote := gm.quotes[gm.round.quoteId]
|
||||||
|
if quote == nil {
|
||||||
|
fmt.Printf("fatal error: quote id \"%s\" not found\n", gm.round.quoteId)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
roundInfo := syncdata.RoundInfo{
|
||||||
|
Quote: quote.GetQuote(),
|
||||||
|
Sources: gm.round.sources,
|
||||||
|
}
|
||||||
|
|
||||||
|
return &roundInfo
|
||||||
|
}
|
||||||
|
37
server/src/game/runRound.go
Normal file
37
server/src/game/runRound.go
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
package game
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (gm *Game) runRound() {
|
||||||
|
state := gm.GetState()
|
||||||
|
if state != STATE_IDLE && state != STATE_PLAY {
|
||||||
|
fmt.Println(fmt.Errorf("expected state \"IDLE\" | \"PLAY\" != \"%s\"", state))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
err := gm.changeGameState(STATE_ANY, STATE_PLAY, PHASE_SELECT_QUOTE)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
gm.selectQuote()
|
||||||
|
gm.notifyClients()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (gm *Game) selectQuote() {
|
||||||
|
gm.mu.Lock()
|
||||||
|
defer gm.mu.Unlock()
|
||||||
|
|
||||||
|
gm.round.quoteId = "455df6bc-070d-4728-83ab-481ceafa8590"
|
||||||
|
gm.round.sources = []string{
|
||||||
|
"Herbert Grönemeyer",
|
||||||
|
"Frank Sinatra",
|
||||||
|
"Gaius Julius Cäsar",
|
||||||
|
"Thomas Alva Edison",
|
||||||
|
"Konfuzius",
|
||||||
|
"George W. Bush jun.",
|
||||||
|
}
|
||||||
|
}
|
@ -9,22 +9,6 @@ func (gm *Game) StartGame() {
|
|||||||
go gm.runRound()
|
go gm.runRound()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gm *Game) runRound() {
|
|
||||||
state := gm.GetState()
|
|
||||||
if state != STATE_IDLE && state != STATE_PLAY {
|
|
||||||
fmt.Println(fmt.Errorf("expected state \"IDLE\" | \"PLAY\" != \"%s\"", state))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
err := gm.changeGameState(STATE_ANY, STATE_PLAY, PHASE_NONE)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
gm.notifyClients()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (gm *Game) ResetGame() {
|
func (gm *Game) ResetGame() {
|
||||||
err := gm.changeGameState(STATE_ANY, STATE_IDLE, PHASE_NONE)
|
err := gm.changeGameState(STATE_ANY, STATE_IDLE, PHASE_NONE)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -9,13 +9,13 @@ import (
|
|||||||
const (
|
const (
|
||||||
STATE_ANY = "*"
|
STATE_ANY = "*"
|
||||||
STATE_IDLE = "idle"
|
STATE_IDLE = "idle"
|
||||||
STATE_ENTER_STATEMENTS = "enter-quotes"
|
|
||||||
STATE_READY_SET = "ready-set"
|
STATE_READY_SET = "ready-set"
|
||||||
STATE_PLAY = "play"
|
STATE_PLAY = "play"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
PHASE_NONE = ""
|
PHASE_NONE = ""
|
||||||
|
PHASE_SELECT_QUOTE = "select-quote"
|
||||||
)
|
)
|
||||||
|
|
||||||
type playerInfo struct {
|
type playerInfo struct {
|
||||||
@ -25,6 +25,11 @@ type playerInfo struct {
|
|||||||
isIdle bool
|
isIdle bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Round struct {
|
||||||
|
quoteId string
|
||||||
|
sources []string
|
||||||
|
}
|
||||||
|
|
||||||
type Game struct {
|
type Game struct {
|
||||||
mu sync.Mutex
|
mu sync.Mutex
|
||||||
id string
|
id string
|
||||||
@ -34,6 +39,7 @@ type Game struct {
|
|||||||
state string
|
state string
|
||||||
phase string
|
phase string
|
||||||
quotes map[string]*quote.Quote
|
quotes map[string]*quote.Quote
|
||||||
|
round Round
|
||||||
}
|
}
|
||||||
|
|
||||||
type GameJson struct {
|
type GameJson struct {
|
||||||
|
@ -6,11 +6,17 @@ type PlayerInfo struct {
|
|||||||
IsIdle bool `json:"isIdle"`
|
IsIdle bool `json:"isIdle"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type RoundInfo struct {
|
||||||
|
Quote string `json:"quote"`
|
||||||
|
Sources []string `json:"sources"`
|
||||||
|
}
|
||||||
|
|
||||||
type GameInfo struct {
|
type GameInfo struct {
|
||||||
GameId string `json:"id"`
|
GameId string `json:"id"`
|
||||||
State string `json:"state"`
|
State string `json:"state"`
|
||||||
Phase string `json:"phase"`
|
Phase string `json:"phase"`
|
||||||
Players []PlayerInfo `json:"players"`
|
Players []PlayerInfo `json:"players"`
|
||||||
|
Round *RoundInfo `json:"round"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type SyncData struct {
|
type SyncData struct {
|
||||||
|
Loading…
Reference in New Issue
Block a user