Draft: feat login
This commit is contained in:
54
plays/redirect.go
Normal file
54
plays/redirect.go
Normal file
@@ -0,0 +1,54 @@
|
||||
package plays
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"gitea.konchin.com/ytshih/inp2025/game/types"
|
||||
tea "github.com/charmbracelet/bubbletea"
|
||||
)
|
||||
|
||||
type tickMsg time.Time
|
||||
|
||||
type Redirect struct {
|
||||
Message string
|
||||
|
||||
secLeft int
|
||||
}
|
||||
|
||||
func NewRedirect(msg string) *Redirect {
|
||||
return &Redirect{
|
||||
Message: msg,
|
||||
|
||||
secLeft: 3,
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Redirect) Init() tea.Cmd {
|
||||
return tea.Sequence(tea.ClearScreen, Tick())
|
||||
}
|
||||
|
||||
func (m *Redirect) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
switch msg := msg.(type) {
|
||||
case tea.KeyMsg:
|
||||
switch msg.String() {
|
||||
case "q", "ctrl+c", "enter":
|
||||
return m, tea.Quit
|
||||
}
|
||||
case types.TickMsg:
|
||||
m.secLeft--
|
||||
if m.secLeft <= 0 {
|
||||
return m, tea.Quit
|
||||
}
|
||||
return m, Tick()
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
|
||||
func (m *Redirect) View() string {
|
||||
return fmt.Sprintf("%s\n\nExit in %d seconds...", m.Message, m.secLeft)
|
||||
}
|
||||
|
||||
func (m *Redirect) Next(queue *[]*tea.Program) error {
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user