-
Автор темы
- #1
Ыыы сделал я короче такую тему
Этот код пихай куда нибудь к менюшке
Так ну теперь можешь создать хэдэры или просто куда-нибудь саму функцию спастить
И сама функция
А и Utils::getMils(); это
UPD: Anime.cpp:23 - убрал ImGui::SetWindowPos(ImVec2(Wd - offset, 100));(ну короче я 1 и тоже 2 раза делал)
UPD2: Спасибо Nixer , специально для pКодеров добавил определение переменных
Пожалуйста, авторизуйтесь для просмотра ссылки.
Этот код пихай куда нибудь к менюшке
Код:
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();
}
}
Код:
long getMils() {
auto duration = std::chrono::system_clock::now().time_since_epoch();
return std::chrono::duration_cast<std::chrono::milliseconds>(duration).count();
}
UPD2: Спасибо Nixer , специально для pКодеров добавил определение переменных
Последнее редактирование: