use super::*;
use crate::GridCompleteAtlas;
impl GridCornerRMVX {
pub fn as_complete(&self) -> GridCompleteAtlas {
const C: u32 = 24;
const L: u32 = 8;
let w = self.cell_w;
let h = self.cell_h;
let mut output = RgbaImage::new(w * C, h * L);
for i in 0..C {
for j in 0..L {
let (x, y) = rpg4x6_to_complete(i, j);
let view = self.image.view(x * w, y * h, w, h);
output.copy_from(&*view, i * w, j * h).ok();
}
}
unsafe { GridCompleteAtlas::create(output) }
}
}
fn rpg4x6_to_complete(x: u32, y: u32) -> (u32, u32) {
match (x, y) {
(0, 0) => (0, 2),
(0, 1) => (0, 3),
(0, 2) => (0, 4),
(0, 3) => (0, 3),
(0, 4) => (0, 4),
(0, 5) => (0, 5),
(0, 6) => (0, 2),
(0, 7) => (0, 5),
(1, 0) => (3, 2),
(1, 1) => (3, 3),
(1, 2) => (3, 4),
(1, 3) => (3, 3),
(1, 4) => (3, 4),
(1, 5) => (3, 5),
(1, 6) => (3, 2),
(1, 7) => (3, 5),
(2, 0) => (0, 2),
(2, 1) => (0, 3),
(2, 2) => (0, 4),
(2, 3) => (0, 3),
(2, 4) => (0, 4),
(2, 5) => (0, 5),
(2, 6) => (0, 2),
(2, 7) => (0, 5),
(3, 0) => (1, 2),
(3, 1) => (3, 1),
(3, 2) => (3, 0),
(3, 3) => (3, 1),
(3, 4) => (3, 0),
(3, 5) => (1, 5),
(3, 6) => (1, 2),
(3, 7) => (1, 5),
(4, 0) => (2, 2),
(4, 1) => (2, 1),
(4, 2) => (2, 0),
(4, 3) => (2, 1),
(4, 4) => (2, 0),
(4, 5) => (2, 5),
(4, 6) => (2, 2),
(4, 7) => (2, 5),
(5, 0) => (1, 2),
(5, 1) => (3, 1),
(5, 2) => (3, 0),
(5, 3) => (3, 1),
(5, 4) => (3, 0),
(5, 5) => (1, 5),
(5, 6) => (1, 2),
(5, 7) => (1, 5),
(6, 0) => (2, 2),
(6, 1) => (2, 1),
(6, 2) => (2, 0),
(6, 3) => (2, 1),
(6, 4) => (2, 0),
(6, 5) => (2, 5),
(6, 6) => (2, 2),
(6, 7) => (2, 5),
(7, 0) => (3, 2),
(7, 1) => (3, 3),
(7, 2) => (3, 4),
(7, 3) => (3, 3),
(7, 4) => (3, 4),
(7, 5) => (3, 5),
(7, 6) => (3, 2),
(7, 7) => (3, 5),
(8, 0) => (2, 4),
(8, 1) => (2, 1),
(8, 2) => (0, 4),
(8, 3) => (0, 3),
(8, 4) => (0, 4),
(8, 5) => (0, 3),
(8, 6) => (2, 0),
(8, 7) => (2, 3),
(9, 0) => (3, 0),
(9, 1) => (3, 1),
(9, 2) => (3, 0),
(9, 3) => (1, 3),
(9, 4) => (1, 4),
(9, 5) => (3, 1),
(9, 6) => (3, 0),
(9, 7) => (3, 1),
(10, 0) => (2, 2),
(10, 1) => (2, 1),
(10, 2) => (2, 0),
(10, 3) => (2, 3),
(10, 4) => (2, 4),
(10, 5) => (2, 1),
(10, 6) => (2, 0),
(10, 7) => (2, 5),
(11, 0) => (1, 2),
(11, 1) => (1, 3),
(11, 2) => (1, 4),
(11, 3) => (1, 3),
(11, 4) => (1, 4),
(11, 5) => (1, 3),
(11, 6) => (1, 4),
(11, 7) => (1, 5),
(12, 0) => (2, 2),
(12, 1) => (2, 3),
(12, 2) => (2, 4),
(12, 3) => (2, 3),
(12, 4) => (2, 4),
(12, 5) => (2, 3),
(12, 6) => (2, 4),
(12, 7) => (2, 5),
(13, 0) => (1, 2),
(13, 1) => (3, 1),
(13, 2) => (3, 0),
(13, 3) => (1, 3),
(13, 4) => (1, 4),
(13, 5) => (3, 1),
(13, 6) => (3, 0),
(13, 7) => (1, 5),
(14, 0) => (2, 0),
(14, 1) => (2, 1),
(14, 2) => (2, 0),
(14, 3) => (2, 3),
(14, 4) => (2, 4),
(14, 5) => (2, 1),
(14, 6) => (2, 0),
(14, 7) => (2, 1),
(15, 0) => (1, 4),
(15, 1) => (3, 1),
(15, 2) => (3, 4),
(15, 3) => (3, 3),
(15, 4) => (3, 4),
(15, 5) => (3, 3),
(15, 6) => (3, 0),
(15, 7) => (1, 3),
(16, 0) => (0, 2),
(16, 1) => (0, 3),
(16, 2) => (0, 4),
(16, 3) => (0, 3),
(16, 4) => (2, 0),
(16, 5) => (2, 1),
(16, 6) => (0, 4),
(16, 7) => (0, 5),
(17, 0) => (1, 2),
(17, 1) => (1, 3),
(17, 2) => (1, 4),
(17, 3) => (1, 3),
(17, 4) => (1, 4),
(17, 5) => (1, 3),
(17, 6) => (1, 4),
(17, 7) => (1, 5),
(18, 0) => (2, 0),
(18, 1) => (2, 3),
(18, 2) => (2, 0),
(18, 3) => (2, 3),
(18, 4) => (2, 4),
(18, 5) => (2, 3),
(18, 6) => (2, 4),
(18, 7) => (2, 5),
(19, 0) => (3, 0),
(19, 1) => (1, 3),
(19, 2) => (1, 4),
(19, 3) => (3, 1),
(19, 4) => (1, 4),
(19, 5) => (1, 3),
(19, 6) => (1, 4),
(19, 7) => (1, 5),
(20, 0) => (2, 2),
(20, 1) => (2, 3),
(20, 2) => (0, 0),
(20, 3) => (0, 1),
(20, 4) => (2, 4),
(20, 5) => (2, 1),
(20, 6) => (2, 4),
(20, 7) => (2, 1),
(21, 0) => (1, 2),
(21, 1) => (1, 3),
(21, 2) => (1, 0),
(21, 3) => (1, 1),
(21, 4) => (3, 0),
(21, 5) => (1, 3),
(21, 6) => (1, 4),
(21, 7) => (3, 1),
(22, 0) => (2, 2),
(22, 1) => (2, 3),
(22, 2) => (2, 4),
(22, 3) => (2, 3),
(22, 4) => (2, 4),
(22, 5) => (2, 3),
(22, 6) => (2, 4),
(22, 7) => (2, 5),
(23, 0) => (3, 2),
(23, 1) => (3, 3),
(23, 2) => (3, 0),
(23, 3) => (3, 1),
(23, 4) => (3, 4),
(23, 5) => (3, 3),
(23, 6) => (3, 4),
(23, 7) => (3, 5),
_ => unreachable!(),
}
}