You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
952 B
Go
47 lines
952 B
Go
4 years ago
|
package app
|
||
|
|
||
|
import (
|
||
|
"github.com/jordanorelli/astro-domu/internal/wire"
|
||
|
)
|
||
|
|
||
|
type login struct {
|
||
|
name string
|
||
|
}
|
||
|
|
||
|
func (l login) exec(ui *UI) {
|
||
|
ui.client = &wire.Client{
|
||
|
Log: ui.Child("client"),
|
||
|
Host: "cdm.jordanorelli.com",
|
||
|
Port: 12805,
|
||
|
}
|
||
|
|
||
|
n, err := ui.client.Dial()
|
||
|
if err != nil {
|
||
|
panic("unable to dial server: " + err.Error())
|
||
|
}
|
||
|
ui.notifications = n
|
||
|
|
||
|
res, err := ui.client.Send(wire.Login{Name: l.name})
|
||
|
if err != nil {
|
||
|
panic("unable to login: " + err.Error())
|
||
|
}
|
||
|
welcome := res.Body.(*wire.Welcome)
|
||
|
ui.Info("cool beans! a login response: %#v", welcome)
|
||
|
ui.state.playerName = l.name
|
||
|
if ui.state.room == nil {
|
||
|
ui.state.room = new(wire.Room)
|
||
|
}
|
||
|
p := welcome.Players[l.name]
|
||
|
// avi := p.Avatar
|
||
|
room := welcome.Rooms[p.Room]
|
||
|
// e := room.Entities[p.Avatar]
|
||
|
ui.state.room = &room
|
||
|
|
||
|
ui.root = &node{
|
||
|
view: &gameView{
|
||
|
Log: ui.Child("game-view"),
|
||
|
},
|
||
|
}
|
||
|
ui.Info("done logging in, we replaced the root view whaduheck")
|
||
|
}
|