use bracket_lib::prelude::*; use crate::vga_color as vga; #[derive(PartialEq, Copy, Clone)] pub struct TileData { pub glyph: u16, pub color_fg: (u8, u8, u8), pub color_bg: (u8, u8, u8), pub serialized_char: char, pub blink: bool, } #[derive(PartialEq, Copy, Clone)] pub enum TileType { Floor, // 0 Block, // 4 Whip, // 5 Stairs, // 6 Chest, // 7 SlowTime, // 8 Gem, // 9 Invisible, // 10 Teleport, // 11 Key, // 12 Door, // 13 Wall, // 14 SpeedTime, // 15 Trap, // 16 River, // 17 Power, // 18 Forest, // 19 Tree, // 20, 252 Bomb, // 21 Lava, // 22 Pit, // 23 Tome, // 24 Tunnel, // 25 Freeze, // 26 Nugget, // 27 Quake, // 28 InvisibleBlock, // 29 InvisibleWall, // 30 InvisibleDoor, // 31 Stop, // 32 Zap, // 34 Create, // 35 Generator, // 36 Trap2, // 33 Trap3, // 37 Trap4, // 39 Trap5, // 67 Trap6, // 224 Trap7, // 225 Trap8, // 226 Trap9, // 227 Trap10, // 228 Trap11, // 229 Trap12, // 230 Trap13, // 231 Player, // 40 Punctuation, // 222 Letter(char), } pub fn tile_data(tile: TileType) -> TileData { match tile { TileType::Floor => TileData { glyph: 0, serialized_char: ' ', color_fg: vga::BLACK, color_bg: vga::BLACK, blink: false, }, TileType::Block => TileData { glyph: to_cp437('▓'), serialized_char: 'X', color_fg: vga::YELLOW, color_bg: vga::BLACK, blink: false, }, TileType::Whip => TileData { glyph: to_cp437('⌠'), serialized_char: 'W', color_fg: vga::WHITE_BRIGHT, color_bg: vga::BLACK, blink: false, }, TileType::Stairs => TileData { glyph: to_cp437('≡'), serialized_char: 'L', color_fg: vga::BLACK, color_bg: vga::WHITE, blink: true, }, TileType::Chest => TileData { glyph: to_cp437('C'), serialized_char: 'C', color_fg: vga::YELLOW_BRIGHT, color_bg: vga::RED, blink: false, }, TileType::SlowTime => TileData { glyph: to_cp437('Φ'), serialized_char: 'S', color_fg: vga::CYAN_BRIGHT, color_bg: vga::BLACK, blink: false, }, TileType::Gem => TileData { glyph: to_cp437('♦'), serialized_char: '+', color_fg: vga::WHITE, color_bg: vga::BLACK, blink: false, }, TileType::Invisible => TileData { glyph: to_cp437('¡'), serialized_char: 'I', color_fg: vga::GREEN, color_bg: vga::BLACK, blink: false, }, TileType::Teleport => TileData { glyph: to_cp437('↑'), serialized_char: 'T', color_fg: vga::MAGENTA_BRIGHT, color_bg: vga::BLACK, blink: false, }, TileType::Key => TileData { glyph: to_cp437('î'), serialized_char: 'K', color_fg: vga::RED_BRIGHT, color_bg: vga::BLACK, blink: false, }, TileType::Door => TileData { glyph: to_cp437('∞'), serialized_char: 'D', color_fg: vga::CYAN, color_bg: vga::MAGENTA, blink: false, }, TileType::Wall => TileData { glyph: to_cp437('█'), serialized_char: '#', color_fg: vga::YELLOW, color_bg: vga::BLACK, blink: false, }, TileType::SpeedTime => TileData { glyph: to_cp437('Θ'), serialized_char: 'F', color_fg: vga::CYAN_BRIGHT, color_bg: vga::BLACK, blink: false, }, TileType::Trap => TileData { glyph: to_cp437('∙'), serialized_char: '.', color_fg: vga::WHITE, color_bg: vga::BLACK, blink: false, }, TileType::River => TileData { glyph: to_cp437('≈'), serialized_char: 'R', color_fg: vga::BLUE_BRIGHT, color_bg: vga::BLUE, blink: false, }, TileType::Power => TileData { glyph: to_cp437('○'), serialized_char: 'Q', color_fg: vga::WHITE_BRIGHT, color_bg: vga::BLACK, blink: false, }, TileType::Forest => TileData { glyph: to_cp437('█'), serialized_char: '/', color_fg: vga::GREEN, color_bg: vga::BLACK, blink: false, }, TileType::Tree => TileData { glyph: to_cp437('♣'), serialized_char: '\\', color_fg: vga::YELLOW, color_bg: vga::GREEN, blink: false, }, TileType::Bomb => TileData { glyph: to_cp437('¥'), serialized_char: 'B', color_fg: vga::WHITE_BRIGHT, color_bg: vga::BLACK, blink: false, }, TileType::Lava => TileData { glyph: to_cp437('▓'), serialized_char: 'V', color_fg: vga::RED_BRIGHT, color_bg: vga::RED, blink: false, }, TileType::Pit => TileData { glyph: to_cp437('░'), serialized_char: '=', color_fg: vga::WHITE, color_bg: vga::BLACK, blink: false, }, TileType::Tome => TileData { glyph: to_cp437('♀'), serialized_char: 'A', color_fg: vga::WHITE_BRIGHT, color_bg: vga::BLACK, blink: true, }, TileType::Tunnel => TileData { glyph: to_cp437('∩'), serialized_char: 'U', color_fg: vga::WHITE_BRIGHT, color_bg: vga::BLACK, blink: false, }, TileType::Freeze => TileData { glyph: to_cp437('ƒ'), serialized_char: 'Z', color_fg: vga::CYAN_BRIGHT, color_bg: vga::BLACK, blink: false, }, TileType::Nugget => TileData { glyph: to_cp437('☼'), serialized_char: '*', color_fg: vga::YELLOW_BRIGHT, color_bg: vga::BLACK, blink: false, }, TileType::Quake => TileData { glyph: 0, serialized_char: 'E', color_fg: vga::BLACK, color_bg: vga::BLACK, blink: false, }, TileType::InvisibleBlock => TileData { glyph: 0, serialized_char: ';', color_fg: vga::BLACK, color_bg: vga::BLACK, blink: false, }, TileType::InvisibleWall => TileData { glyph: 0, serialized_char: ':', color_fg: vga::BLACK, color_bg: vga::BLACK, blink: false, }, TileType::InvisibleDoor => TileData { glyph: 0, serialized_char: '`', color_fg: vga::BLACK, color_bg: vga::BLACK, blink: false, }, TileType::Stop => TileData { glyph: 0, serialized_char: '-', color_fg: vga::BLACK, color_bg: vga::BLACK, blink: false, }, TileType::Zap => TileData { glyph: to_cp437('▲'), serialized_char: '%', color_fg: vga::RED_BRIGHT, color_bg: vga::BLACK, blink: false, }, TileType::Create => TileData { glyph: to_cp437('▼'), serialized_char: ']', color_fg: vga::WHITE_BRIGHT, color_bg: vga::BLACK, blink: false, }, TileType::Generator => TileData { glyph: to_cp437('♠'), serialized_char: 'G', color_fg: vga::BLACK, color_bg: vga::BLACK, blink: false, }, TileType::Trap2 => TileData { glyph: 0, serialized_char: '@', color_fg: vga::BLACK, color_bg: vga::BLACK, blink: false, }, TileType::Trap3 => TileData { glyph: 0, serialized_char: ')', color_fg: vga::BLACK, color_bg: vga::BLACK, blink: false, }, TileType::Trap4 => TileData { glyph: 0, serialized_char: '(', color_fg: vga::BLACK, color_bg: vga::BLACK, blink: false, }, TileType::Trap5 => TileData { glyph: 0, serialized_char: '$', // Unsure about this color_fg: vga::BLACK, color_bg: vga::BLACK, blink: false, }, TileType::Trap6 => TileData { glyph: 0, serialized_char: 'α', color_fg: vga::BLACK, color_bg: vga::BLACK, blink: false, }, TileType::Trap7 => TileData { glyph: 0, serialized_char: 'ß', color_fg: vga::BLACK, color_bg: vga::BLACK, blink: false, }, TileType::Trap8 => TileData { glyph: 0, serialized_char: 'Γ', color_fg: vga::BLACK, color_bg: vga::BLACK, blink: false, }, TileType::Trap9 => TileData { glyph: 0, serialized_char: 'π', color_fg: vga::BLACK, color_bg: vga::BLACK, blink: false, }, TileType::Trap10 => TileData { glyph: 0, serialized_char: 'Σ', color_fg: vga::BLACK, color_bg: vga::BLACK, blink: false, }, TileType::Trap11 => TileData { glyph: 0, serialized_char: 'σ', color_fg: vga::BLACK, color_bg: vga::BLACK, blink: false, }, TileType::Trap12 => TileData { glyph: 0, serialized_char: 'µ', color_fg: vga::BLACK, color_bg: vga::BLACK, blink: false, }, TileType::Trap13 => TileData { glyph: 0, serialized_char: 'τ', color_fg: vga::BLACK, color_bg: vga::BLACK, blink: false, }, TileType::Player => TileData { glyph: 0, serialized_char: 'P', color_fg: vga::BLACK, color_bg: vga::BLACK, blink: false, }, TileType::Punctuation => TileData { glyph: to_cp437('!'), serialized_char: '!', color_fg: vga::WHITE_BRIGHT, color_bg: vga::YELLOW, blink: false, }, TileType::Letter(c) => TileData { glyph: to_cp437(c), serialized_char: c, color_fg: vga::WHITE_BRIGHT, color_bg: vga::YELLOW, blink: false, }, } }