export Layer structs to data
This commit is contained in:
parent
f29cb4f8db
commit
8ff339f700
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -29,4 +29,6 @@ _testmain.go
|
||||||
*.pem
|
*.pem
|
||||||
*.crt
|
*.crt
|
||||||
|
|
||||||
|
*.lvl
|
||||||
|
|
||||||
/gosl
|
/gosl
|
||||||
|
|
|
@ -12,44 +12,10 @@ import (
|
||||||
"path"
|
"path"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"code.bitsetter.de/fun/gosl/data"
|
||||||
)
|
)
|
||||||
|
|
||||||
type directionType int
|
|
||||||
|
|
||||||
const (
|
|
||||||
DIR_NULL directionType = iota // Undefined direction: NO Motion
|
|
||||||
DIR_SW //
|
|
||||||
DIR_S // NW N NE
|
|
||||||
DIR_SE // 7 8 9
|
|
||||||
DIR_W // W 4 5 6 E
|
|
||||||
DIR_NONE // 1 2 3
|
|
||||||
DIR_E // SW S SE
|
|
||||||
DIR_NW
|
|
||||||
DIR_N
|
|
||||||
DIR_NE
|
|
||||||
)
|
|
||||||
|
|
||||||
type Direction interface {
|
|
||||||
Base() directionType
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i directionType) Base() directionType { return i }
|
|
||||||
|
|
||||||
type LayerManifest struct {
|
|
||||||
Z int `json:"Z-Index"`
|
|
||||||
D directionType `json:"Direction"`
|
|
||||||
S int `json:"Speed"`
|
|
||||||
T string `json:"Transparent"`
|
|
||||||
Repeat bool
|
|
||||||
Frames map[int]([][]rune)
|
|
||||||
}
|
|
||||||
|
|
||||||
type LevelManifest struct {
|
|
||||||
Name string
|
|
||||||
FPS int
|
|
||||||
Layers map[string]*LayerManifest
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
var (
|
||||||
levelDir string
|
levelDir string
|
||||||
levelFile string
|
levelFile string
|
||||||
|
@ -79,7 +45,7 @@ func compile(cmd *cobra.Command, args []string) {
|
||||||
}
|
}
|
||||||
log.Println("will compile to", levelFile)
|
log.Println("will compile to", levelFile)
|
||||||
|
|
||||||
lvlMan := &LevelManifest{}
|
lvlMan := &data.Level{}
|
||||||
buf, err := ioutil.ReadFile(levelDir + "/Manifest.json")
|
buf, err := ioutil.ReadFile(levelDir + "/Manifest.json")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Error reading file: ", err)
|
log.Fatal("Error reading file: ", err)
|
||||||
|
@ -125,6 +91,7 @@ func compile(cmd *cobra.Command, args []string) {
|
||||||
enc := gob.NewEncoder(obuf)
|
enc := gob.NewEncoder(obuf)
|
||||||
enc.Encode(&lvlMan)
|
enc.Encode(&lvlMan)
|
||||||
ioutil.WriteFile(levelFile, obuf.Bytes(), 0644)
|
ioutil.WriteFile(levelFile, obuf.Bytes(), 0644)
|
||||||
|
log.Println("done.")
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
|
|
@ -1,18 +1,61 @@
|
||||||
package data // code.bitsetter.de/fun/gosl/data
|
package data // code.bitsetter.de/fun/gosl/data
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/gob"
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
type directionType int
|
||||||
|
|
||||||
|
const (
|
||||||
|
DIR_NULL directionType = iota // Undefined direction: NO Motion
|
||||||
|
DIR_SW //
|
||||||
|
DIR_S // NW N NE
|
||||||
|
DIR_SE // 7 8 9
|
||||||
|
DIR_W // W 4 5 6 E
|
||||||
|
DIR_NONE // 1 2 3
|
||||||
|
DIR_E // SW S SE
|
||||||
|
DIR_NW
|
||||||
|
DIR_N
|
||||||
|
DIR_NE
|
||||||
|
)
|
||||||
|
|
||||||
|
type Direction interface {
|
||||||
|
Base() directionType
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i directionType) Base() directionType { return i }
|
||||||
|
|
||||||
type Layer struct {
|
type Layer struct {
|
||||||
data []byte
|
Z int `json:"Z-Index"`
|
||||||
w, h int
|
D directionType `json:"Direction"`
|
||||||
|
S int `json:"Speed"`
|
||||||
|
T string `json:"Transparent"`
|
||||||
|
Repeat bool
|
||||||
|
Frames map[int]([][]rune)
|
||||||
}
|
}
|
||||||
|
|
||||||
type Level struct {
|
type Level struct {
|
||||||
Layers map[int]*Layer
|
Name string
|
||||||
|
FPS int
|
||||||
|
Layers map[string]*Layer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (lvl *Level) AddLayer(z int, l *Layer) {
|
//func (lvl *Level) AddLayer(z int, l *Layer) {
|
||||||
lvl.Layers[z] = l
|
// lvl.Layers[z] = l
|
||||||
}
|
//}
|
||||||
|
|
||||||
func LoadLevel(filename string) *Level {
|
func LoadLevel(filename string) *Level {
|
||||||
return nil
|
log.Println("Loading lvl ", filename)
|
||||||
|
ret := &Level{}
|
||||||
|
file, err := os.Open(filename)
|
||||||
|
if err != nil {
|
||||||
|
log.Println("Error reading lvl: ", err)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
dec := gob.NewDecoder(file)
|
||||||
|
dec.Decode(ret)
|
||||||
|
//log.Println(ret.Layers["locomotive"])
|
||||||
|
return ret
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
LevelDir
|
LevelDir
|
||||||
+-- Manifest :)
|
+-- Manifest :)
|
||||||
+-- Layer 1
|
+-- Layer 1
|
||||||
| +-- Manifest << layer dimension, orientation and speed, transparency char
|
|
||||||
| +-- 1.frame << text, unix style lf
|
| +-- 1.frame << text, unix style lf
|
||||||
| +-- 2.frame
|
| +-- 2.frame
|
||||||
| | …
|
| | …
|
||||||
|
|
Loading…
Reference in New Issue
Block a user