Гайд ImGui PopUp

Говно?


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

Этот код пихай куда нибудь к менюшке
Код:
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;
}
Так ну теперь можешь создать хэдэры или просто куда-нибудь саму функцию спастить
Код:
#include "ImGui\imgui.h"
#include "Utils.h"

namespace Anime {
    void Popup(const char* text, int onScreenMils, bool* done);
}
//da eto vse
И сама функция
Код:
#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(); это
Код:
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Кодеров добавил определение переменных
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
30 Дек 2017
Сообщения
146
Реакции[?]
10
Поинты[?]
0
Ну годно, но было бы круче если сделал фон как в платинуме, rx (aka aqua, aka kech skam)
 
Последнее редактирование:
Забаненный
Статус
Оффлайн
Регистрация
30 Мар 2015
Сообщения
1,185
Реакции[?]
636
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Приложи сс, хочу увидеть
 
Забаненный
Статус
Оффлайн
Регистрация
8 Июн 2017
Сообщения
106
Реакции[?]
14
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Забаненный
Статус
Оффлайн
Регистрация
30 Мар 2015
Сообщения
1,185
Реакции[?]
636
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Не увидел, просто амфи ещё держит
 
Get good. Get Mercy.
Забаненный
Статус
Оффлайн
Регистрация
20 Мар 2018
Сообщения
340
Реакции[?]
144
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Забаненный
Статус
Оффлайн
Регистрация
6 Июл 2017
Сообщения
381
Реакции[?]
252
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Появляется на пару тиков и сразу пропадает, пробывал вместо 2000 ставить 20000, ничего не изменилось(
 
mamodron
Начинающий
Статус
Оффлайн
Регистрация
2 Июл 2017
Сообщения
192
Реакции[?]
28
Поинты[?]
0
Забаненный
Статус
Оффлайн
Регистрация
6 Июл 2017
Сообщения
381
Реакции[?]
252
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Начинающий
Статус
Оффлайн
Регистрация
24 Авг 2016
Сообщения
41
Реакции[?]
82
Поинты[?]
0
nixware.cc
Эксперт
Статус
Оффлайн
Регистрация
1 Июл 2017
Сообщения
1,631
Реакции[?]
1,534
Поинты[?]
31K
Забаненный
Статус
Оффлайн
Регистрация
28 Мар 2017
Сообщения
66
Реакции[?]
12
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка C2653 Utils: не является именем класса или пространства имен! как пофиксить?
 
Начинающий
Статус
Оффлайн
Регистрация
24 Авг 2016
Сообщения
41
Реакции[?]
82
Поинты[?]
0
Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка C2653 Utils: не является именем класса или пространства имен! как пофиксить?
Код:
namespace Utils{
long getMils() {
        auto duration = std::chrono::system_clock::now().time_since_epoch();

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