68 lines
904 B
Go
68 lines
904 B
Go
package data // code.bitsetter.de/fun/gosl/data
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
|
|
nc "github.com/rthornton128/goncurses"
|
|
)
|
|
|
|
var (
|
|
win *nc.Window
|
|
ncquit = make(chan bool)
|
|
)
|
|
|
|
func RenderFrame(f *Frame) {
|
|
win.Clear()
|
|
for k, _ := range f.Data {
|
|
win.MovePrint(k+1, 1, string(f.Data[k]))
|
|
}
|
|
}
|
|
|
|
func InitNC(killchan chan<- os.Signal) {
|
|
var err error
|
|
win, err = nc.Init()
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
os.Exit(1)
|
|
}
|
|
win.Timeout(1)
|
|
go func() {
|
|
select {
|
|
case <-ncquit:
|
|
log.Println("Exiting NC")
|
|
killchan <- os.Kill
|
|
}
|
|
}()
|
|
}
|
|
|
|
func ExitNC() {
|
|
//if win != nil {
|
|
nc.End()
|
|
ncquit <- true
|
|
// }
|
|
}
|
|
|
|
func GetChar() int {
|
|
if win != nil {
|
|
k := win.GetChar()
|
|
return int(k)
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func TestNC() (int, int) {
|
|
win, err := nc.Init()
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
os.Exit(1)
|
|
}
|
|
win.Clear()
|
|
h, w := win.MaxYX()
|
|
nc.End()
|
|
fmt.Printf("screen: %d x %d\n", w, h)
|
|
|
|
return w, h
|
|
}
|