mirror of
https://github.com/Xevion/Pac-Man.git
synced 2025-12-06 09:15:46 -06:00
76 lines
2.5 KiB
Rust
76 lines
2.5 KiB
Rust
//! This module contains all the constants used in the game.
|
|
|
|
use std::time::Duration;
|
|
|
|
use glam::UVec2;
|
|
|
|
pub const LOOP_TIME: Duration = Duration::from_nanos((1_000_000_000.0 / 60.0) as u64);
|
|
|
|
/// The size of each cell, in pixels.
|
|
pub const CELL_SIZE: u32 = 8;
|
|
/// The size of the game board, in cells.
|
|
pub const BOARD_CELL_SIZE: UVec2 = UVec2::new(28, 31);
|
|
|
|
/// The scale factor for the window (integer zoom)
|
|
pub const SCALE: f32 = 2.6;
|
|
|
|
/// The offset of the game board from the top-left corner of the window, in cells.
|
|
pub const BOARD_CELL_OFFSET: UVec2 = UVec2::new(0, 3);
|
|
/// The offset of the game board from the top-left corner of the window, in pixels.
|
|
pub const BOARD_PIXEL_OFFSET: UVec2 = UVec2::new(BOARD_CELL_OFFSET.x * CELL_SIZE, BOARD_CELL_OFFSET.y * CELL_SIZE);
|
|
/// The size of the canvas, in pixels.
|
|
pub const CANVAS_SIZE: UVec2 = UVec2::new(
|
|
(BOARD_CELL_SIZE.x + BOARD_CELL_OFFSET.x) * CELL_SIZE,
|
|
(BOARD_CELL_SIZE.y + BOARD_CELL_OFFSET.y) * CELL_SIZE,
|
|
);
|
|
|
|
/// An enum representing the different types of tiles on the map.
|
|
#[derive(Debug, Clone, Copy, PartialEq)]
|
|
pub enum MapTile {
|
|
/// An empty tile.
|
|
Empty,
|
|
/// A wall tile.
|
|
Wall,
|
|
/// A regular pellet.
|
|
Pellet,
|
|
/// A power pellet.
|
|
PowerPellet,
|
|
/// A tunnel tile.
|
|
Tunnel,
|
|
}
|
|
|
|
/// The raw layout of the game board, as a 2D array of characters.
|
|
pub const RAW_BOARD: [&str; BOARD_CELL_SIZE.y as usize] = [
|
|
"############################",
|
|
"#............##............#",
|
|
"#.####.#####.##.#####.####.#",
|
|
"#o####.#####.##.#####.####o#",
|
|
"#.####.#####.##.#####.####.#",
|
|
"#..........................#",
|
|
"#.####.##.########.##.####.#",
|
|
"#.####.##.########.##.####.#",
|
|
"#......##....##....##......#",
|
|
"######.##### ## #####.######",
|
|
" #.##### ## #####.# ",
|
|
" #.## == ##.# ",
|
|
" #.## ######## ##.# ",
|
|
"######.## ######## ##.######",
|
|
"T . ######## . T",
|
|
"######.## ######## ##.######",
|
|
" #.## ######## ##.# ",
|
|
" #.## ##.# ",
|
|
" #.## ######## ##.# ",
|
|
"######.## ######## ##.######",
|
|
"#............##............#",
|
|
"#.####.#####.##.#####.####.#",
|
|
"#.####.#####.##.#####.####.#",
|
|
"#o..##.......X .......##..o#",
|
|
"###.##.##.########.##.##.###",
|
|
"###.##.##.########.##.##.###",
|
|
"#......##....##....##......#",
|
|
"#.##########.##.##########.#",
|
|
"#.##########.##.##########.#",
|
|
"#..........................#",
|
|
"############################",
|
|
];
|