Typer/src/message_bar.go
2025-06-03 16:59:39 +03:00

54 lines
1.1 KiB
Go

package main
import (
"github.com/gdamore/tcell"
"time"
)
type TyperMessage struct {
timestamp int64
message string
}
var messageLog = make([]TyperMessage, 0)
func PrintMessage(window *Window, message string) {
messageLog = append(messageLog, TyperMessage{timestamp: time.Now().UnixMilli(), message: message})
err := window.screen.PostEvent(tcell.NewEventInterrupt(nil))
if err != nil {
return
}
go func() {
time.Sleep(5 * time.Second)
err := window.screen.PostEvent(tcell.NewEventInterrupt(nil))
if err != nil {
return
}
}()
}
func drawMessageBar(window *Window) {
screen := window.screen
messageBarStyle := tcell.StyleDefault.Foreground(tcell.ColorBlack).Background(tcell.ColorWhite)
sizeX, sizeY := screen.Size()
messageToPrint := ""
if len(messageLog) > 0 && time.Since(time.UnixMilli(messageLog[len(messageLog)-1].timestamp)).Seconds() < 5 {
messageToPrint = messageLog[len(messageLog)-1].message
}
for x := 0; x < sizeX; x++ {
char := ' '
if x < len(messageToPrint) {
char = int32(messageToPrint[x])
}
screen.SetContent(x, sizeY-1, char, nil, messageBarStyle)
}
}