"compress/zlib"
"encoding/binary"
"errors"
+ "fmt"
"github.com/anon55555/mt"
"io"
)
ErrInvalidNodeMetaVer = errors.New("invalid node meta version")
ErrInvalidNameIdMapVer = errors.New("invalid name id mapping version")
ErrInvalidStaticObjVer = errors.New("invalid static object version")
- ErrInvalidNode = errors.New("invalid node")
)
+type ErrInvalidNodeName struct {
+ Name string
+}
+
+func (e ErrInvalidNodeName) Error() string {
+ return fmt.Sprintf("invalid node %v", e.Name)
+}
+
+type ErrInvalidNodeId struct {
+ Id mt.Content
+}
+
+func (e ErrInvalidNodeId) Error() string {
+ return fmt.Sprintf("invalid node %v", e.Id)
+}
+
func Deserialize(r io.Reader, idNameMap map[string]mt.Content) *MapBlk {
var blk = &MapBlk{}
for i := 0; i < 4096; i++ {
name, ok := nameIdMap[blk.Param0[i]]
if !ok {
- panic(ErrInvalidNode)
+ panic(ErrInvalidNodeId{blk.Param0[i]})
}
id, ok := idNameMap[name]
if !ok {
- panic(ErrInvalidNode)
+ panic(ErrInvalidNodeName{name})
}
blk.Param0[i] = id