/**
 * TileDefinitions.js
 * 
 * Defines all dungeon tiles with their properties:
 * - Dimensions (width x height in cells)
 * - Walkability matrix (0 = not walkable, 1-8 = walkable layer/height, 9 = stairs)
 * - Tile type (room, corridor, L, T)
 * - Exit points
 * - Image path
 */

// ============================================================================
// ROOMS (4x4 and 4x6)
// ============================================================================

const ROOM_4X4_NORMAL = {
    id: 'room_4x4_normal',
    tileType: 'room',
    width: 4,
    height: 4,
    image: '/assets/images/dungeons/room_4x4_normal.png',
    walkability: [
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1]
    ],
    exits: ['N', 'S', 'E', 'W']
};

const ROOM_4X4_CIRCLE = {
    id: 'room_4x4_circle',
    tileType: 'room',
    width: 4,
    height: 4,
    image: '/assets/images/dungeons/room_4x4_circle.png',
    walkability: [
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1]
    ],
    exits: ['N', 'S', 'E', 'W']
};

const ROOM_4X4_SKELETON = {
    id: 'room_4x4_skeleton',
    tileType: 'room',
    width: 4,
    height: 4,
    image: '/assets/images/dungeons/room_4x4_squeleton.png',
    walkability: [
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1]
    ],
    exits: ['N', 'S', 'E', 'W']
};

const ROOM_4X6_ALTAR = {
    id: 'room_4x6_altar',
    tileType: 'room',
    width: 4,
    height: 6,
    image: '/assets/images/dungeons/room_4x6_altar.png',
    walkability: [
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1]
    ],
    exits: ['N', 'S', 'E', 'W']
};

const ROOM_4X6_TOMB = {
    id: 'room_4x6_tomb',
    tileType: 'room',
    width: 4,
    height: 6,
    image: '/assets/images/dungeons/room_4x6_tomb.png',
    walkability: [
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1]
    ],
    exits: ['N', 'S', 'E', 'W']
};

// Example room with stairs (2 levels)
const ROOM_4X6_STAIRS = {
    id: 'room_4x6_stairs',
    tileType: 'room',
    width: 4,
    height: 6,
    image: '/assets/images/dungeons/room_4x6_altar.png', // Using altar image as placeholder
    walkability: [
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 9, 9, 1],  // Stairs connecting level 1 and 2
        [1, 2, 2, 1],
        [2, 2, 2, 2],
        [2, 2, 2, 2]
    ],
    exits: ['N', 'S']
};

// ============================================================================
// L-SHAPES (4x4 with 2-tile rows)
// ============================================================================

const L_NE = {
    id: 'L_NE',
    tileType: 'L',
    width: 4,
    height: 4,
    image: '/assets/images/dungeons/L_NE.png',
    walkability: [
        [1, 1, 0, 0],
        [1, 1, 0, 0],
        [1, 1, 1, 1],
        [1, 1, 1, 1]
    ],
    exits: ['N', 'E']
};

const L_SE = {
    id: 'L_SE',
    tileType: 'L',
    width: 4,
    height: 4,
    image: '/assets/images/dungeons/L_SE.png',
    walkability: [
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 0, 0],
        [1, 1, 0, 0]
    ],
    exits: ['S', 'E']
};

const L_WS = {
    id: 'L_WS',
    tileType: 'L',
    width: 4,
    height: 4,
    image: '/assets/images/dungeons/L_WS.png',
    walkability: [
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [0, 0, 1, 1],
        [0, 0, 1, 1]
    ],
    exits: ['W', 'S']
};

const L_WN = {
    id: 'L_WN',
    tileType: 'L',
    width: 4,
    height: 4,
    image: '/assets/images/dungeons/L_WN.png',
    walkability: [
        [0, 0, 1, 1],
        [0, 0, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1]
    ],
    exits: ['W', 'N']
};

// ============================================================================
// T-JUNCTIONS (4x6 or 6x4 with 2-tile rows)
// ============================================================================

const T_NES = {
    id: 'T_NES',
    tileType: 'T',
    width: 4,
    height: 6,
    image: '/assets/images/dungeons/T_NES.png',
    walkability: [
        [1, 1, 0, 0],
        [1, 1, 0, 0],
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 0, 0],
        [1, 1, 0, 0]
    ],
    exits: ['N', 'E', 'S']
};

const T_WNE = {
    id: 'T_WNE',
    tileType: 'T',
    width: 6,
    height: 4,
    image: '/assets/images/dungeons/T_WNE.png',
    walkability: [
        [0, 0, 1, 1, 0, 0],
        [0, 0, 1, 1, 0, 0],
        [1, 1, 1, 1, 1, 1],
        [1, 1, 1, 1, 1, 1]
    ],
    exits: ['W', 'N', 'E']
};

const T_WSE = {
    id: 'T_WSE',
    tileType: 'T',
    width: 6,
    height: 4,
    image: '/assets/images/dungeons/T_WSE.png',
    walkability: [
        [1, 1, 1, 1, 1, 1],
        [1, 1, 1, 1, 1, 1],
        [0, 0, 1, 1, 0, 0],
        [0, 0, 1, 1, 0, 0]
    ],
    exits: ['W', 'S', 'E']
};

const T_WNS = {
    id: 'T_WNS',
    tileType: 'T',
    width: 4,
    height: 6,
    image: '/assets/images/dungeons/T_WNS.png',
    walkability: [
        [0, 0, 1, 1],
        [0, 0, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [0, 0, 1, 1],
        [0, 0, 1, 1]
    ],
    exits: ['W', 'N', 'S']
};

// ============================================================================
// CORRIDORS (2x6 or 6x2 with 2-tile rows)
// ============================================================================

// Corridor 1 - East-West (horizontal)
const CORRIDOR1_EW = {
    id: 'corridor1_EW',
    tileType: 'corridor',
    width: 6,
    height: 2,
    image: '/assets/images/dungeons/corridor1_EW.png',
    walkability: [
        [1, 1, 1, 1, 1, 1],
        [1, 1, 1, 1, 1, 1]
    ],
    exits: ['E', 'W']
};

// Corridor 1 - North-South (vertical)
const CORRIDOR1_NS = {
    id: 'corridor1_NS',
    tileType: 'corridor',
    width: 2,
    height: 6,
    image: '/assets/images/dungeons/corridor1_NS.png',
    walkability: [
        [1, 1],
        [1, 1],
        [1, 1],
        [1, 1],
        [1, 1],
        [1, 1]
    ],
    exits: ['N', 'S']
};

// Corridor 2 - East-West (horizontal)
const CORRIDOR2_EW = {
    id: 'corridor2_EW',
    tileType: 'corridor',
    width: 6,
    height: 2,
    image: '/assets/images/dungeons/corridor2_EW.png',
    walkability: [
        [1, 1, 1, 1, 1, 1],
        [1, 1, 1, 1, 1, 1]
    ],
    exits: ['E', 'W']
};

// Corridor 2 - North-South (vertical)
const CORRIDOR2_NS = {
    id: 'corridor2_NS',
    tileType: 'corridor',
    width: 2,
    height: 6,
    image: '/assets/images/dungeons/corridor2_NS.png',
    walkability: [
        [1, 1],
        [1, 1],
        [1, 1],
        [1, 1],
        [1, 1],
        [1, 1]
    ],
    exits: ['N', 'S']
};

// Corridor 3 - East-West (horizontal)
const CORRIDOR3_EW = {
    id: 'corridor3_EW',
    tileType: 'corridor',
    width: 6,
    height: 2,
    image: '/assets/images/dungeons/corridor3_EW.png',
    walkability: [
        [1, 1, 1, 1, 1, 1],
        [1, 1, 1, 1, 1, 1]
    ],
    exits: ['E', 'W']
};

// Corridor 3 - North-South (vertical)
const CORRIDOR3_NS = {
    id: 'corridor3_NS',
    tileType: 'corridor',
    width: 2,
    height: 6,
    image: '/assets/images/dungeons/corridor3_NS.png',
    walkability: [
        [1, 1],
        [1, 1],
        [1, 1],
        [1, 1],
        [1, 1],
        [1, 1]
    ],
    exits: ['N', 'S']
};

// ============================================================================
// TILE COLLECTIONS
// ============================================================================

export const TILE_DEFINITIONS = {
    // Rooms
    room_4x4_normal: ROOM_4X4_NORMAL,
    room_4x4_circle: ROOM_4X4_CIRCLE,
    room_4x4_skeleton: ROOM_4X4_SKELETON,
    room_4x6_altar: ROOM_4X6_ALTAR,
    room_4x6_tomb: ROOM_4X6_TOMB,
    room_4x6_stairs: ROOM_4X6_STAIRS,

    // L-shapes
    L_NE: L_NE,
    L_SE: L_SE,
    L_WS: L_WS,
    L_WN: L_WN,

    // T-junctions
    T_NES: T_NES,
    T_WNE: T_WNE,
    T_WSE: T_WSE,
    T_WNS: T_WNS,

    // Corridors
    corridor1_EW: CORRIDOR1_EW,
    corridor1_NS: CORRIDOR1_NS,
    corridor2_EW: CORRIDOR2_EW,
    corridor2_NS: CORRIDOR2_NS,
    corridor3_EW: CORRIDOR3_EW,
    corridor3_NS: CORRIDOR3_NS
};

// Collections by type for easy filtering
export const ROOMS = [
    ROOM_4X4_NORMAL,
    ROOM_4X4_CIRCLE,
    ROOM_4X4_SKELETON,
    ROOM_4X6_ALTAR,
    ROOM_4X6_TOMB,
    ROOM_4X6_STAIRS
];

export const L_SHAPES = [
    L_NE,
    L_SE,
    L_WS,
    L_WN
];

export const T_JUNCTIONS = [
    T_NES,
    T_WNE,
    T_WSE,
    T_WNS
];

export const CORRIDORS = [
    CORRIDOR1_EW,
    CORRIDOR1_NS,
    CORRIDOR2_EW,
    CORRIDOR2_NS,
    CORRIDOR3_EW,
    CORRIDOR3_NS
];

// Helper function to get tile definition by ID
export function getTileDefinition(tileId) {
    return TILE_DEFINITIONS[tileId] || null;
}

// Helper function to get tiles by type
export function getTilesByType(tileType) {
    switch (tileType) {
        case 'room':
            return ROOMS;
        case 'L':
            return L_SHAPES;
        case 'T':
            return T_JUNCTIONS;
        case 'corridor':
            return CORRIDORS;
        default:
            return [];
    }
}
