Draft: big refactor
This commit is contained in:
65
plays/roomWaiting.go
Normal file
65
plays/roomWaiting.go
Normal file
@@ -0,0 +1,65 @@
|
||||
package plays
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"gitea.konchin.com/ytshih/inp2025/game/types"
|
||||
tea "github.com/charmbracelet/bubbletea"
|
||||
)
|
||||
|
||||
type RoomWaiting struct {
|
||||
*Base
|
||||
|
||||
doneCh chan struct{}
|
||||
}
|
||||
|
||||
func NewRoomWaiting(base *Base) *RoomWaiting {
|
||||
m := &RoomWaiting{
|
||||
base: base,
|
||||
|
||||
doneCh: make(chan struct{}),
|
||||
}
|
||||
return &m
|
||||
}
|
||||
|
||||
func updateRoomWaitingInfo(m *RoomWaiting) error {
|
||||
for {
|
||||
select {
|
||||
case <-m.doneCh:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (m *RoomWaiting) Init() tea.Cmd {
|
||||
go updateRoomWaitingInfo(m)
|
||||
return tea.Sequence(tea.ClearScreen, Tick(refreshTick))
|
||||
}
|
||||
|
||||
func (m *RoomWaiting) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
if _, cmd := m.Base.Update(msg); cmd != nil {
|
||||
return m, cmd
|
||||
}
|
||||
|
||||
switch msg := msg.(type) {
|
||||
case types.TickMsg:
|
||||
return m, Tick(refreshTick)
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
|
||||
func (m *RoomWaiting) View() string {
|
||||
var b strings.Builder
|
||||
|
||||
b.WriteString("waiting for user to join ...")
|
||||
return b.String()
|
||||
}
|
||||
|
||||
func (m *RoomWaiting) Next(queue *[]*tea.Program) error {
|
||||
m.doneCh <- struct{}{}
|
||||
switch m.choice {
|
||||
case "":
|
||||
*queue = append(*queue,
|
||||
tea.NewProgram)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user