Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b597ec529e | ||
|
|
aaf2641d80 |
@@ -39,6 +39,15 @@ func main() {
|
||||
ui := client.NewSpectator(c.Width, c.Height)
|
||||
c.Player = ui
|
||||
|
||||
go func() {
|
||||
if ui.User == nil {
|
||||
return
|
||||
}
|
||||
for e := range ui.User {
|
||||
fmt.Printf("%+v\n", e)
|
||||
}
|
||||
}()
|
||||
|
||||
go func() {
|
||||
if err := c.Play(); err != nil {
|
||||
close(ui.Die)
|
||||
|
||||
@@ -37,6 +37,10 @@ type Spectator struct {
|
||||
|
||||
// when closed will cause the Spectator to exit the render loop.
|
||||
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.
|
||||
@@ -58,6 +62,8 @@ func (s *Spectator) Spectate() error {
|
||||
return err
|
||||
}
|
||||
|
||||
termbox.SetInputMode(termbox.InputMouse)
|
||||
|
||||
s.viewX, s.viewY = termbox.Size()
|
||||
|
||||
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)
|
||||
return
|
||||
}
|
||||
|
||||
if s.User != nil {
|
||||
s.User <- event
|
||||
}
|
||||
case update := <-s.StateStream:
|
||||
termbox.Clear(termbox.ColorBlack, termbox.ColorBlack)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user