sokoban-elements 0.2.1

Parsing and writing Sokoban, Hexoban, Trioban and Octoban file formats.
Documentation
//! [`Sokoban`](crate::Tessellation::Sokoban) move characters classification.

use super::parser::Parser;
use crate::Direction;

pub(super) fn direction_to_char(direction: Direction, is_box_pushed: bool) -> Option<char> {
    match (direction, is_box_pushed) {
        (Direction::Left, true) => Some(Parser::UPPER_L),
        (Direction::Left, false) => Some(Parser::LOWER_L),

        (Direction::Up, true) => Some(Parser::UPPER_U),
        (Direction::Up, false) => Some(Parser::LOWER_U),

        (Direction::Right, true) => Some(Parser::UPPER_R),
        (Direction::Right, false) => Some(Parser::LOWER_R),

        (Direction::Down, true) => Some(Parser::UPPER_D),
        (Direction::Down, false) => Some(Parser::LOWER_D),

        _ => None,
    }
}

pub(super) fn char_to_direction(move_char: char) -> Option<Direction> {
    match move_char {
        Parser::UPPER_L | Parser::LOWER_L => Some(Direction::Left),
        Parser::UPPER_U | Parser::LOWER_U => Some(Direction::Up),
        Parser::UPPER_R | Parser::LOWER_R => Some(Direction::Right),
        Parser::UPPER_D | Parser::LOWER_D => Some(Direction::Down),
        _ => None,
    }
}