Marshall map pixels more compactly
This commit is contained in:
parent
27fafdc96d
commit
403d24f480
|
@ -1,5 +1,10 @@
|
||||||
package level
|
package level
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
)
|
||||||
|
|
||||||
// Level is the container format for Doodle map drawings.
|
// Level is the container format for Doodle map drawings.
|
||||||
type Level struct {
|
type Level struct {
|
||||||
Version int32 `json:"version"` // File format version spec.
|
Version int32 `json:"version"` // File format version spec.
|
||||||
|
@ -28,6 +33,28 @@ type Pixel struct {
|
||||||
Palette int32 `json:"p"`
|
Palette int32 `json:"p"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MarshalJSON serializes a Pixel compactly as a simple list.
|
||||||
|
func (p Pixel) MarshalJSON() ([]byte, error) {
|
||||||
|
return []byte(fmt.Sprintf(
|
||||||
|
`[%d, %d, %d]`,
|
||||||
|
p.X, p.Y, p.Palette,
|
||||||
|
)), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalJSON loads a Pixel from JSON again.
|
||||||
|
func (p *Pixel) UnmarshalJSON(text []byte) error {
|
||||||
|
var triplet []int32
|
||||||
|
err := json.Unmarshal(text, &triplet)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
p.X = triplet[0]
|
||||||
|
p.Y = triplet[1]
|
||||||
|
p.Palette = triplet[2]
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// Palette are the unique pixel attributes that this map uses, and serves
|
// Palette are the unique pixel attributes that this map uses, and serves
|
||||||
// as a lookup table for the Pixels.
|
// as a lookup table for the Pixels.
|
||||||
type Palette struct {
|
type Palette struct {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user