#pragma once
#include <vector>
#include <array>
#include <stdexcept>
#include <cmath>

class gameMatrix
{
public:
    // Matrix Multiplikation
    static std::array<std::array<double,4>,4> matmul(
        const std::array<std::array<double,4>,4>& A,
        const std::array<std::array<double,4>,4>& B
        );

    // Rotationsmatrix um Achse x/y/z
    static std::array<std::array<double,4>,4> rot3D(
        double angle_deg,
        char axis
        );

    // Translation
    static std::array<std::array<double,4>,4> translate(
        const std::array<double,3>& pos
    );
};

enum class GameState
{
    Idle,          // kein Würfel offen, Eingabe erlaubt
    OneFlipped,    // ein Würfel offen
    CheckingMatch, // zwei Würfel vollständig aufgeklappt, Vergleich läuft
    LockInput      // Würfel drehen gerade – Eingabe kurz blockiert
};

