mirror of
https://github.com/OpenDiablo2/OpenDiablo2
synced 2024-09-06 19:44:15 -04:00
50d40fb5d3
* adding logger implementation to d2common * Adding file loader implementation The file loader works in terms of `Sources` and `Assets`. A `Source` is something like a filesystem that has a cache. An `Asset` is something that implements `io.ReadSeeker` and has a few methods of its own. There are currently `Source` implementations for MPQ archives and for the host filesystem, meaning that one can specify a directory on the host fs to load files from. `Sources` are added to a loader with `loader.AddSource(path)`, where `path` resolves somewhere on disk. In the case that the path points to an MPQ, then an MPQ `Source` is created and added to the loader. If `path` resolves to a directory, then a filesystem source is added. Files are loaded with `loader.Load("data/global/excel/monstats.txt")`, and the sources are searched in the order that they were added. * adding tests for d2common/logger_test.go * adding tests and testdata for d2loader * logger lint fixes, fixed missing test case * minor edits, lint fixes, changes some comments, embedded Logger into Loader * moved d2loader into d2common (I dont think it belonged in d2core) * removed my simple cache implementation in favor of our existing cache in d2common
51 lines
1003 B
Go
51 lines
1003 B
Go
package types
|
|
|
|
import "strings"
|
|
|
|
// AssetType represents the type of an asset
|
|
type AssetType int
|
|
|
|
// Asset types
|
|
const (
|
|
AssetTypeUnknown AssetType = iota
|
|
AssetTypeJSON
|
|
AssetTypeStringTable
|
|
AssetTypeDataDictionary
|
|
AssetTypePalette
|
|
AssetTypePaletteTransform
|
|
AssetTypeCOF
|
|
AssetTypeDC6
|
|
AssetTypeDCC
|
|
AssetTypeDS1
|
|
AssetTypeDT1
|
|
AssetTypeWAV
|
|
AssetTypeD2
|
|
)
|
|
|
|
// Ext2AssetType determines the AssetType with the given file extension
|
|
func Ext2AssetType(ext string) AssetType {
|
|
ext = strings.ToLower(ext)
|
|
ext = strings.ReplaceAll(ext, ".", "")
|
|
|
|
lookup := map[string]AssetType{
|
|
"json": AssetTypeJSON,
|
|
"tbl": AssetTypeStringTable,
|
|
"txt": AssetTypeDataDictionary,
|
|
"dat": AssetTypePalette,
|
|
"pl2": AssetTypePaletteTransform,
|
|
"cof": AssetTypeCOF,
|
|
"dc6": AssetTypeDC6,
|
|
"dcc": AssetTypeDCC,
|
|
"ds1": AssetTypeDS1,
|
|
"dt1": AssetTypeDT1,
|
|
"wav": AssetTypeWAV,
|
|
"d2": AssetTypeD2,
|
|
}
|
|
|
|
if knownType, found := lookup[ext]; found {
|
|
return knownType
|
|
}
|
|
|
|
return AssetTypeUnknown
|
|
}
|