1
1
mirror of https://github.com/OpenDiablo2/OpenDiablo2 synced 2024-07-05 04:35:24 +00:00
OpenDiablo2/d2common/d2loader/asset/types/asset_types.go
lord 50d40fb5d3
D2loader (#714)
* 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
2020-09-08 15:45:26 -04:00

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
}