mirror of
https://github.com/cjdenio/crossword.git
synced 2026-10-03 11:06:19 +00:00
fix issues
This commit is contained in:
2 files changed
+20
-8
No files matched your search
+4
-4
@@ -348,16 +348,16 @@ func (state *State) RenderUI(w io.Writer, width int) int {
|
|||||||
|
|
||||||
switch state.UIState {
|
switch state.UIState {
|
||||||
case StateGame:
|
case StateGame:
|
||||||
fmt.Fprintln(w, AnsiDimmed("[enter]/[tab]: next word | [ctrl+a]: menu | [ctrl+c]: exit"))
|
fmt.Fprint(w, AnsiDimmed("[enter]/[tab]: next word | [ctrl+a]: menu | [ctrl+c]: exit\r\n"))
|
||||||
uiHeight += 1
|
uiHeight += 1
|
||||||
case StateMenu:
|
case StateMenu:
|
||||||
fmt.Fprintln(w, AnsiDimmed("[c]: check puzzle/word | [r]: reveal puzzle/word | [x]: clear grid | [q]: exit menu"))
|
fmt.Fprint(w, AnsiDimmed("[c]: check puzzle/word | [r]: reveal puzzle/word | [x]: clear grid | [q]: exit menu\r\n"))
|
||||||
uiHeight += 1
|
uiHeight += 1
|
||||||
case StateCheckMenu:
|
case StateCheckMenu:
|
||||||
fmt.Fprintln(w, AnsiDimmed("[w]: check word | [p]: check puzzle | [q]: exit menu"))
|
fmt.Fprint(w, AnsiDimmed("[w]: check word | [p]: check puzzle | [q]: exit menu\r\n"))
|
||||||
uiHeight += 1
|
uiHeight += 1
|
||||||
case StateRevealMenu:
|
case StateRevealMenu:
|
||||||
fmt.Fprintln(w, AnsiDimmed("[w]: reveal word | [p]: reveal puzzle | [q]: exit menu"))
|
fmt.Fprint(w, AnsiDimmed("[w]: reveal word | [p]: reveal puzzle | [q]: exit menu\r\n"))
|
||||||
uiHeight += 1
|
uiHeight += 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+16
-4
@@ -39,8 +39,20 @@ func main() {
|
|||||||
io.WriteString(s, "\x1b[?25h")
|
io.WriteString(s, "\x1b[?25h")
|
||||||
}()
|
}()
|
||||||
|
|
||||||
pty, _, _ := s.Pty() // TODO: actually handle terminal size changes
|
pty, winCh, isPty := s.Pty()
|
||||||
uiHeight := state.RenderUI(s, pty.Window.Width)
|
if !isPty {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
windowWidth := pty.Window.Width
|
||||||
|
|
||||||
|
uiHeight := state.RenderUI(s, windowWidth)
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
for window := range winCh {
|
||||||
|
windowWidth = window.Width
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
scanner := bufio.NewScanner(s)
|
scanner := bufio.NewScanner(s)
|
||||||
scanner.Split(func(data []byte, atEOF bool) (advance int, token []byte, err error) {
|
scanner.Split(func(data []byte, atEOF bool) (advance int, token []byte, err error) {
|
||||||
@@ -72,14 +84,14 @@ func main() {
|
|||||||
state.SelectedCell = -1
|
state.SelectedCell = -1
|
||||||
fmt.Fprintf(s, "\r\x1b[%dA", uiHeight)
|
fmt.Fprintf(s, "\r\x1b[%dA", uiHeight)
|
||||||
fmt.Fprint(s, "\x1b[J")
|
fmt.Fprint(s, "\x1b[J")
|
||||||
state.RenderUI(s, pty.Window.Width)
|
state.RenderUI(s, windowWidth)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Fprintf(s, "\r\x1b[%dA", uiHeight)
|
fmt.Fprintf(s, "\r\x1b[%dA", uiHeight)
|
||||||
fmt.Fprint(s, "\x1b[J")
|
fmt.Fprint(s, "\x1b[J")
|
||||||
|
|
||||||
uiHeight = state.RenderUI(s, pty.Window.Width)
|
uiHeight = state.RenderUI(s, windowWidth)
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("%s disconnected\n", s.RemoteAddr().String())
|
log.Printf("%s disconnected\n", s.RemoteAddr().String())
|
||||||
|
|||||||
Reference in new issue
Block a user