Noah Petherbridge
ba6892aa95
* Refactor texture caching in render.Engine: * New interface method: NewTexture(filename string, image.Image) * WASM immediately encodes the image to PNG and generates a JavaScript `Image()` object to load it with a data URI and keep it in memory. * SDL2 saves the bitmap to disk as it did before. * WASM: deprecate the sessionStorage for holding image data. Session storage methods panic if called. The image data is directly kept in Go memory as a js.Value holding an Image(). * Shared Memory workaround: the level.Chunk.ToBitmap() function is where chunk textures get cached, but it had no access to the render.Engine used in the game. The `pkg/shmem` package holds global pointers to common structures like the CurrentRenderEngine as a work-around. * Also shmem.Flash() so Doodle can make its d.Flash() function globally available, any sub-package can now flash text to the screen regardless of source code location. * JavaScript API for Doodads now has a global Flash() function available. * WASM: Handle window resize so Doodle can recompute its dimensions instead of scaling/shrinking the view.
27 lines
678 B
Go
27 lines
678 B
Go
package shmem
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"git.kirsle.net/apps/doodle/lib/render"
|
|
)
|
|
|
|
// Shared globals for easy access throughout the app.
|
|
// Not an ideal place to keep things but *shrug*
|
|
var (
|
|
// Current render engine (i.e. SDL2 or HTML5 Canvas)
|
|
// The level.Chunk.ToBitmap() uses this to cache a texture image.
|
|
CurrentRenderEngine render.Engine
|
|
|
|
// Globally available Flash() function so we can emit text to the Doodle UI.
|
|
Flash func(string, ...interface{})
|
|
)
|
|
|
|
func init() {
|
|
// 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...)
|
|
}
|
|
}
|