1
1
mirror of https://github.com/OpenDiablo2/OpenDiablo2 synced 2024-06-09 01:10:43 +00:00
OpenDiablo2/d2common/d2loader/asset/types/source_types.go
Intyre db83814527
d2mpq refactored (#1020)
* d2mpq refactor

* d2mpq refactor last standing lint error

* d2mpq refactor: less linter noise

* d2mpq refactor: more linter issues
2021-01-08 12:46:11 -08:00

49 lines
1.0 KiB
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 mpq, err := d2mpq.New(path); err == nil {
_ = mpq.Close()
return AssetSourceMPQ
}
ext := filepath.Ext(path)
return Ext2SourceType(ext)
}