Fix: various bug fix
This commit is contained in:
@@ -172,6 +172,7 @@ func (m *LobbyModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
case tea.KeyMsg:
|
||||
switch msg.String() {
|
||||
case "ctrl+c":
|
||||
m.shutdown()
|
||||
return m, tea.Quit
|
||||
}
|
||||
}
|
||||
@@ -207,10 +208,25 @@ func (m *LobbyModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
case serverSendReplyMsg:
|
||||
if m.err == nil {
|
||||
m.shutdown()
|
||||
|
||||
m.client.SetBaseURL("http://" + m.remote)
|
||||
shutdown := workflows.WordleServer(m.listener)
|
||||
*m.queue = append(*m.queue,
|
||||
tea.NewProgram(NewWordleClientModel(m.BaseModel, shutdown)))
|
||||
m.Push(types.Program{
|
||||
Run: func() error { shutdown(); return nil },
|
||||
Stage: types.StageGaming,
|
||||
})
|
||||
|
||||
m.Push(types.Program{
|
||||
Run: func() error { m.client.R().Post("/api/end"); return nil },
|
||||
Stage: types.StageGaming,
|
||||
})
|
||||
|
||||
p := tea.NewProgram(NewWordleClientModel(m.BaseModel))
|
||||
m.Push(types.Program{
|
||||
Run: func() error { _, err := p.Run(); return err },
|
||||
Stage: types.StageGaming,
|
||||
})
|
||||
|
||||
return m, tea.Quit
|
||||
} else {
|
||||
m.op = lobbyOperationServerWaiting
|
||||
@@ -229,17 +245,29 @@ func (m *LobbyModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
m.cursor = (m.cursor + 1) % n
|
||||
}
|
||||
case "enter":
|
||||
m.remote = m.endpoints[m.cursor]
|
||||
cmds = append(cmds, m.clientJoin())
|
||||
if n := len(m.endpoints); n > 0 && m.cursor < n {
|
||||
m.remote = m.endpoints[m.cursor]
|
||||
cmds = append(cmds, m.clientJoin())
|
||||
}
|
||||
}
|
||||
case clientScanMsg:
|
||||
cmds = append(cmds, m.clientScan())
|
||||
case clientJoinMsg:
|
||||
if m.err == nil && m.remote != "" {
|
||||
m.shutdown()
|
||||
|
||||
m.client.SetBaseURL("http://" + m.remote)
|
||||
*m.BaseModel.queue = append(*m.BaseModel.queue,
|
||||
tea.NewProgram(NewWordleClientModel(m.BaseModel, func() {})))
|
||||
m.Push(types.Program{
|
||||
Run: func() error { m.client.R().Post("/api/end"); return nil },
|
||||
Stage: types.StageGaming,
|
||||
})
|
||||
|
||||
p := tea.NewProgram(NewWordleClientModel(m.BaseModel))
|
||||
m.Push(types.Program{
|
||||
Run: func() error { _, err := p.Run(); return err },
|
||||
Stage: types.StageGaming,
|
||||
})
|
||||
|
||||
return m, tea.Quit
|
||||
}
|
||||
}
|
||||
@@ -251,13 +279,16 @@ func (m *LobbyModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
func (m *LobbyModel) View() string {
|
||||
var b strings.Builder
|
||||
|
||||
fmt.Fprintf(&b, "Login as '%s' for '%d' times\n",
|
||||
m.client.UserInfo.Username, m.loginCount)
|
||||
|
||||
switch m.op {
|
||||
case lobbyOperationChoose:
|
||||
b.WriteString("Choose Role\n(S)erver / (C)lient\n")
|
||||
case lobbyOperationServerWaiting:
|
||||
b.WriteString("Wait for user to join...\n")
|
||||
case lobbyOperationServerChoose:
|
||||
fmt.Fprintf(&b, "Receive Join Request by '%s'\nAccept (Y)/N\n",
|
||||
fmt.Fprintf(&b, "Receive Join Request by '%s'\nAccept (Y) / (n)\n",
|
||||
m.remoteUser)
|
||||
case lobbyOperationClientScannning:
|
||||
b.WriteString("Scanning server...\nChoose one to join\n")
|
||||
|
||||
Reference in New Issue
Block a user