Гайд ImGui PopUp

Говно?


  • Всего проголосовало
    80
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
24 Авг 2016
Сообщения
45
Реакции
82
Ыыы сделал я короче такую тему
Пожалуйста, авторизуйтесь для просмотра ссылки.

Этот код пихай куда нибудь к менюшке
Код:
Expand Collapse Copy
static bool sh_save_cfg = false;
static bool sh_load_cfg = false;
if (ImGui::Button("Save Config",ImVec2(120,20)))
        sh_save_cfg = true;

ImGui::SameLine();
      
if(ImGui::Button("LoadConfig",ImVec2(120,20)))
        sh_load_cfg = true;
      
if (sh_save_cfg)
{
    //save ur cfg
    bool done = false;
    Anime::Popup("Config Saved!", 2000, &done);
    if (done)
        sh_save_cfg = false;
}
      
if (sh_load_cfg)
{
    //load ur cfg
    bool done = false;
    Anime::Popup("Config Loaded!", 2000, &done);
    if (done)
        sh_load_cfg = false;
}
Так ну теперь можешь создать хэдэры или просто куда-нибудь саму функцию спастить
Код:
Expand Collapse Copy
#include "ImGui\imgui.h"
#include "Utils.h"

namespace Anime {
    void Popup(const char* text, int onScreenMils, bool* done);
}
//da eto vse
И сама функция
Код:
Expand Collapse Copy
#include "Anime.h"

namespace Anime {
    bool reverse = false;
    //bool done = false;
    int offset = 0;
    bool show_popup = false;

    void Popup(const char* text, int onScreenMils, bool* done) {
        if (!done)
            show_popup = true;

        ImGuiIO &io = ImGui::GetIO();
        int Wd = io.DisplaySize.x;
      
        static long oldTime = -1;
      
        ImGui::SetNextWindowPos(ImVec2(Wd - offset, 100));
        ImGui::Begin("PopUp Window", &show_popup, ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoTitleBar);
      
        long currentTime_ms = Utils::getMils();
          
        ImVec2 txtSz = ImGui::CalcTextSize(text);
        ImGui::SetCursorPosY(ImGui::GetWindowHeight() / 2 - txtSz.y / 2);
        ImGui::Text(text);

        /*if (ImGui::Button("Close Me")) {
            reverse = true;
        }*/
        if (!reverse)
        {
            if (offset < ImGui::GetWindowWidth())
                offset += (ImGui::GetWindowWidth() + 5) * ((1000.0f / ImGui::GetIO().Framerate) / 100);

            if (offset >= ImGui::GetWindowWidth() && oldTime == -1)
            {

                oldTime = currentTime_ms;
            }
        }
        //ImGui::Text("ot: %d", oldTime);

        if (currentTime_ms - oldTime >= onScreenMils && oldTime != -1) // close after x mils
            reverse = true;

        if (reverse)
        {
            if (offset > 0)
                offset -= (ImGui::GetWindowWidth()+5) * ((1000.0f / ImGui::GetIO().Framerate) / 100);
            if (offset <= 0)
            {
                offset = 0;
                reverse = false;
                *done = true;
                oldTime = -1;
                show_popup = false;
              
            }
        }

        ImGui::End();
    }
}
А и Utils::getMils(); это
Код:
Expand Collapse Copy
long getMils() {
        auto duration = std::chrono::system_clock::now().time_since_epoch();

        return std::chrono::duration_cast<std::chrono::milliseconds>(duration).count();
    }
UPD: Anime.cpp:23 - убрал ImGui::SetWindowPos(ImVec2(Wd - offset, 100));(ну короче я 1 и тоже 2 раза делал)
UPD2: Спасибо @Nixer , специально для pКодеров добавил определение переменных
 
Последнее редактирование:
Ну годно, но было бы круче если сделал фон как в платинуме, rx (aka aqua, aka kech skam)
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Приложи сс, хочу увидеть
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Не увидел, просто амфи ещё держит
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Появляется на пару тиков и сразу пропадает, пробывал вместо 2000 ставить 20000, ничего не изменилось(
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка C2653 Utils: не является именем класса или пространства имен! как пофиксить?
 
Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка C2653 Utils: не является именем класса или пространства имен! как пофиксить?
Код:
Expand Collapse Copy
namespace Utils{
long getMils() {
        auto duration = std::chrono::system_clock::now().time_since_epoch();

        return std::chrono::duration_cast<std::chrono::milliseconds>(duration).count();
    }
}
 
Назад
Сверху Снизу