diff --git a/examples/cbitmap/main.go b/examples/cbitmap/main.go new file mode 100644 index 0000000..c9c9560 --- /dev/null +++ b/examples/cbitmap/main.go @@ -0,0 +1,53 @@ +package main + +import ( + "github.com/go-vgo/robotgo" +) + +func main() { + bmp, free := loadBitmaps("start.png", "chest.png", "eat.png") + defer free() + + for { + clickBitmap(bmp["start.png"], false) + clickBitmap(bmp["chest.png"], true) + clickBitmap(bmp["eat.png"], false) + } +} + +func loadBitmaps(files ...string) (bitmaps map[string]robotgo.Bitmap, free func()) { + freeFuncs := make([]func(), 0) + bitmaps = make(map[string]robotgo.Bitmap) + for _, f := range files { + bitmap, freeFunc := readBitmap(f) + bitmaps[f] = bitmap + freeFuncs = append(freeFuncs, freeFunc) + } + + free = func() { + for key := range freeFuncs { + freeFuncs[key]() + } + } + return bitmaps, free +} + +func readBitmap(file string) (bitmap robotgo.Bitmap, free func()) { + cBitmap := robotgo.OpenBitmap(file) + bitmap = robotgo.ToBitmap(cBitmap) + free = func() { + robotgo.FreeBitmap(cBitmap) + } + return bitmap, free +} + +func clickBitmap(bmp robotgo.Bitmap, doubleClick bool) bool { + fx, fy := robotgo.FindBitmap(robotgo.ToCBitmap(bmp)) + if fx != -1 && fy != -1 { + robotgo.MoveMouse(fx, fy) + robotgo.MouseClick("left", doubleClick) + return true + } + + return false +}