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:
commit
5d78275bbc
|
@ -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
|
||||||
|
|
2
build.sh
2
build.sh
|
@ -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"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
|
@ -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
|
||||||
|
}
|
||||||
|
|
|
@ -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))
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user