// ============================================================================
// color_mapper.v - CA颜色映射器
// 支持：黑白、热力图、年龄渐变、密度着色、自定义调色板
// ============================================================================
module color_mapper #(
    parameter MODE = 0     // 0=黑白 1=热力图 2=年龄 3=密度 4=调色板
)(
    input  wire [3:0]  cell_age,
    input  wire [3:0]  neighbor_cnt,
    input  wire        cell_alive,
    input  wire [11:0] palette [0:15],  // 16色调色板（仅MODE=4）
    output wire [11:0] rgb              // 12位RGB (4-4-4)
);

    reg [3:0] r, g, b;

    always @(*) begin
        r = 4'd0; g = 4'd0; b = 4'd0;
        case (MODE)
            0: begin  // 黑白模式
                r = cell_alive ? 4'hF : 4'h0;
                g = cell_alive ? 4'hF : 4'h0;
                b = cell_alive ? 4'hF : 4'h0;
            end
            1: begin  // 热力图（年龄→温度色）
                if (cell_alive) begin
                    if (cell_age < 4) begin
                        r = cell_age * 4; g = 4'd0; b = 4'd0;
                    end else if (cell_age < 8) begin
                        r = 4'hF; g = (cell_age - 4) * 4; b = 4'd0;
                    end else begin
                        r = 4'hF; g = 4'hF; b = (cell_age - 8) * 5;
                    end
                end
            end
            2: begin  // 粉红渐变（匹配课程主色#ec4899）
                if (cell_alive) begin
                    r = 4'hF;
                    g = {1'b0, cell_age};
                    b = {2'b01, cell_age[3:2]};
                end
            end
            3: begin  // 密度着色
                if (cell_alive) begin
                    r = 4'hF;
                    g = {neighbor_cnt, 1'b0};
                end else begin
                    b = {neighbor_cnt, 1'b0};
                end
            end
            4: begin  // 调色板模式
                {r, g, b} = cell_alive ? palette[cell_age] : 12'd0;
            end
        endcase
    end

    assign rgb = {r, g, b};

endmodule