Example #1
0
func fetchAssets(gameEngine engine.Engine, complete func()) {
	os.Mkdir("TestAssets", 0777)
	patcher := client.NewClient("TestAssets", "http://walesey.net")
	done := make(chan bool)
	go func() {
		patcher.SyncFiles("TestFiles")
		done <- true
	}()

	progressBar := ui.NewProgressBar("Downloading assets...")
	ui.SetProgressBar(progressBar, 0)
	gameEngine.AddOrtho(progressBar)
	progress := 0
	var loader engine.Updatable
	loader = engine.UpdatableFunc(func(dt float64) {
		select {
		case <-patcher.Complete:
			progress++
			ui.SetProgressBar(progressBar, 1+int((progress*20)/patcher.TotalFiles))
		case <-done:
			gameEngine.RemoveSpatial(progressBar, true)
			gameEngine.RemoveUpdatable(loader)
			gameEngine.RequestAnimationFrame(complete)
		default:
		}
	})
	gameEngine.AddUpdatable(loader)
}