game: countdown to play state
This commit is contained in:
parent
24d828d420
commit
7ccef35f3d
@ -13,7 +13,6 @@ func (gm *Game) changeGameState(expectedState, newState, newPhase string) error
|
|||||||
}
|
}
|
||||||
gm.state = newState
|
gm.state = newState
|
||||||
gm.phase = newPhase
|
gm.phase = newPhase
|
||||||
gm.eng.Update()
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -29,7 +28,6 @@ func (gm *Game) changeGamePhase(expectedState, expectedPhase, newPhase string) e
|
|||||||
return fmt.Errorf("game phase \"%s\" != expected phase \"%s\"", gm.phase, expectedPhase)
|
return fmt.Errorf("game phase \"%s\" != expected phase \"%s\"", gm.phase, expectedPhase)
|
||||||
}
|
}
|
||||||
gm.phase = newPhase
|
gm.phase = newPhase
|
||||||
gm.eng.Update()
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -40,6 +40,13 @@ func (gm *Game) GetId() string {
|
|||||||
return gm.id
|
return gm.id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (gm *Game) GetState() string {
|
||||||
|
gm.mu.Lock()
|
||||||
|
defer gm.mu.Unlock()
|
||||||
|
|
||||||
|
return gm.state
|
||||||
|
}
|
||||||
|
|
||||||
func (gm *Game) GetName() string {
|
func (gm *Game) GetName() string {
|
||||||
gm.mu.Lock()
|
gm.mu.Lock()
|
||||||
defer gm.mu.Unlock()
|
defer gm.mu.Unlock()
|
||||||
|
8
server/src/game/notifyClients.go
Normal file
8
server/src/game/notifyClients.go
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
package game
|
||||||
|
|
||||||
|
func (gm *Game) notifyClients() {
|
||||||
|
gm.mu.Lock()
|
||||||
|
defer gm.mu.Unlock()
|
||||||
|
|
||||||
|
gm.eng.Update()
|
||||||
|
}
|
43
server/src/game/runCountdown.go
Normal file
43
server/src/game/runCountdown.go
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
package game
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (gm *Game) runCountdown() {
|
||||||
|
phases := []string{
|
||||||
|
"Ready?",
|
||||||
|
"3",
|
||||||
|
"2",
|
||||||
|
"1",
|
||||||
|
"Go!",
|
||||||
|
"",
|
||||||
|
}
|
||||||
|
|
||||||
|
err := gm.changeGameState(STATE_IDLE, STATE_READY_SET, phases[0])
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
gm.notifyClients()
|
||||||
|
time.Sleep(2000 * time.Millisecond)
|
||||||
|
|
||||||
|
for i := 1; i < len(phases); i++ {
|
||||||
|
err = gm.changeGamePhase(STATE_READY_SET, phases[i-1], phases[i])
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
gm.notifyClients()
|
||||||
|
time.Sleep(1500 * time.Millisecond)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = gm.changeGameState(STATE_READY_SET, STATE_PLAY, PHASE_NONE)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
gm.runRound()
|
||||||
|
}
|
@ -2,43 +2,27 @@ package game
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func (gm *Game) StartGame() {
|
func (gm *Game) StartGame() {
|
||||||
go gm.startGameSub()
|
// go gm.runCountdown()
|
||||||
|
go gm.runRound()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gm *Game) startGameSub() {
|
func (gm *Game) runRound() {
|
||||||
phases := []string{
|
state := gm.GetState()
|
||||||
"5",
|
if state != STATE_IDLE && state != STATE_PLAY {
|
||||||
"4",
|
fmt.Println(fmt.Errorf("expected state \"IDLE\" | \"PLAY\" != \"%s\"", state))
|
||||||
"3",
|
return
|
||||||
"2",
|
|
||||||
"1",
|
|
||||||
"Go!",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
err := gm.changeGameState(STATE_IDLE, STATE_READY_SET, phases[0])
|
err := gm.changeGameState(STATE_ANY, STATE_PLAY, PHASE_NONE)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
for i := 1; i < len(phases); i++ {
|
gm.notifyClients()
|
||||||
time.Sleep(1500 * time.Millisecond)
|
|
||||||
err = gm.changeGamePhase(STATE_READY_SET, phases[i-1], phases[i])
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
time.Sleep(3 * time.Second)
|
|
||||||
err = gm.changeGameState(STATE_READY_SET, STATE_PLAY, PHASE_NONE)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gm *Game) ResetGame() {
|
func (gm *Game) ResetGame() {
|
||||||
|
Loading…
Reference in New Issue
Block a user