mirror of
https://github.com/OpenDiablo2/OpenDiablo2
synced 2025-02-03 15:17:04 -05: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
24 lines
604 B
Go
24 lines
604 B
Go
package d2util
|
|
|
|
import "github.com/OpenDiablo2/OpenDiablo2/d2common/d2interface"
|
|
|
|
func ImgIndexToRGBA(indexData []byte, palette d2interface.Palette) []byte {
|
|
bytesPerPixel := 4
|
|
colorData := make([]byte, len(indexData)*bytesPerPixel)
|
|
|
|
for i := 0; i < len(indexData); i++ {
|
|
// Index zero is hardcoded transparent regardless of palette
|
|
if indexData[i] == 0 {
|
|
continue
|
|
}
|
|
|
|
c, _ := palette.GetColor(int(indexData[i]))
|
|
colorData[i*bytesPerPixel] = c.R()
|
|
colorData[i*bytesPerPixel+1] = c.G()
|
|
colorData[i*bytesPerPixel+2] = c.B()
|
|
colorData[i*bytesPerPixel+3] = c.A()
|
|
}
|
|
|
|
return colorData
|
|
}
|