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.
38 lines
759 B
Go
38 lines
759 B
Go
package app
|
|
|
|
import (
|
|
"github.com/gdamore/tcell/v2"
|
|
"github.com/jordanorelli/astro-domu/internal/sim"
|
|
"github.com/jordanorelli/astro-domu/internal/wire"
|
|
)
|
|
|
|
type state struct {
|
|
playerName string
|
|
avatar *wire.Entity
|
|
room *wire.Room
|
|
history []sim.ChatMessage
|
|
inventory inventory
|
|
detail view
|
|
}
|
|
|
|
// detailView is a proxy view. Wherever you put a detailView, you get the
|
|
// current view assigned to the detail in the room state
|
|
type detailView struct {
|
|
showing view
|
|
}
|
|
|
|
func (v *detailView) handleEvent(e tcell.Event) change {
|
|
if v.showing == nil {
|
|
return nil
|
|
}
|
|
return v.showing.handleEvent(e)
|
|
}
|
|
|
|
func (v *detailView) draw(img canvas, st *state) {
|
|
v.showing = st.detail
|
|
if v.showing == nil {
|
|
return
|
|
}
|
|
v.showing.draw(img, st)
|
|
}
|