You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.3 KiB
87 lines
2.3 KiB
#include "DiabloUI/diabloui.h" |
|
#include "control.h" |
|
#include "controls/input.h" |
|
#include "controls/menu_controls.h" |
|
#include "discord/discord.h" |
|
#include "engine/load_pcx.hpp" |
|
#include "utils/language.h" |
|
#include "utils/sdl_geometry.h" |
|
#include "utils/stdcompat/optional.hpp" |
|
|
|
namespace devilution { |
|
namespace { |
|
|
|
OptionalOwnedClxSpriteList DiabloTitleLogo; |
|
|
|
std::vector<std::unique_ptr<UiItemBase>> vecTitleScreen; |
|
|
|
void TitleLoad() |
|
{ |
|
if (gbIsHellfire) { |
|
LoadBackgroundArt("ui_art\\hf_logo1.pcx", 16); |
|
ArtBackgroundWidescreen = LoadPcx("ui_art\\hf_titlew.pcx"); |
|
} else { |
|
LoadBackgroundArt("ui_art\\title.pcx"); |
|
DiabloTitleLogo = LoadPcxSpriteList("ui_art\\logo.pcx", /*numFrames=*/15, /*transparentColor=*/250); |
|
} |
|
} |
|
|
|
void TitleFree() |
|
{ |
|
ArtBackground = std::nullopt; |
|
ArtBackgroundWidescreen = std::nullopt; |
|
DiabloTitleLogo = std::nullopt; |
|
|
|
vecTitleScreen.clear(); |
|
} |
|
|
|
} // namespace |
|
|
|
void UiTitleDialog() |
|
{ |
|
TitleLoad(); |
|
const Point uiPosition = GetUIRectangle().position; |
|
if (gbIsHellfire) { |
|
SDL_Rect rect = MakeSdlRect(0, uiPosition.y, 0, 0); |
|
if (ArtBackgroundWidescreen) |
|
vecTitleScreen.push_back(std::make_unique<UiImageClx>((*ArtBackgroundWidescreen)[0], rect, UiFlags::AlignCenter)); |
|
vecTitleScreen.push_back(std::make_unique<UiImageAnimatedClx>(*ArtBackground, rect, UiFlags::AlignCenter)); |
|
} else { |
|
UiAddBackground(&vecTitleScreen); |
|
|
|
vecTitleScreen.push_back(std::make_unique<UiImageAnimatedClx>( |
|
*DiabloTitleLogo, MakeSdlRect(0, uiPosition.y + 182, 0, 0), UiFlags::AlignCenter)); |
|
|
|
SDL_Rect rect = MakeSdlRect(uiPosition.x, uiPosition.y + 410, 640, 26); |
|
vecTitleScreen.push_back(std::make_unique<UiArtText>(_("Copyright © 1996-2001 Blizzard Entertainment").data(), rect, UiFlags::AlignCenter | UiFlags::FontSize24 | UiFlags::ColorUiSilver)); |
|
} |
|
|
|
bool endMenu = false; |
|
Uint32 timeOut = SDL_GetTicks() + 7000; |
|
|
|
SDL_Event event; |
|
while (!endMenu && SDL_GetTicks() < timeOut) { |
|
UiRenderItems(vecTitleScreen); |
|
UiFadeIn(); |
|
|
|
discord_manager::UpdateMenu(); |
|
|
|
while (PollEvent(&event) != 0) { |
|
if (GetMenuAction(event) != MenuAction_NONE) { |
|
endMenu = true; |
|
break; |
|
} |
|
switch (event.type) { |
|
case SDL_KEYDOWN: |
|
case SDL_MOUSEBUTTONUP: |
|
endMenu = true; |
|
break; |
|
} |
|
UiHandleEvents(&event); |
|
} |
|
} |
|
|
|
TitleFree(); |
|
} |
|
|
|
} // namespace devilution
|
|
|