mirror of
https://github.com/OpenDiablo2/OpenDiablo2
synced 2024-11-19 10:56:07 -05:00
35 lines
771 B
Go
35 lines
771 B
Go
|
package OpenDiablo2
|
||
|
|
||
|
type MPQFontSize struct {
|
||
|
Width uint8
|
||
|
Height uint8
|
||
|
}
|
||
|
|
||
|
type MPQFont struct {
|
||
|
Engine *Engine
|
||
|
FontSprite Sprite
|
||
|
Metrics map[uint8]MPQFontSize
|
||
|
}
|
||
|
|
||
|
// CreateMPQFont creates an instance of a MPQ Font
|
||
|
func CreateMPQFont(engine *Engine, font string, palette Palette) *MPQFont {
|
||
|
result := &MPQFont{
|
||
|
Engine: engine,
|
||
|
Metrics: make(map[uint8]MPQFontSize),
|
||
|
}
|
||
|
result.FontSprite = result.Engine.LoadSprite(font+".dc6", palette)
|
||
|
woo := "Woo!\x01"
|
||
|
fontData := result.Engine.GetFile(font + ".tbl")
|
||
|
if string(fontData[0:5]) != woo {
|
||
|
panic("No woo :(")
|
||
|
}
|
||
|
for i := 12; i < len(fontData); i += 14 {
|
||
|
fontSize := MPQFontSize{
|
||
|
Width: fontData[i+3],
|
||
|
Height: fontData[i+4],
|
||
|
}
|
||
|
result.Metrics[fontData[i+8]] = fontSize
|
||
|
}
|
||
|
return result
|
||
|
}
|