mirror of
https://github.com/hedge-dev/UnleashedRecomp.git
synced 2026-04-26 20:31:41 +00:00
message_window: use pause container texture
This commit is contained in:
parent
81e76972ac
commit
5866f4ea68
1 changed files with 8 additions and 44 deletions
|
|
@ -4,6 +4,7 @@
|
||||||
#include <gpu/video.h>
|
#include <gpu/video.h>
|
||||||
#include <ui/installer_wizard.h>
|
#include <ui/installer_wizard.h>
|
||||||
#include <exports.h>
|
#include <exports.h>
|
||||||
|
#include <res/images/common/general_window.dds.h>
|
||||||
#include <res/images/common/select_fade.dds.h>
|
#include <res/images/common/select_fade.dds.h>
|
||||||
|
|
||||||
constexpr double OVERLAY_CONTAINER_COMMON_MOTION_START = 0;
|
constexpr double OVERLAY_CONTAINER_COMMON_MOTION_START = 0;
|
||||||
|
|
@ -29,6 +30,7 @@ static double g_controlsAppearTime;
|
||||||
static ImFont* g_fntSeurat;
|
static ImFont* g_fntSeurat;
|
||||||
|
|
||||||
static std::unique_ptr<GuestTexture> g_upSelectionCursor;
|
static std::unique_ptr<GuestTexture> g_upSelectionCursor;
|
||||||
|
static std::unique_ptr<GuestTexture> g_upWindow;
|
||||||
|
|
||||||
std::string g_text;
|
std::string g_text;
|
||||||
int g_result;
|
int g_result;
|
||||||
|
|
@ -60,8 +62,6 @@ bool DrawContainer(float appearTime, ImVec2 centre, ImVec2 max, bool isForegroun
|
||||||
_max.y = Hermite(centre.y, _max.y, containerMotion);
|
_max.y = Hermite(centre.y, _max.y, containerMotion);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto vertices = GetPauseContainerVertices(_min, _max);
|
|
||||||
|
|
||||||
// Transparency fade animation.
|
// Transparency fade animation.
|
||||||
auto colourMotion = g_isClosing
|
auto colourMotion = g_isClosing
|
||||||
? ComputeMotion(appearTime, OVERLAY_CONTAINER_OUTRO_FADE_START, OVERLAY_CONTAINER_OUTRO_FADE_END)
|
? ComputeMotion(appearTime, OVERLAY_CONTAINER_OUTRO_FADE_START, OVERLAY_CONTAINER_OUTRO_FADE_END)
|
||||||
|
|
@ -77,44 +77,7 @@ bool DrawContainer(float appearTime, ImVec2 centre, ImVec2 max, bool isForegroun
|
||||||
if (isForeground)
|
if (isForeground)
|
||||||
drawList->AddRectFilled({ 0.0f, 0.0f }, ImGui::GetIO().DisplaySize, IM_COL32(0, 0, 0, 223 * (g_foregroundCount ? 1 : alpha)));
|
drawList->AddRectFilled({ 0.0f, 0.0f }, ImGui::GetIO().DisplaySize, IM_COL32(0, 0, 0, 223 * (g_foregroundCount ? 1 : alpha)));
|
||||||
|
|
||||||
auto colShadow = IM_COL32(0, 0, 0, 156 * alpha);
|
DrawPauseContainer(g_upWindow, _min, _max, alpha);
|
||||||
auto colGradientTop = IM_COL32(197, 194, 197, 200 * alpha);
|
|
||||||
auto colGradientBottom = IM_COL32(115, 113, 115, 236 * alpha);
|
|
||||||
|
|
||||||
// Draw vertices with gradient.
|
|
||||||
SetGradient(_min, _max, colGradientTop, colGradientBottom);
|
|
||||||
drawList->AddConvexPolyFilled(vertices.data(), vertices.size(), IM_COL32(255, 255, 255, 255 * alpha));
|
|
||||||
ResetGradient();
|
|
||||||
|
|
||||||
// Draw outline.
|
|
||||||
drawList->AddPolyline
|
|
||||||
(
|
|
||||||
vertices.data(),
|
|
||||||
vertices.size(),
|
|
||||||
IM_COL32(247, 247, 247, 255 * alpha),
|
|
||||||
true,
|
|
||||||
Scale(2.5f)
|
|
||||||
);
|
|
||||||
|
|
||||||
// Offset vertices to draw 3D effect lines.
|
|
||||||
for (int i = 0; i < vertices.size(); i++)
|
|
||||||
{
|
|
||||||
vertices[i].x -= Scale(0.4f);
|
|
||||||
vertices[i].y -= Scale(0.2f);
|
|
||||||
}
|
|
||||||
|
|
||||||
auto colLineTop = IM_COL32(165, 170, 165, 230 * alpha);
|
|
||||||
auto colLineBottom = IM_COL32(190, 190, 190, 230 * alpha);
|
|
||||||
auto lineThickness = Scale(1.0f);
|
|
||||||
|
|
||||||
// Top left corner bottom to top left corner top.
|
|
||||||
drawList->AddLine(vertices[0], vertices[1], colLineTop, lineThickness * 0.5f);
|
|
||||||
|
|
||||||
// Top left corner bottom to bottom left.
|
|
||||||
drawList->AddRectFilledMultiColor({ vertices[0].x - 0.2f, vertices[0].y }, { vertices[6].x + lineThickness - 0.2f, vertices[6].y }, colLineTop, colLineTop, colLineBottom, colLineBottom);
|
|
||||||
|
|
||||||
// Top left corner top to top right.
|
|
||||||
drawList->AddLine(vertices[1], vertices[2], colLineTop, lineThickness);
|
|
||||||
|
|
||||||
drawList->PushClipRect(_min, _max);
|
drawList->PushClipRect(_min, _max);
|
||||||
|
|
||||||
|
|
@ -178,6 +141,7 @@ void MessageWindow::Init()
|
||||||
g_fntSeurat = io.Fonts->AddFontFromFileTTF("FOT-SeuratPro-M.otf", 28.0f * FONT_SCALE);
|
g_fntSeurat = io.Fonts->AddFontFromFileTTF("FOT-SeuratPro-M.otf", 28.0f * FONT_SCALE);
|
||||||
|
|
||||||
g_upSelectionCursor = LoadTexture(g_select_fade, sizeof(g_select_fade));
|
g_upSelectionCursor = LoadTexture(g_select_fade, sizeof(g_select_fade));
|
||||||
|
g_upWindow = LoadTexture(g_general_window, sizeof(g_general_window));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessageWindow::Draw()
|
void MessageWindow::Draw()
|
||||||
|
|
@ -193,8 +157,8 @@ void MessageWindow::Draw()
|
||||||
|
|
||||||
auto fontSize = Scale(28);
|
auto fontSize = Scale(28);
|
||||||
auto textSize = MeasureCentredParagraph(g_fntSeurat, fontSize, 5, g_text.c_str());
|
auto textSize = MeasureCentredParagraph(g_fntSeurat, fontSize, 5, g_text.c_str());
|
||||||
auto textMarginX = Scale(32);
|
auto textMarginX = Scale(37);
|
||||||
auto textMarginY = Scale(40);
|
auto textMarginY = Scale(45);
|
||||||
|
|
||||||
if (DrawContainer(g_appearTime, centre, { textSize.x / 2 + textMarginX, textSize.y / 2 + textMarginY }, !g_isControlsVisible))
|
if (DrawContainer(g_appearTime, centre, { textSize.x / 2 + textMarginX, textSize.y / 2 + textMarginY }, !g_isControlsVisible))
|
||||||
{
|
{
|
||||||
|
|
@ -222,8 +186,8 @@ void MessageWindow::Draw()
|
||||||
{
|
{
|
||||||
auto itemWidth = std::max(Scale(162), Scale(CalcWidestTextSize(g_fntSeurat, fontSize, g_buttons)));
|
auto itemWidth = std::max(Scale(162), Scale(CalcWidestTextSize(g_fntSeurat, fontSize, g_buttons)));
|
||||||
auto itemHeight = Scale(57);
|
auto itemHeight = Scale(57);
|
||||||
auto windowMarginX = Scale(18);
|
auto windowMarginX = Scale(23);
|
||||||
auto windowMarginY = Scale(25);
|
auto windowMarginY = Scale(30);
|
||||||
|
|
||||||
ImVec2 controlsMax = { /* X */ itemWidth / 2 + windowMarginX, /* Y */ itemHeight / 2 * g_buttons.size() + windowMarginY };
|
ImVec2 controlsMax = { /* X */ itemWidth / 2 + windowMarginX, /* Y */ itemHeight / 2 * g_buttons.size() + windowMarginY };
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue