Implement world viewer with support for OBJ worlds
This commit is contained in:
+19
-14
@@ -10,24 +10,29 @@ pub fn generic_palette(color: Color32) -> [Color32; 4] {
|
||||
GENERIC_PALETTE.map(|brt| shade(brt, color))
|
||||
}
|
||||
|
||||
pub fn parse_palette(palette: u8, brts: &[u8; 8], color: Color32) -> [Color32; 4] {
|
||||
let shades = [
|
||||
Color32::BLACK,
|
||||
shade(brts[0], color),
|
||||
shade(brts[2], color),
|
||||
shade(
|
||||
brts[0].saturating_add(brts[2]).saturating_add(brts[4]),
|
||||
color,
|
||||
),
|
||||
];
|
||||
pub const fn parse_palette(palette: u8) -> [u8; 4] {
|
||||
[
|
||||
Color32::BLACK,
|
||||
shades[(palette >> 2) as usize & 0x03],
|
||||
shades[(palette >> 4) as usize & 0x03],
|
||||
shades[(palette >> 6) as usize & 0x03],
|
||||
0,
|
||||
(palette >> 2) & 0x03,
|
||||
(palette >> 4) & 0x03,
|
||||
(palette >> 6) & 0x03,
|
||||
]
|
||||
}
|
||||
|
||||
pub const fn parse_shades(brts: &[u8; 8]) -> [u8; 4] {
|
||||
[
|
||||
0,
|
||||
brts[0],
|
||||
brts[2],
|
||||
brts[0].saturating_add(brts[2]).saturating_add(brts[4]),
|
||||
]
|
||||
}
|
||||
|
||||
pub fn palette_colors(palette: u8, brts: &[u8; 8], color: Color32) -> [Color32; 4] {
|
||||
let colors = parse_shades(brts).map(|s| shade(s, color));
|
||||
parse_palette(palette).map(|p| colors[p as usize])
|
||||
}
|
||||
|
||||
pub struct Object {
|
||||
pub x: i16,
|
||||
pub lon: bool,
|
||||
|
||||
Reference in New Issue
Block a user