summaryrefslogtreecommitdiff
path: root/deserialize.go
diff options
context:
space:
mode:
Diffstat (limited to 'deserialize.go')
-rw-r--r--deserialize.go22
1 files changed, 19 insertions, 3 deletions
diff --git a/deserialize.go b/deserialize.go
index 8722bd7..7e3ffb6 100644
--- a/deserialize.go
+++ b/deserialize.go
@@ -4,6 +4,7 @@ import (
"compress/zlib"
"encoding/binary"
"errors"
+ "fmt"
"github.com/anon55555/mt"
"io"
)
@@ -15,9 +16,24 @@ var (
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{}
@@ -247,12 +263,12 @@ func Deserialize(r io.Reader, idNameMap map[string]mt.Content) *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