use crate::{Rgb, TILESET_SIZE, TILE_SIZE};
pub(crate) fn load_tileset(data: &[u8]) -> (Vec<u8>, [Rgb; 256]) {
let mut options = gif::DecodeOptions::new();
options.set_color_output(gif::ColorOutput::Indexed);
let mut decoder = options.read_info(data).unwrap();
assert_eq!(decoder.width(), (TILESET_SIZE * TILE_SIZE) as u16);
assert_eq!(decoder.height(), (TILESET_SIZE * TILE_SIZE) as u16);
decoder.next_frame_info().unwrap();
let mut tileset = Vec::new();
tileset.resize(TILESET_SIZE * TILE_SIZE * TILESET_SIZE * TILE_SIZE, 0);
decoder.read_into_buffer(tileset.as_mut_slice()).unwrap();
let pal = decoder.palette().unwrap();
let mut palette = [Rgb { r: 0, g: 0, b: 0 }; 256];
for i in 0..pal.len() / 3 {
palette[i] = Rgb {
r: pal[i * 3 + 2],
g: pal[i * 3 + 1],
b: pal[i * 3],
};
}
(tileset, palette)
}