mirror of
https://github.com/OpenDiablo2/OpenDiablo2
synced 2024-09-16 00:08:29 -04:00
db83814527
* d2mpq refactor * d2mpq refactor last standing lint error * d2mpq refactor: less linter noise * d2mpq refactor: more linter issues
49 lines
1.0 KiB
Go
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)
|
|
}
|