mirror of
https://github.com/OpenDiablo2/OpenDiablo2
synced 2024-11-17 09:56:07 -05:00
7f6ae1b785
* improve AssetManager implementation Notable changes are: * removed the individual managers inside of d2asset, only one asset manager * AssetManager now has caches for the types of files it loads * created a type for TextDictionary (the txt file structs) * fixed a file path bug in d2loader Source * fixed a asset stream bug in d2loader Asset * d2loader.Loader now needs a d2config.Config on creation (for resolving locale files) * updated the mpq file in d2asset test data, added test case for "sub-directory" * added a Data method to d2asset.Asset. The data is cached on first full read. * renamed ArchiveDataStream to DataStream in d2interface * moved palette utility func out of d2asset and into d2util * bugfix for MacOS mpq loader issue * minor lint fixes * removed obsolete interfaces from d2interface * lint fixes, added data caching to filesystem asset * adding comment for mpq asset close * adding comment for mpq asset close
29 lines
791 B
Go
29 lines
791 B
Go
package d2mpq
|
|
|
|
import "github.com/OpenDiablo2/OpenDiablo2/d2common/d2interface"
|
|
|
|
var _ d2interface.DataStream = &MpqDataStream{} // Static check to confirm struct conforms to interface
|
|
|
|
// MpqDataStream represents a stream for MPQ data.
|
|
type MpqDataStream struct {
|
|
stream *Stream
|
|
}
|
|
|
|
// Read reads data from the data stream
|
|
func (m *MpqDataStream) Read(p []byte) (n int, err error) {
|
|
totalRead := m.stream.Read(p, 0, uint32(len(p)))
|
|
return int(totalRead), nil
|
|
}
|
|
|
|
// Seek sets the position of the data stream
|
|
func (m *MpqDataStream) Seek(offset int64, whence int) (int64, error) {
|
|
m.stream.CurrentPosition = uint32(offset + int64(whence))
|
|
return int64(m.stream.CurrentPosition), nil
|
|
}
|
|
|
|
// Close closes the data stream
|
|
func (m *MpqDataStream) Close() error {
|
|
m.stream = nil
|
|
return nil
|
|
}
|