Noah Petherbridge
27fafdc96d
First pass at a level storage format to save and restore maps. To save a map: press F12. It takes a screenshot PNG into the screenshots/ folder and outputs a map JSON in the working directory. To restore a map: "go run cmd/doodle/main.go map.json"
41 lines
1.1 KiB
Go
41 lines
1.1 KiB
Go
package level
|
|
|
|
// Level is the container format for Doodle map drawings.
|
|
type Level struct {
|
|
Version int32 `json:"version"` // File format version spec.
|
|
Title string `json:"title"`
|
|
Author string `json:"author"`
|
|
Password string `json:"passwd"`
|
|
Locked bool `json:"locked"`
|
|
|
|
// Level size.
|
|
Width int32 `json:"w"`
|
|
Height int32 `json:"h"`
|
|
|
|
// The Palette holds the unique "colors" used in this map file, and their
|
|
// properties (solid, fire, slippery, etc.)
|
|
Palette []Palette `json:"palette"`
|
|
|
|
// Pixels is a 2D array indexed by [X][Y]. The cell values are indexes into
|
|
// the Palette.
|
|
Pixels []Pixel `json:"pixels"`
|
|
}
|
|
|
|
// Pixel associates a coordinate with a palette index.
|
|
type Pixel struct {
|
|
X int32 `json:"x"`
|
|
Y int32 `json:"y"`
|
|
Palette int32 `json:"p"`
|
|
}
|
|
|
|
// Palette are the unique pixel attributes that this map uses, and serves
|
|
// as a lookup table for the Pixels.
|
|
type Palette struct {
|
|
// Required attributes.
|
|
Color string `json:"color"`
|
|
|
|
// Optional attributes.
|
|
Solid bool `json:"solid,omitempty"`
|
|
Fire bool `json:"fire,omitempty"`
|
|
}
|