#pragma once

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

namespace games::popn {

    // all buttons in correct order
    namespace Buttons {
        enum {
            Service,
            Test,
            CoinMech,
            Headphone,
            Button1,
            Button2,
            Button3,
            Button4,
            Button5,
            Button6,
            Button7,
            Button8,
            Button9,
            RedPop,
            BluePop
        };
    }

    // all lights in correct order
    namespace Lights {
        typedef enum {
            Button1,
            Button2,
            Button3,
            Button4,
            Button5,
            Button6,
            Button7,
            Button8,
            Button9,
            HiLamp1,
            HiLamp2,
            HiLamp3,
            HiLamp4,
            HiLamp5,
            LeftLamp1,
            LeftLamp2,
            RightLamp1,
            RightLamp2,
            TopLED1,
            TopLED2,
            TopLED3,
            TopLED4,
            TopLED5,
            TopLED6,
            TopLED7,
            TopLED8,
            TopLED9,
            TopLED10,
            TopLED11,
            TopLED12,
            TopLED13,
            TopLED14,
            TopLED15,
            TopLED16,
            TopLED17,
            TopLED18,
            TopLED19,
            TopLED20,
            TopLED21,
            TopLED22,
            TopLED23,
            TopLED24,
            TopLED25,
            TopLED26,
            TopLED27,
            TopLED28,
            TopLED29,
            TopLED30,
            TopLED31,
            TopLED32,
            TopLED_R,
            TopLED_G,
            TopLED_B,
            WooferLED_R,
            WooferLED_G,
            WooferLED_B,
            PikaButton1_R,
            PikaButton1_G,
            PikaButton1_B,
            PikaButton2_R,
            PikaButton2_G,
            PikaButton2_B,
            PikaButton3_R,
            PikaButton3_G,
            PikaButton3_B,
            PikaButton4_R,
            PikaButton4_G,
            PikaButton4_B,
            PikaButton5_R,
            PikaButton5_G,
            PikaButton5_B,
            PikaButton6_R,
            PikaButton6_G,
            PikaButton6_B,
            PikaButton7_R,
            PikaButton7_G,
            PikaButton7_B,
            PikaButton8_R,
            PikaButton8_G,
            PikaButton8_B,
            PikaButton9_R,
            PikaButton9_G,
            PikaButton9_B,
            RedPopKun_R,
            RedPopKun_G,
            RedPopKun_B,
            BluePopKun_R,
            BluePopKun_G,
            BluePopKun_B,
            IC_Card_R,
            IC_Card_G,
            IC_Card_B,
            Speaker_R,
            Speaker_G,
            Speaker_B,
            Monitor_R,
            Monitor_G,
            Monitor_B,
            ControlPanel_R,
            ControlPanel_G,
            ControlPanel_B,
            Cabinet_R,
            Cabinet_G,
            Cabinet_B,
        } popn_lights_t;
    }

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