// Icon returns the icon image of the specified game object. // It first tries to return the bitmap for the map icon. If that is all transparent, // the function reverts to the object icon. func (gameObjects *GameObjects) Icon(id res.ObjectID) (bmp image.Bitmap) { mapIconBlockData := gameObjects.objart.Get(res.ResourceID(0x0546)).BlockData(uint16(gameObjects.mapIconOffsets[id])) bmp, _ = image.Read(bytes.NewReader(mapIconBlockData)) allZero := true for row := 0; row < int(bmp.ImageHeight()); row++ { for _, b := range bmp.Row(row) { if b != 0x00 { allZero = false } } } if allZero { objIconBlockData := gameObjects.objart.Get(res.ResourceID(0x0546)).BlockData(uint16(gameObjects.objIconOffsets[id])) bmp, _ = image.Read(bytes.NewReader(objIconBlockData)) } return }
func (textures *Textures) Image(index int, size model.TextureSize) (bmp image.Bitmap) { var blockData []byte if size == model.TextureLarge { blockData = textures.images.Get(res.ResourceID(0x03E8 + index)).BlockData(0) } else if size == model.TextureMedium { blockData = textures.images.Get(res.ResourceID(0x02C3 + index)).BlockData(0) } else if size == model.TextureSmall { blockData = textures.images.Get(res.ResourceID(0x004D)).BlockData(uint16(index)) } else if size == model.TextureIcon { blockData = textures.images.Get(res.ResourceID(0x004C)).BlockData(uint16(index)) } bmp, _ = image.Read(bytes.NewReader(blockData)) return }