#pragma once

#include <vector>
#include "cfg/api.h"

namespace games::nost {

    // all buttons in correct order
    namespace Buttons {
        enum {
            Service,
            Test,
            CoinMech,
            Key1,
            Key2,
            Key3,
            Key4,
            Key5,
            Key6,
            Key7,
            Key8,
            Key9,
            Key10,
            Key11,
            Key12,
            Key13,
            Key14,
            Key15,
            Key16,
            Key17,
            Key18,
            Key19,
            Key20,
            Key21,
            Key22,
            Key23,
            Key24,
            Key25,
            Key26,
            Key27,
            Key28,
        };
    }

    // all analogs in correct order
    namespace Analogs {
        enum {
            Key1,
            Key2,
            Key3,
            Key4,
            Key5,
            Key6,
            Key7,
            Key8,
            Key9,
            Key10,
            Key11,
            Key12,
            Key13,
            Key14,
            Key15,
            Key16,
            Key17,
            Key18,
            Key19,
            Key20,
            Key21,
            Key22,
            Key23,
            Key24,
            Key25,
            Key26,
            Key27,
            Key28,
        };
    }

    // all lights in correct order
    namespace Lights {
        enum {
            TitleR,
            TitleG,
            TitleB,
            BottomR,
            BottomG,
            BottomB,
            Key1R,
            Key1G,
            Key1B,
            Key2R,
            Key2G,
            Key2B,
            Key3R,
            Key3G,
            Key3B,
            Key4R,
            Key4G,
            Key4B,
            Key5R,
            Key5G,
            Key5B,
            Key6R,
            Key6G,
            Key6B,
            Key7R,
            Key7G,
            Key7B,
            Key8R,
            Key8G,
            Key8B,
            Key9R,
            Key9G,
            Key9B,
            Key10R,
            Key10G,
            Key10B,
            Key11R,
            Key11G,
            Key11B,
            Key12R,
            Key12G,
            Key12B,
            Key13R,
            Key13G,
            Key13B,
            Key14R,
            Key14G,
            Key14B,
            Key15R,
            Key15G,
            Key15B,
            Key16R,
            Key16G,
            Key16B,
            Key17R,
            Key17G,
            Key17B,
            Key18R,
            Key18G,
            Key18B,
            Key19R,
            Key19G,
            Key19B,
            Key20R,
            Key20G,
            Key20B,
            Key21R,
            Key21G,
            Key21B,
            Key22R,
            Key22G,
            Key22B,
            Key23R,
            Key23G,
            Key23B,
            Key24R,
            Key24G,
            Key24B,
            Key25R,
            Key25G,
            Key25B,
            Key26R,
            Key26G,
            Key26B,
            Key27R,
            Key27G,
            Key27B,
            Key28R,
            Key28G,
            Key28B,
        };
    }

    // getters
    std::vector<Button> &get_buttons();
    std::vector<Analog> &get_analogs();
    std::vector<Light> &get_lights();
}
