Skip to content

Commit

Permalink
package structure:
Browse files Browse the repository at this point in the history
- move corpse.go -> d2scorpse package
- rename enums -> d2senums
- move items.go -> d2sitems and itemdata -> d2sitems/itemdata
- move magic_attributes.go -> d2sitems/d2smagicattributes
- add doc.go file for each package
  • Loading branch information
gucio321 committed May 17, 2021
1 parent cfd788b commit 73fa52d
Show file tree
Hide file tree
Showing 20 changed files with 103 additions and 80 deletions.
28 changes: 15 additions & 13 deletions d2s.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,10 @@ import (

"github.com/OpenDiablo2/OpenDiablo2/d2common/d2datautils"

"github.com/gucio321/d2d2s/d2scorpse"
"github.com/gucio321/d2d2s/d2senums"
"github.com/gucio321/d2d2s/d2sitems"
"github.com/gucio321/d2d2s/datautils"
"github.com/gucio321/d2d2s/enums"
)

const (
Expand All @@ -35,7 +37,7 @@ type D2S struct {
Status *Status
Progression byte
unknown2 uint16
Class enums.CharacterClass
Class d2senums.CharacterClass
unknown3 uint16
Level byte
unknown4 uint32
Expand All @@ -57,8 +59,8 @@ type D2S struct {
NPC *NPC
Stats *Stats
Skills [numSkills]SkillID
Items *Items
Corpse *Corpse
Items *d2sitems.Items
Corpse *d2scorpse.Corpse
// necromancer only
IronGolem *IronGolem
}
Expand All @@ -73,8 +75,8 @@ func New() *D2S {
Waypoints: NewWaypoints(),
NPC: &NPC{},
Stats: &Stats{},
Items: &Items{},
Corpse: &Corpse{},
Items: &d2sitems.Items{},
Corpse: d2scorpse.New(),
IronGolem: &IronGolem{},
}

Expand Down Expand Up @@ -125,7 +127,7 @@ func Unmarshal(data []byte) (*D2S, error) {
result.unknown2 = sr.GetUInt16()

class := sr.GetByte()
result.Class = enums.CharacterClass(class)
result.Class = d2senums.CharacterClass(class)

result.unknown3 = sr.GetUInt16()

Expand Down Expand Up @@ -230,16 +232,16 @@ func Unmarshal(data []byte) (*D2S, error) {

numItems, err := result.Items.LoadHeader(sr)
if err != nil {
return nil, err
return nil, fmt.Errorf("error loading items header: %w", err)
}

if err := result.Items.LoadList(sr, numItems); err != nil {
return nil, err
return nil, fmt.Errorf("error loading items list: %w", err)
}

// thanks to @nokka <https://github.com/nokka/d2s> for figuring out these fields!
if err := result.Corpse.Load(sr); err != nil {
return nil, err
return nil, fmt.Errorf("error loading corpse: %w", err)
}

if result.Status.Expansion {
Expand All @@ -249,7 +251,7 @@ func Unmarshal(data []byte) (*D2S, error) {
}

// iron golem for necromancer
if result.Class == enums.CharacterClassNecromancer && result.Status.Expansion {
if result.Class == d2senums.CharacterClassNecromancer && result.Status.Expansion {
if err := result.IronGolem.Load(sr); err != nil {
return nil, err
}
Expand Down Expand Up @@ -340,12 +342,12 @@ func (d *D2S) Encode() ([]byte, error) {
sw.PushBytes(d.Items.Encode()...)

if err := d.Corpse.Encode(sw); err != nil {
return nil, err
return nil, fmt.Errorf("error encoding corpse: %w", err)
}

d.Mercenary.Encode(sw)

if d.Class == enums.CharacterClassNecromancer && d.Status.Expansion {
if d.Class == d2senums.CharacterClassNecromancer && d.Status.Expansion {
d.IronGolem.Encode(sw)
}

Expand Down
16 changes: 12 additions & 4 deletions corpse.go → d2scorpse/corpse.go
Original file line number Diff line number Diff line change
@@ -1,20 +1,28 @@
package d2d2s
package d2scorpse

import (
"errors"
"fmt"

"github.com/OpenDiablo2/OpenDiablo2/d2common/d2datautils"

"github.com/gucio321/d2d2s/d2sitems"
"github.com/gucio321/d2d2s/datautils"
)

const corpseUnknownBytesCount = 12

// New creates a new corpse data
func New() *Corpse {
result := &Corpse{}

return result
}

// Corpse represents a ... corpse ?!
type Corpse struct {
unknown [corpseUnknownBytesCount]byte
Items *Items
Items *d2sitems.Items
}

// Load loads corpse
Expand All @@ -33,11 +41,11 @@ func (c *Corpse) Load(sr *datautils.BitMuncher) error {
unknown := sr.GetBytes(corpseUnknownBytesCount)
copy(c.unknown[:], unknown[:corpseUnknownBytesCount])

c.Items = &Items{}
c.Items = &d2sitems.Items{}

numItems, err := c.Items.LoadHeader(sr)
if err != nil {
return err
return fmt.Errorf("error loading items header: %w", err)
}

if err := c.Items.LoadList(sr, numItems); err != nil {
Expand Down
3 changes: 3 additions & 0 deletions d2scorpse/doc.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
// Package d2scorpse contains Corpse structure for storing
// data about items in a character's corpse
package d2scorpse
2 changes: 1 addition & 1 deletion enums/class.go → d2senums/class.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package enums
package d2senums

//go:generate stringer -type CharacterClass -trimprefix CharacterClass -linecomment -output class_string.go

Expand Down
2 changes: 1 addition & 1 deletion enums/class_string.go → d2senums/class_string.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion enums/doc.go → d2senums/doc.go
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
// Package enums contains enumerations used in project
package enums
package d2senums

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion enums/item_quality.go → d2senums/item_quality.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package enums
package d2senums

//go:generate stringer -linecomment -type ItemQuality -output item_quality_string.go
//go:generate stringer -linecomment -type LowQualityItemType -output low_quality_string.go
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion enums/location.go → d2senums/location.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package enums
package d2senums

//go:generate stringer -linecomment -type ItemLocationType -output location_type_string.go
//go:generate stringer -linecomment -type StoragePlace -output storage_place_string.go
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions d2sitems/d2smagicattributes/doc.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
// Package d2smagicattributes contains MagicAttributes structure
// used for storing item's magic attributes
package d2smagicattributes
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package d2d2s
package d2smagicattributes

import (
"errors"

"github.com/gucio321/d2d2s/d2sitems/itemdata"
"github.com/gucio321/d2d2s/datautils"
"github.com/gucio321/d2d2s/itemdata"
)

const endOfListMark = 0x1ff
Expand Down
3 changes: 3 additions & 0 deletions d2sitems/doc.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
// Package d2sitems provides Items structure, where the main package
// stores Character's items data
package d2sitems
File renamed without changes.
Loading

0 comments on commit 73fa52d

Please sign in to comment.