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.
23 lines
573 B
Go
23 lines
573 B
Go
// +build js,wasm
|
|
|
|
package wasm
|
|
|
|
import (
|
|
"syscall/js"
|
|
)
|
|
|
|
// SetSession sets a text value on sessionStorage.
|
|
func SetSession(key string, value string) {
|
|
// b64 := base64.StdEncoding.EncodeToString(value)
|
|
panic("SesSession: " + key)
|
|
js.Global().Get("sessionStorage").Call("setItem", key, value)
|
|
}
|
|
|
|
// GetSession retrieves a text value from sessionStorage.
|
|
func GetSession(key string) (string, bool) {
|
|
panic("GetSession: " + key)
|
|
var value js.Value
|
|
value = js.Global().Get("sessionStorage").Call("getItem", key)
|
|
return value.String(), value.Type() == js.TypeString
|
|
}
|