- Added some fixes introduced by RodoMa92 in PR198 - Lack of AVX2 extension (should be done differently in the future) - Disable deprecated-volatile warning - Added missing override in posix EventInfo, ImGui notification class and XContent class - Removed not used XAudio2.h include in XMP - Fixed missing switch-case in XObject - Added fugly template in native_list.h - Fixed multiple smaller issues
93 lines
2.9 KiB
C++
93 lines
2.9 KiB
C++
/**
|
|
******************************************************************************
|
|
* Xenia : Xbox 360 Emulator Research Project *
|
|
******************************************************************************
|
|
* Copyright 2023 Ben Vanik. All rights reserved. *
|
|
* Released under the BSD license - see LICENSE in the root for more details. *
|
|
******************************************************************************
|
|
*/
|
|
|
|
#ifndef XENIA_UI_IMGUI_GUEST_NOTIFICATION_H_
|
|
#define XENIA_UI_IMGUI_GUEST_NOTIFICATION_H_
|
|
|
|
#include "third_party/imgui/imgui.h"
|
|
#include "xenia/ui/imgui_dialog.h"
|
|
#include "xenia/ui/imgui_notification.h"
|
|
|
|
/*
|
|
|
|
*/
|
|
|
|
namespace xe {
|
|
namespace ui {
|
|
class ImGuiGuestNotification : public ImGuiNotification {
|
|
public:
|
|
ImGuiGuestNotification(ui::ImGuiDrawer* imgui_drawer, std::string& title,
|
|
std::string& description, uint8_t user_index,
|
|
uint8_t position_id = 0);
|
|
|
|
~ImGuiGuestNotification();
|
|
|
|
protected:
|
|
const ImVec2 default_notification_icon_size = ImVec2(58.0f, 58.0f);
|
|
const ImVec2 default_notification_margin_size = ImVec2(50.f, 5.f);
|
|
const float default_notification_text_scale = 2.3f;
|
|
const float default_notification_rounding = 30.f;
|
|
const float default_font_size = 12.f;
|
|
|
|
const ImVec4 white_color = ImVec4(1.0f, 1.0f, 1.0f, 1.0f);
|
|
|
|
const ImVec4 default_notification_background_color =
|
|
ImVec4(0.215f, 0.215f, 0.215f, 1.0f);
|
|
const ImVec4 default_notification_border_color = white_color;
|
|
|
|
enum class NotificationStage : uint8_t {
|
|
Awaiting = 0,
|
|
FazeIn = 1,
|
|
Present = 2,
|
|
FazeOut = 3,
|
|
Finished = 4
|
|
};
|
|
|
|
const bool IsNotificationExpired() {
|
|
return current_stage_ == NotificationStage::Finished;
|
|
}
|
|
|
|
void UpdateNotificationState();
|
|
const ImVec2 CalculateNotificationSize(ImVec2 text_size,
|
|
float scale) override;
|
|
|
|
virtual void OnDraw(ImGuiIO& io) override {}
|
|
|
|
float notification_draw_progress_;
|
|
|
|
private:
|
|
NotificationStage current_stage_;
|
|
};
|
|
|
|
class AchievementNotificationWindow final : ImGuiGuestNotification {
|
|
public:
|
|
AchievementNotificationWindow(ui::ImGuiDrawer* imgui_drawer,
|
|
std::string title, std::string description,
|
|
uint8_t user_index, uint8_t position_id = 0)
|
|
: ImGuiGuestNotification(imgui_drawer, title, description, user_index,
|
|
position_id) {};
|
|
|
|
void OnDraw(ImGuiIO& io) override;
|
|
};
|
|
|
|
class XNotifyWindow final : ImGuiGuestNotification {
|
|
public:
|
|
XNotifyWindow(ui::ImGuiDrawer* imgui_drawer, std::string title,
|
|
std::string description, uint8_t user_index,
|
|
uint8_t position_id = 0)
|
|
: ImGuiGuestNotification(imgui_drawer, title, description, user_index,
|
|
position_id) {};
|
|
|
|
void OnDraw(ImGuiIO& io) override;
|
|
};
|
|
|
|
} // namespace ui
|
|
} // namespace xe
|
|
|
|
#endif |