func main() { done := false redraw := true if !allegro.Init() { log.Fatalln("Failed to init Allegro.") } if !imageio.Init() { log.Fatalln("Failed to init IIO addon.") } font.InitFont() display := allegro.CreateDisplay(640, 480) defer display.Destroy() if display == nil { log.Fatalln("Error creating display.") } if !allegro.InstallKeyboard() { log.Fatalln("Error installing keyboard.") } font := font.LoadFont("data/fixed_font.tga", 0, 0) if font == nil { log.Fatalln("Error loading data/fixed_font.tga") } bmp := allegro.LoadBitmap("data/mysha.pcx") dispBmp := bmp defer bmp.Destroy() if bmp == nil { log.Fatalln("Error loading data/mysha.pcx") } text := "Display bitmap (space to change)" allegro.SetNewBitmapFlags(allegro.MemoryBitmap) memBmp := allegro.LoadBitmap("data/mysha.pcx") defer memBmp.Destroy() if memBmp == nil { log.Fatalln("Error loading data/mysha.pcx") } timer := allegro.CreateTimer(INTERVAL) defer timer.Destroy() if timer == nil { log.Fatalln("Could not create Timer.") } queue := allegro.CreateEventQueue() defer queue.Destroy() if queue == nil { log.Fatalln("Could not create Queue.") } queue.RegisterEventSource(allegro.GetKeyboardEventSource()) queue.RegisterEventSource(display.GetEventSource()) queue.RegisterEventSource(timer.GetEventSource()) timer.Start() allegro.SetBlender(allegro.Add, allegro.One, allegro.InverseAlpha) for !done { if redraw && queue.IsEmpty() { update(bmp) allegro.ClearToColor(allegro.MapRgbF(0, 0, 0)) bmp.DrawTinted(allegro.MapRgbaF(1, 1, 1, 0.5), bmpX, bmpY, bmpFlag) font.DrawText(allegro.MapRgbaF(1, 1, 1, 0.5), 0, 0, 0, text) allegro.FlipDisplay() redraw = false } event := queue.WaitForEvent() switch event.Type() { case allegro.EventKeyDown: if event.KeyboardKeycode() == allegro.KeyEscape { done = true } else if event.KeyboardKeycode() == allegro.KeySpace { if bmp == memBmp { bmp = dispBmp text = "Display bitmap (space to change)" } else { bmp = memBmp text = "Memory bitmap (space to change)" } } case allegro.EventDisplayClose: done = true case allegro.EventTimer: redraw = true } } }
func main() { if !allegro.Init() { log.Fatalln("Could not init Allegro.") } if !allegro.InstallKeyboard() { log.Fatalln("Could not init Keyboard.") } if !imageio.Init() { log.Fatalln("Could not init ImageIO.") } allegro.SetNewDisplayFlags(allegro.Resizable | allegro.GenerateExposeEvents) display := allegro.CreateDisplay(640, 480) defer display.Destroy() if display == nil { log.Fatalln("Unable to set any graphic mode") } allegro.SetNewBitmapFlags(allegro.MemoryBitmap) bmp := allegro.LoadBitmap("data/mysha.pcx") defer bmp.Destroy() if bmp == nil { log.Fatalln("Unable to load image") } queue := allegro.CreateEventQueue() defer queue.Destroy() if queue == nil { log.Fatalln("Could not create Queue.") } queue.RegisterEventSource(allegro.GetKeyboardEventSource()) queue.RegisterEventSource(display.GetEventSource()) redraw := true for { if redraw && queue.IsEmpty() { allegro.ClearToColor(allegro.MapRgb(255, 0, 0)) bmpW := float32(bmp.GetWidth()) bmpH := float32(bmp.GetHeight()) displayW := float32(display.GetWidth()) displayH := float32(display.GetHeight()) bmp.DrawScaled(0, 0, bmpW, bmpH, 0, 0, displayW, displayH, 0) allegro.FlipDisplay() redraw = false } event := queue.WaitForEvent() if event.Type() == allegro.EventDisplayResize { display.AcknowledgeResize() redraw = true } if event.Type() == allegro.EventDisplayExpose { redraw = true } if event.Type() == allegro.EventKeyDown && event.KeyboardKeycode() == allegro.KeyEscape { break } if event.Type() == allegro.EventDisplayClose { break } } }