2 Commits
viz ... ui
Author SHA1 Message Date
sm b597ec529e DELETE: print out user events 2016-07-17 23:51:08 -07:00
sm aaf2641d80 Added way to get user input events from Spectator 2016-07-17 23:51:08 -07:00
2 changed files with 19 additions and 0 deletions
+9
View File
@@ -39,6 +39,15 @@ func main() {
ui := client.NewSpectator(c.Width, c.Height) ui := client.NewSpectator(c.Width, c.Height)
c.Player = ui c.Player = ui
go func() {
if ui.User == nil {
return
}
for e := range ui.User {
fmt.Printf("%+v\n", e)
}
}()
go func() { go func() {
if err := c.Play(); err != nil { if err := c.Play(); err != nil {
close(ui.Die) close(ui.Die)
+10
View File
@@ -37,6 +37,10 @@ type Spectator struct {
// when closed will cause the Spectator to exit the render loop. // when closed will cause the Spectator to exit the render loop.
Die chan struct{} Die chan struct{}
// User, if populated, will return a stream of (ostensibly keyboard) events
// for use outside of the Spectator.
User chan termbox.Event
} }
// SetIDs is implemented so Spectator can be used as a client.Player. // SetIDs is implemented so Spectator can be used as a client.Player.
@@ -58,6 +62,8 @@ func (s *Spectator) Spectate() error {
return err return err
} }
termbox.SetInputMode(termbox.InputMouse)
s.viewX, s.viewY = termbox.Size() s.viewX, s.viewY = termbox.Size()
events := make(chan termbox.Event, 1024) events := make(chan termbox.Event, 1024)
@@ -101,6 +107,10 @@ func (s *Spectator) Spectate() error {
err = fmt.Errorf("Quitting because of termbox error:\n%v\n", event.Err) err = fmt.Errorf("Quitting because of termbox error:\n%v\n", event.Err)
return return
} }
if s.User != nil {
s.User <- event
}
case update := <-s.StateStream: case update := <-s.StateStream:
termbox.Clear(termbox.ColorBlack, termbox.ColorBlack) termbox.Clear(termbox.ColorBlack, termbox.ColorBlack)