Add Zukitchi widget with animations, moods, and frame-based rendering
This commit is contained in:
parent
0a7e89307f
commit
3e765c7b95
@ -21,14 +21,13 @@ func Zukitchi() ZukitchiOptions {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var mood = make([]string, 0)
|
|
||||||
var frames = 1
|
|
||||||
var frame = 0
|
|
||||||
var lastFrame = time.Now()
|
var lastFrame = time.Now()
|
||||||
|
|
||||||
|
var pet = zukitchi.New()
|
||||||
|
|
||||||
func createZukitchi(ctx context.Context, _ terminalapi.Terminal, _ interface{}) widgetapi.Widget {
|
func createZukitchi(ctx context.Context, _ terminalapi.Terminal, _ interface{}) widgetapi.Widget {
|
||||||
widget := util.PanicOnErrorWithResult(text.New())
|
widget := util.PanicOnErrorWithResult(text.New())
|
||||||
changeMood("sleep")
|
go util.Periodic(ctx, 1*time.Minute, pet.Run())
|
||||||
go util.Periodic(ctx, util.RedrawInterval, func() error {
|
go util.Periodic(ctx, util.RedrawInterval, func() error {
|
||||||
return draw(widget)
|
return draw(widget)
|
||||||
})
|
})
|
||||||
@ -36,25 +35,14 @@ func createZukitchi(ctx context.Context, _ terminalapi.Terminal, _ interface{})
|
|||||||
return widget
|
return widget
|
||||||
}
|
}
|
||||||
|
|
||||||
func changeMood(moodToChangeTo string) {
|
|
||||||
switch moodToChangeTo {
|
|
||||||
case "sleep":
|
|
||||||
mood = zukitchi.Sleep(0)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
frames = len(mood)
|
|
||||||
frame = 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func draw(widget *text.Text) error {
|
func draw(widget *text.Text) error {
|
||||||
if time.Since(lastFrame) < 1*time.Second {
|
if time.Since(lastFrame) < 1*time.Second {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
widget.Reset()
|
widget.Reset()
|
||||||
if err := widget.Write(mood[frame], text.WriteCellOpts(cell.FgColor(cell.ColorWhite))); err != nil {
|
if err := widget.Write(pet.NextFrame(), text.WriteCellOpts(cell.FgColor(cell.ColorBlack), cell.BgColor(cell.ColorGreen))); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
frame = (frame + 1) % frames
|
|
||||||
lastFrame = time.Now()
|
lastFrame = time.Now()
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user