mirror of
https://github.com/OpenDiablo2/OpenDiablo2
synced 2024-11-06 18:27:20 -05:00
42 lines
1.2 KiB
Go
42 lines
1.2 KiB
Go
|
package Common
|
||
|
|
||
|
import (
|
||
|
"log"
|
||
|
"strings"
|
||
|
|
||
|
"github.com/OpenDiablo2/OpenDiablo2/ResourcePaths"
|
||
|
)
|
||
|
|
||
|
type AnimationDataRecord struct {
|
||
|
COFName string
|
||
|
FramesPerDirection int
|
||
|
AnimationSpeed int
|
||
|
Flags []byte
|
||
|
}
|
||
|
|
||
|
var AnimationData map[string][]*AnimationDataRecord
|
||
|
|
||
|
func LoadAnimationData(fileProvider FileProvider) {
|
||
|
AnimationData = make(map[string][]*AnimationDataRecord)
|
||
|
rawData := fileProvider.LoadFile(ResourcePaths.AnimationData)
|
||
|
streamReader := CreateStreamReader(rawData)
|
||
|
for !streamReader.Eof() {
|
||
|
dataCount := int(streamReader.GetInt32())
|
||
|
for i := 0; i < dataCount; i++ {
|
||
|
cofNameBytes, _ := streamReader.ReadBytes(8)
|
||
|
data := &AnimationDataRecord{
|
||
|
COFName: strings.ReplaceAll(string(cofNameBytes), string(0), ""),
|
||
|
FramesPerDirection: int(streamReader.GetInt32()),
|
||
|
AnimationSpeed: int(streamReader.GetInt32()),
|
||
|
}
|
||
|
data.Flags, _ = streamReader.ReadBytes(144)
|
||
|
cofIndex := strings.ToLower(data.COFName)
|
||
|
if _, found := AnimationData[cofIndex]; !found {
|
||
|
AnimationData[cofIndex] = make([]*AnimationDataRecord, 0)
|
||
|
}
|
||
|
AnimationData[cofIndex] = append(AnimationData[cofIndex], data)
|
||
|
}
|
||
|
}
|
||
|
log.Printf("Loaded %d animation data records", len(AnimationData))
|
||
|
}
|