package shmem

import (
	"fmt"

	"git.kirsle.net/go/render"
)

// Shared globals for easy access throughout the app.
// Not an ideal place to keep things but *shrug*
var (
	// Tick is incremented by the main game loop each frame.
	Tick uint64

	// Current position of the cursor relative to the window.
	Cursor render.Point

	// Current render engine (i.e. SDL2 or HTML5 Canvas)
	// The level.Chunk.ToBitmap() uses this to cache a texture image.
	CurrentRenderEngine render.Engine

	// Offline mode, if True then the updates check in MainScene is skipped.
	OfflineMode bool

	// Globally available Flash() function so we can emit text to the Doodle UI.
	Flash      func(string, ...interface{})
	FlashError func(string, ...interface{})

	// Globally available Prompt() function.
	Prompt    func(string, func(string))
	PromptPre func(string, string, func(string))

	// Ajax file cache for WASM use.
	AjaxCache map[string][]byte
)

func init() {
	AjaxCache = map[string][]byte{}

	// Default Flash function in case the app misconfigures it. Output to the
	// console in an obvious way.
	Flash = func(tmpl string, v ...interface{}) {
		fmt.Printf("[shmem.Flash] "+tmpl+"\n", v...)
	}
}
