Draft: big refactor

This commit is contained in:
2025-09-16 16:03:27 +08:00
parent f527230f1e
commit c4f2b0af25
42 changed files with 684 additions and 215 deletions

65
plays/roomWaiting.go Normal file
View 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)
}
}