1
1
mirror of https://github.com/OpenDiablo2/OpenDiablo2 synced 2024-06-16 04:25:23 +00:00

Merge branch 'master' into hotfix

This commit is contained in:
gucio321 2021-03-03 20:17:34 +01:00 committed by GitHub
commit 5d78275bbc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 81 additions and 8 deletions

View File

@ -5,7 +5,7 @@ version: 2
jobs: jobs:
build: build:
docker: docker:
- image: circleci/golang:1.15.6 - image: circleci/golang:1.16
working_directory: /go/src/github.com/{{ORG_NAME}}/{{REPO_NAME}} working_directory: /go/src/github.com/{{ORG_NAME}}/{{REPO_NAME}}
steps: steps:
- checkout - checkout

View File

@ -5,7 +5,7 @@
# License: GNU GPLv3 # License: GNU GPLv3
version="0.0.8" version="0.0.8"
go_version="1.13.4" go_version="1.16"
echo "OpenDiablo 2 Build Script $version" echo "OpenDiablo 2 Build Script $version"
#================================================= #=================================================

View File

@ -13,11 +13,21 @@ func (r *AnimationDataRecord) FramesPerDirection() int {
return int(r.framesPerDirection) return int(r.framesPerDirection)
} }
// SetFramesPerDirection sets frames per direction value
func (r *AnimationDataRecord) SetFramesPerDirection(fpd uint32) {
r.framesPerDirection = fpd
}
// Speed returns animation's speed // Speed returns animation's speed
func (r *AnimationDataRecord) Speed() int { func (r *AnimationDataRecord) Speed() int {
return int(r.speed) return int(r.speed)
} }
// SetSpeed sets record's speed
func (r *AnimationDataRecord) SetSpeed(s uint16) {
r.speed = s
}
// FPS returns the frames per second for this animation record // FPS returns the frames per second for this animation record
func (r *AnimationDataRecord) FPS() float64 { func (r *AnimationDataRecord) FPS() float64 {
speedf := float64(r.speed) speedf := float64(r.speed)
@ -31,3 +41,23 @@ func (r *AnimationDataRecord) FPS() float64 {
func (r *AnimationDataRecord) FrameDurationMS() float64 { func (r *AnimationDataRecord) FrameDurationMS() float64 {
return milliseconds / r.FPS() return milliseconds / r.FPS()
} }
// Events returns events map
func (r *AnimationDataRecord) Events() map[int]AnimationEvent {
return r.events
}
// Event returns specific event
func (r *AnimationDataRecord) Event(idx int) AnimationEvent {
event, found := r.events[idx]
if found {
return event
}
return AnimationEventNone
}
// SetEvent sets event on specific index to given
func (r *AnimationDataRecord) SetEvent(index int, event AnimationEvent) {
r.events[index] = event
}

View File

@ -185,7 +185,12 @@ func (td *TextDictionary) Marshal() []byte {
sw.PushUint16(0) sw.PushUint16(0)
sw.PushInt32(int32(len(*td))) keys := make([]string, 0)
for key := range *td {
keys = append(keys, key)
}
sw.PushInt32(int32(len(keys)))
// version (always 0) // version (always 0)
sw.PushBytes(0) sw.PushBytes(0)
@ -205,7 +210,8 @@ func (td *TextDictionary) Marshal() []byte {
// dataPos is a position, when we're placing data stream // dataPos is a position, when we're placing data stream
dataPos := len(sw.GetBytes()) + 17*len(*td) dataPos := len(sw.GetBytes()) + 17*len(*td)
for key, value := range *td { for _, key := range keys {
value := (*td)[key]
// non-zero if record is used (for us, every record is used ;-) // non-zero if record is used (for us, every record is used ;-)
sw.PushBytes(1) sw.PushBytes(1)
@ -218,7 +224,13 @@ func (td *TextDictionary) Marshal() []byte {
sw.PushUint32(0) sw.PushUint32(0)
sw.PushUint32(uint32(dataPos)) sw.PushUint32(uint32(dataPos))
dataPos += len(key) + 1
if key[0] == '#' {
// 1 for X, and 1 for separator
dataPos += 2
} else {
dataPos += len(key) + 1
}
sw.PushUint32(uint32(dataPos)) sw.PushUint32(uint32(dataPos))
dataPos += len(value) + 1 dataPos += len(value) + 1
@ -227,7 +239,13 @@ func (td *TextDictionary) Marshal() []byte {
} }
// data stream: put all data in appropriate order // data stream: put all data in appropriate order
for key, value := range *td { for _, key := range keys {
value := (*td)[key]
if key[0] == '#' {
key = "x"
}
for _, i := range key { for _, i := range key {
sw.PushBytes(byte(i)) sw.PushBytes(byte(i))
} }

View File

@ -8,7 +8,7 @@ func exampleData() *TextDictionary {
result := &TextDictionary{ result := &TextDictionary{
"abc": "def", "abc": "def",
"someStr": "Some long string", "someStr": "Some long string",
"teststring": "TeSt", "teststring": "TeStxwsas123 long strin122*8:wq",
} }
return result return result
@ -27,7 +27,32 @@ func TestTBL_Marshal(t *testing.T) {
newValue, ok := newTbl[key] newValue, ok := newTbl[key]
if !ok { if !ok {
t.Fatal("string wasn't encoded to table") t.Fatalf("string %s wasn't encoded to table", key)
}
if newValue != value {
t.Fatal("unexpected value set")
}
}
}
func TestTBL_MarshalNoNameString(t *testing.T) {
tbl := &TextDictionary{
"#0": "OKEY",
}
data := tbl.Marshal()
newTbl, err := LoadTextDictionary(data)
if err != nil {
t.Error(err)
}
for key, value := range *tbl {
newValue, ok := newTbl[key]
if !ok {
t.Fatalf("string %s wasn't encoded to table", key)
} }
if newValue != value { if newValue != value {