mirror of
https://github.com/OpenDiablo2/OpenDiablo2
synced 2024-11-14 16:26:31 -05:00
Merge branch 'master' into hotfix
This commit is contained in:
commit
5d78275bbc
@ -5,7 +5,7 @@ version: 2
|
||||
jobs:
|
||||
build:
|
||||
docker:
|
||||
- image: circleci/golang:1.15.6
|
||||
- image: circleci/golang:1.16
|
||||
working_directory: /go/src/github.com/{{ORG_NAME}}/{{REPO_NAME}}
|
||||
steps:
|
||||
- checkout
|
||||
|
2
build.sh
2
build.sh
@ -5,7 +5,7 @@
|
||||
# License: GNU GPLv3
|
||||
|
||||
version="0.0.8"
|
||||
go_version="1.13.4"
|
||||
go_version="1.16"
|
||||
echo "OpenDiablo 2 Build Script $version"
|
||||
|
||||
#=================================================
|
||||
|
@ -13,11 +13,21 @@ func (r *AnimationDataRecord) FramesPerDirection() int {
|
||||
return int(r.framesPerDirection)
|
||||
}
|
||||
|
||||
// SetFramesPerDirection sets frames per direction value
|
||||
func (r *AnimationDataRecord) SetFramesPerDirection(fpd uint32) {
|
||||
r.framesPerDirection = fpd
|
||||
}
|
||||
|
||||
// Speed returns animation's speed
|
||||
func (r *AnimationDataRecord) Speed() int {
|
||||
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
|
||||
func (r *AnimationDataRecord) FPS() float64 {
|
||||
speedf := float64(r.speed)
|
||||
@ -31,3 +41,23 @@ func (r *AnimationDataRecord) FPS() float64 {
|
||||
func (r *AnimationDataRecord) FrameDurationMS() float64 {
|
||||
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.PushInt32(int32(len(*td)))
|
||||
keys := make([]string, 0)
|
||||
for key := range *td {
|
||||
keys = append(keys, key)
|
||||
}
|
||||
|
||||
sw.PushInt32(int32(len(keys)))
|
||||
|
||||
// version (always 0)
|
||||
sw.PushBytes(0)
|
||||
@ -205,7 +210,8 @@ func (td *TextDictionary) Marshal() []byte {
|
||||
// dataPos is a position, when we're placing data stream
|
||||
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 ;-)
|
||||
sw.PushBytes(1)
|
||||
|
||||
@ -218,7 +224,13 @@ func (td *TextDictionary) Marshal() []byte {
|
||||
sw.PushUint32(0)
|
||||
|
||||
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))
|
||||
dataPos += len(value) + 1
|
||||
@ -227,7 +239,13 @@ func (td *TextDictionary) Marshal() []byte {
|
||||
}
|
||||
|
||||
// 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 {
|
||||
sw.PushBytes(byte(i))
|
||||
}
|
||||
|
@ -8,7 +8,7 @@ func exampleData() *TextDictionary {
|
||||
result := &TextDictionary{
|
||||
"abc": "def",
|
||||
"someStr": "Some long string",
|
||||
"teststring": "TeSt",
|
||||
"teststring": "TeStxwsas123 long strin122*8:wq",
|
||||
}
|
||||
|
||||
return result
|
||||
@ -27,7 +27,32 @@ func TestTBL_Marshal(t *testing.T) {
|
||||
newValue, ok := newTbl[key]
|
||||
|
||||
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 {
|
||||
|
Loading…
Reference in New Issue
Block a user