diff --git a/main.go b/main.go index f3aee8d..991661a 100644 --- a/main.go +++ b/main.go @@ -5,12 +5,15 @@ import ( "encoding/base64" "fmt" "image" + "image/color" "image/png" "math/rand" "os" + "runtime" "time" "github.com/disintegration/gift" + "github.com/eliukblau/pixterm/ansimage" termbox "github.com/nsf/termbox-go" ) @@ -22,6 +25,9 @@ var alienSize = 30 var bombProbability = 0.005 var bombSpeed = 10 +//macOS check +var isMac = runtime.GOOS == "darwin" + // sprites var src = getImage("imgs/sprites.png") var background = getImage("imgs/bg.png") @@ -273,12 +279,21 @@ func collide(s1, s2 Sprite) bool { return false } -// this only works for iTerm2! func printImage(img image.Image) { var buf bytes.Buffer png.Encode(&buf, img) - imgBase64Str := base64.StdEncoding.EncodeToString(buf.Bytes()) - fmt.Printf("\x1b[2;0H\x1b]1337;File=inline=1:%s\a", imgBase64Str) + + if isMac { + imgBase64Str := base64.StdEncoding.EncodeToString(buf.Bytes()) + fmt.Printf("\x1b[2;0H\x1b]1337;File=inline=1:%s\a", imgBase64Str) + } else { + ansiImg, err := ansimage.NewScaledFromReader(&buf, 120, 180, color.Black, ansimage.ScaleModeFit, ansimage.NoDithering) + if err != nil { + panic(err) + } + print("\033[H") + ansiImg.Draw() + } } func getImage(filePath string) image.Image {