Гайд Arrow keys text menu

Забаненный
Статус
Оффлайн
Регистрация
24 Мар 2017
Сообщения
699
Реакции[?]
205
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Здравствуйте. Мне было скучно, и я увидел все те «текстовые меню», которые использовали горячие клавиши для переключения функций, поэтому решили сделать ту, которая использует клавиши со стрелками.


Код немного уродлив и не имеет лучших методов кодирования. Версия, которую я публикую, содержит только bools, если вы хотите, чтобы float / ints или что-то еще, пойдите, сделайте это. Кроме того, вы должны узнать, как это сделать, чтобы вы могли включать / отключать меню (это действительно не сложно, поскольку у вас есть функция для этого готового)
SS


Menu.cpp

Код:
Menu::Menu()


{


    Enabled = true;


    SelectedOption = 0;


    MenuItems =


    {


        { L"example0", &g_Options.esp_enabled, 0 },


        { L"example1", &g_Options.esp_player_boxes, 1 },


        { L"example2", &g_Options.esp_player_health, 2 },


        { L"example3", &g_Options.esp_player_names, 3 },


        { L"example4", &g_Options.esp_player_weapons, 4 }


    };


}


void Menu::OnPaintTraverse()


{


    if (!Enabled) return; 


    HandleInput();


    int i = 0;


    for (int q = 0; q < MenuItems.size(); q++) DrawBool(20, 20 + (i++ * 13), MenuItems[q].name, *MenuItems[q].container, MenuItems[q].number, SelectedOption);


}


void Menu::DrawBool(int x, int y, const wchar_t* name, bool container, int number, int selected_number) 


{


    g_VGuiSurface->DrawSetTextFont(esp_font);


    g_VGuiSurface->DrawSetTextColor(number == selected_number ? Color(255, 215, 0) : Color::White);


    g_VGuiSurface->DrawSetTextPos(x, y);


    g_VGuiSurface->DrawPrintText(name, wcslen(name));


    g_VGuiSurface->DrawSetTextColor(container ? Color(Color::Green) : Color(Color::Red));


    g_VGuiSurface->DrawSetTextPos(x + 120, y);


    g_VGuiSurface->DrawPrintText(container ? L"true" : L"false", container ? wcslen(L"true") : wcslen(L"false"));


}


void Menu::HandleInput() //ugly code warning


{


    if (InputSys::Get().WasKeyPressed(VK_UP)) SelectedOption--; 


    else if (InputSys::Get().WasKeyPressed(VK_DOWN)) SelectedOption++;


 


    if (SelectedOption < 0) SelectedOption = MenuItems.size() - 1;        //bit ghetto


    else if (SelectedOption > MenuItems.size() - 1) SelectedOption = 0;//bit ghetto


 


    if (InputSys::Get().WasKeyPressed(VK_LEFT)) *MenuItems[SelectedOption].container = false;


    else if (InputSys::Get().WasKeyPressed(VK_RIGHT)) *MenuItems[SelectedOption].container = true;


}


void Menu::Toggle() { Enabled = !Enabled; }


bool Menu::IsVisible() { return Enabled; }

Menu.h
Код:
struct Item


{


    const wchar_t* name;


    bool* container;


    int number;


};


 


class Menu


    : public Singleton<Menu>


{


public:


    Menu();


    void OnPaintTraverse();


    void Toggle();


    bool IsVisible();


private:


    void HandleInput();


    void DrawBool(int x, int y, const wchar_t* name, bool container, int number, int selected_number);


    bool Enabled;


    int SelectedOption;


    std::vector<Item> MenuItems;


};

 
Делаем деньги, летаем в космос
Пользователь
Статус
Оффлайн
Регистрация
30 Мар 2017
Сообщения
477
Реакции[?]
139
Поинты[?]
0
Ну хотябы укажи автора, как же бесят люди которые тупо пастят с юс
 
Сверху Снизу