mirror of
https://github.com/OpenDiablo2/OpenDiablo2
synced 2024-09-06 19:44:15 -04: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
48 lines
1013 B
Go
48 lines
1013 B
Go
package types
|
|
|
|
import (
|
|
"path/filepath"
|
|
"strings"
|
|
|
|
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2fileformats/d2mpq"
|
|
)
|
|
|
|
// SourceType represents the type of the asset source
|
|
type SourceType int
|
|
|
|
// Asset sources
|
|
const (
|
|
AssetSourceUnknown SourceType = iota
|
|
AssetSourceFileSystem
|
|
AssetSourceMPQ
|
|
)
|
|
|
|
// Ext2SourceType returns the SourceType from the given file extension
|
|
func Ext2SourceType(ext string) SourceType {
|
|
ext = strings.ToLower(ext)
|
|
ext = strings.ReplaceAll(ext, ".", "")
|
|
|
|
lookup := map[string]SourceType{
|
|
"mpq": AssetSourceMPQ,
|
|
}
|
|
|
|
if knownType, found := lookup[ext]; found {
|
|
return knownType
|
|
}
|
|
|
|
return AssetSourceUnknown
|
|
}
|
|
|
|
// CheckSourceType attempts to determine the source type of the source
|
|
func CheckSourceType(path string) SourceType {
|
|
// on MacOS, the MPQ's from blizzard don't have file extensions
|
|
// so we just attempt to init the file as an mpq
|
|
if _, err := d2mpq.Load(path); err == nil {
|
|
return AssetSourceMPQ
|
|
}
|
|
|
|
ext := filepath.Ext(path)
|
|
|
|
return Ext2SourceType(ext)
|
|
}
|