/*
 * Game "Kosoban" for 8 bit computers
 * Programming (c) 2025 Aleksey Morozov aleksey.f.morozov@gmail.com aleksey.f.morozov@yandex.ru
 * Levels and idea (c) Andrey Shevchuk campugnatus@gmail.com
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, version 3.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */

#include "levels.h"

// Пустая ячейка
static const uint8_t __ = 0;

// Место для ящика (1 плоскость)
static const uint8_t A_ = 1;
static const uint8_t B_ = 2;
static const uint8_t C_ = 3;
static const uint8_t D_ = 4;

// Изменение направления (1 плоскость)
static const uint8_t Ru = DIR_UP;
static const uint8_t Rd = DIR_DOWN;
static const uint8_t Rr = DIR_RIGHT;
static const uint8_t Rl = DIR_LEFT;

// Ящики с направлением (2 плоскость)
static const uint8_t Au = DIR_UP | A_;
static const uint8_t Bu = DIR_UP | B_;
static const uint8_t Cu = DIR_UP | C_;
static const uint8_t Du = DIR_UP | D_;
static const uint8_t Ad = DIR_DOWN | A_;
static const uint8_t Bd = DIR_DOWN | B_;
static const uint8_t Cd = DIR_DOWN | C_;
static const uint8_t Dd = DIR_DOWN | D_;
static const uint8_t Al = DIR_LEFT | A_;
static const uint8_t Bl = DIR_LEFT | B_;
static const uint8_t Cl = DIR_LEFT | C_;
static const uint8_t Dl = DIR_LEFT | D_;
static const uint8_t Ar = DIR_RIGHT | A_;
static const uint8_t Br = DIR_RIGHT | B_;
static const uint8_t Cr = DIR_RIGHT | C_;
static const uint8_t Dr = DIR_RIGHT | D_;

// clang-format off

const uint8_t levels[] = {
    // level 1 hi
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,A_,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,__,__,__,__,
    __,__,Ad,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    // level 2 hi3
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,B_,__,__,
    __,__,A_,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,__,Bd,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,Au,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    // level 3 order2
    __,__,__,__,__,
    __,__,__,__,__,
    __,B_,A_,__,__,
    __,C_,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,__,__,__,__,
    Ar,__,__,__,__,
    __,__,__,Cl,__,
    __,Bu,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    // level 4 push
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    A_,__,__,__,__,
    __,__,__,__,__,
    __,__,D_,__,__,
    __,__,__,__,__,

    __,__,Dd,__,__,
    __,__,__,__,__,
    __,__,__,__,Al,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    // level 5 stairs
    __,__,__,__,__,
    __,__,__,__,__,
    __,A_,__,__,__,
    __,__,B_,__,__,
    __,__,__,D_,__,
    __,__,__,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,Ad,__,__,__,
    Dr,__,Bd,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    // level 6 stairs2
    __,__,__,__,__,
    __,__,__,__,__,
    __,A_,__,__,__,
    __,__,D_,__,__,
    __,__,__,B_,__,
    __,__,__,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,Ad,__,__,__,
    Dr,__,Bd,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    // level 7 lift
    __,__,__,__,__,
    B_,__,__,__,__,
    __,D_,__,__,__,
    __,__,__,__,__,
    __,__,A_,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,__,__,Ad,__,
    __,__,__,__,Dl,
    __,__,Bu,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    // level 8 presq
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,D_,__,
    __,__,__,__,__,
    __,Rr,__,Ru,__,
    __,__,__,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,__,__,__,__,
    __,Dd,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    // level 9 sq
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,A_,B_,__,
    __,__,__,__,__,
    Rr,__,Ru,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,__,__,__,__,
    Ad,__,__,__,__,
    __,__,__,__,__,
    Br,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    // level 10 nobrainer
    __,__,__,__,__,
    __,__,__,__,__,
    __,A_,D_,__,__,
    Rr,__,Ru,Rl,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    Ar,__,Du,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    // level 11 crosst
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    B_,A_,Rr,D_,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,__,Ad,__,__,
    __,__,__,__,__,
    __,__,__,__,Dl,
    __,__,__,__,__,
    __,__,Bu,__,__,
    __,__,__,__,__,

    // level 12 t
    __,__,__,__,__,
    __,__,Rd,__,__,
    __,__,__,__,__,
    __,A_,D_,B_,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    Ar,__,__,__,Dl,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,Bu,__,__,
    __,__,__,__,__,

    // level 13 rotation
    __,__,__,__,__,
    __,Rd,__,__,__,
    __,A_,__,Rl,__,
    __,B_,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    Br,__,__,__,__,
    __,__,Au,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    // level 14 asymm
    __,A_,__,__,__,
    __,Rd,__,__,__,
    __,D_,__,__,__,
    __,__,__,__,__,
    B_,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,Ad,__,__,__,
    __,__,__,__,__,
    __,__,__,Bl,__,
    __,__,__,__,__,
    __,__,Du,__,__,
    __,__,__,__,__,

    // level 15 clover
    __,__,__,__,__,
    __,__,__,__,__,
    __,A_,__,C_,__,
    __,__,D_,__,__,
    __,__,__,B_,__,
    __,__,__,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,__,__,__,__,
    __,__,Bd,__,__,
    __,Cr,__,Al,__,
    __,__,Du,__,__,__,
    __,__,__,__,__,
    __,__,__,__,

    // level 16 preduced
    __,__,__,__,__,
    __,__,__,__,__,
    Rd,__,__,Rl,__,
    Rr,A_,__,__,__,
    __,D_,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,__,__,__,__,
    Ad,__,__,__,__,
    __,__,__,__,__,
    __,__,Du,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    // level 17 herewego
    __,__,__,__,__,
    __,__,__,__,__,
    Rr,__,Rd,__,__,
    A_,__,Rl,D_,__,
    __,Ru,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,__,__,__,__,
    Ar,__,__,__,__,
    __,__,Dl,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    // level 18 reduced
    __,__,__,__,__,
    __,__,__,__,__,
    Rd,__,__,Rl,__,
    Rr,A_,B_,D_,__,
    __,__,Ru,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,__,__,__,__,
    Ad,__,__,Dl,__,
    Br,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    // level 19 reduced2
    __,__,__,__,__,
    __,__,__,__,__,
    Rd,__,__,Rl,__,
    Rr,A_,B_,D_,__,
    __,__,Ru,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,__,__,__,__,
    Bd,__,__,Dl,__,
    Ar,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    // level 20 spiral2
    __,__,A_,__,__,
    __,__,__,__,__,
    __,__,D_,__,__,
    Rd,__,__,__,__,
    __,Rd,B_,Rl,__,
    __,Rr,Ru,__,__,
    Rr,__,__,Ru,__,

    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    Ad,__,__,__,__,
    __,Dd,__,__,__,
    __,__,Bu,__,__,
    __,__,__,__,__,

    // level 21 recycle2
    __,__,__,__,__,
    __,Rd,B_,Rl,__,
    __,A_,__,D_,__,
    __,Rr,C_,Ru,__,
    __,__,__,__,__,
    __,Ru,__,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,Ad,__,Cl,__,
    __,__,__,__,__,
    __,Br,__,Du,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    // level 22 recycle3
    __,__,__,__,__,
    __,Rd,__,Rl,__,
    __,B_,__,A_,__,
    __,Ru,__,D_,__,
    __,Rd,__,C_,__,
    __,Rr,__,Ru,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,Bd,__,Cl,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,Ar,__,Du,__,
    __,__,__,__,__,

    // level 23 shirt
    __,__,__,__,__,
    __,Rd,A_,__,__,
    __,__,__,__,__,
    Rr,__,__,__,__,
    __,__,__,__,Rl,
    __,Ru,__,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,Dd,__,__,__,
    __,__,__,__,Bd,
    Ar,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    // level 24 shuttle
    __,__,__,__,__,
    __,__,Rd,__,__,
    __,__,__,__,Rl,
    Rr,__,__,__,__,
    __,A_,D_,B_,__,
    __,__,Ru,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,Dd,__,__,__,
    __,__,__,__,Al,
    Br,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    // level 25 spiral
    A_,__,__,__,__,
    __,D_,__,__,__,
    Rd,__,B_,__,__,
    __,Rd,__,Rl,__,
    __,Rr,Ru,__,__,
    Rr,__,__,Ru,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,__,__,__,__,
    Ad,__,__,__,__,
    __,Dd,__,__,__,
    __,__,Bu,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    // level 26 splinter
    __,__,__,__,__,
    A_,D_,B_,__,__,
    Rd,__,__,Rl,__,
    __,__,__,__,__,
    Rr,__,Ru,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,__,__,__,__,
    Dd,__,__,__,__,
    __,__,__,__,__,
    Br,__,Au,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    // level 27 elegant
    __,__,__,__,__,
    __,Rd,C_,__,__,
    D_,__,__,Rl,__,
    Rr,__,__,B_,__,
    __,A_,Ru,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,Cd,__,__,__,
    __,__,__,Bl,__,
    Dr,__,__,__,__,
    __,__,Au,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    // level 28 shuttle2
    __,__,__,__,__,
    __,__,__,Rd,__,
    __,__,__,__,Rl,
    Rr,__,__,__,__,
    __,A_,D_,B_,__,
    __,__,__,Ru,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,Bd,__,__,__,
    __,__,__,__,Dl,
    Ar,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    // level 29 shirt2
    __,__,__,__,__,
    __,Rd,__,__,__,
    D_,__,__,__,__,
    Rr,__,__,__,__,
    __,__,__,__,Rl,
    __,Ru,__,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,Dd,__,__,__,
    __,__,__,__,Bd,
    Ar,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    // level 30 windmill
    __,__,__,__,__,
    __,__,Rd,__,__,
    __,__,A_,__,__,
    __,C_,__,D_,Rl,
    __,__,B_,__,__,
    __,__,Ru,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,__,Dd,__,__,
    __,__,__,__,__,
    Rr,__,__,__,Bl,
    __,__,__,__,__,
    __,__,Cu,__,__,
    __,__,__,__,__,

    // level 31 paper
    __,__,__,__,__,
    Rd,B_,__,Rl,__,
    D_,__,__,__,__,
    A_,__,__,__,__,
    Rr,__,Ru,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    Bd,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    Ar,__,Du,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    // level 32 shuttle5
    __,__,__,__,__,
    __,__,Rd,__,__,
    __,Rr,__,__,__,
    D_,__,A_,Rl,B_,
    __,__,__,__,__,
    __,__,Ru,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,__,Dd,__,__,
    __,Br,__,__,__,
    __,__,__,Al,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    // level 33 shirtDouble
    __,__,__,__,__,
    __,Rd,A_,__,__,
    D_,__,__,__,__,
    Rr,__,__,__,__,
    __,__,__,__,Rl,
    __,Ru,__,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,Dd,__,__,__,
    __,__,__,__,Bd,
    Ar,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    // level 34 splinter2
    __,__,__,__,__,
    D_,A_,B_,__,__,
    __,Rd,__,__,Rl,
    __,__,__,__,__,
    __,Rr,__,Ru,__,
    __,__,__,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,__,__,__,__,
    __,Dd,__,__,__,
    __,__,__,__,__,
    __,Br,__,Au,__,
    __,__,__,__,__,
    __,__,__,__,__,

    // level 35 reduced3
    __,__,__,__,__,
    __,__,__,__,__,
    Rd,__,__,Rl,__,
    Rr,__,A_,__,__,
    __,B_,Ru,D_,__,
    __,__,__,__,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,__,__,__,__,
    Bd,__,__,Dl,__,
    Ar,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,

    // level 36 elegant2
    __,__,__,__,__,
    __,Rd,B_,A_,C_,
    __,__,__,__,Rl,
    __,__,__,__,__,
    Rr,__,__,__,__,
    __,__,__,Ru,__,
    __,__,__,__,__,

    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    __,__,__,__,__,
    Cr,Rr,Br,__,__,
    __,__,__,__,__,
};
