mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-02-24 06:41:52 -05:00
about window - not super pretty but not ugly imo
This commit is contained in:
parent
3643db26c9
commit
568c7fcdbc
104
soh/soh/AboutWindow.cpp
Normal file
104
soh/soh/AboutWindow.cpp
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
#include "AboutWindow.h"
|
||||||
|
#include <imgui.h>
|
||||||
|
#include <soh/GameVersions.h>
|
||||||
|
#include "soh/ResourceManagerHelpers.h"
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
#include "variables.h"
|
||||||
|
}
|
||||||
|
|
||||||
|
AboutWindow::~AboutWindow() {
|
||||||
|
SPDLOG_TRACE("destruct about window");
|
||||||
|
}
|
||||||
|
|
||||||
|
void AboutWindow::InitElement() {
|
||||||
|
mIsTaggedVersion = gGitCommitTag[0] != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AboutWindow::Draw() {
|
||||||
|
if (!IsVisible()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGuiWindowFlags windowFlags = ImGuiWindowFlags_AlwaysAutoResize |
|
||||||
|
ImGuiWindowFlags_NoResize |
|
||||||
|
ImGuiWindowFlags_NoDocking |
|
||||||
|
ImGuiWindowFlags_NoScrollWithMouse |
|
||||||
|
ImGuiWindowFlags_NoScrollbar;
|
||||||
|
|
||||||
|
ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(16 * ImGui::GetIO().FontGlobalScale, 8 * ImGui::GetIO().FontGlobalScale));
|
||||||
|
|
||||||
|
if (!ImGui::Begin(GetName().c_str(), &mIsVisible, windowFlags)) {
|
||||||
|
ImGui::End();
|
||||||
|
} else {
|
||||||
|
DrawElement();
|
||||||
|
ImGui::End();
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::PopStyleVar();
|
||||||
|
|
||||||
|
// Sync up the IsVisible flag if it was changed by ImGui
|
||||||
|
SyncVisibilityConsoleVariable();
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* AboutWindow::GetGameVersionString(uint32_t index) {
|
||||||
|
uint32_t gameVersion = ResourceMgr_GetGameVersion(index);
|
||||||
|
switch (gameVersion) {
|
||||||
|
case OOT_NTSC_US_10:
|
||||||
|
return "NTSC-U 1.0";
|
||||||
|
case OOT_NTSC_US_11:
|
||||||
|
return "NTSC-U 1.1";
|
||||||
|
case OOT_NTSC_US_12:
|
||||||
|
return "NTSC-U 1.2";
|
||||||
|
case OOT_PAL_10:
|
||||||
|
return "PAL 1.0";
|
||||||
|
case OOT_PAL_11:
|
||||||
|
return "PAL 1.1";
|
||||||
|
case OOT_PAL_GC:
|
||||||
|
return "PAL GC";
|
||||||
|
case OOT_PAL_MQ:
|
||||||
|
return "PAL MQ";
|
||||||
|
case OOT_PAL_GC_DBG1:
|
||||||
|
case OOT_PAL_GC_DBG2:
|
||||||
|
return "PAL GC-D";
|
||||||
|
case OOT_PAL_GC_MQ_DBG:
|
||||||
|
return "PAL MQ-D";
|
||||||
|
case OOT_IQUE_CN:
|
||||||
|
return "IQUE CN";
|
||||||
|
case OOT_IQUE_TW:
|
||||||
|
return "IQUE TW";
|
||||||
|
default:
|
||||||
|
return "UNKNOWN";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void AboutWindow::DrawElement() {
|
||||||
|
// The icon is already padded - adjust for that
|
||||||
|
ImVec2 cursorPos = ImGui::GetCursorScreenPos();
|
||||||
|
cursorPos.x -= 16 * ImGui::GetIO().FontGlobalScale;
|
||||||
|
ImGui::SetCursorScreenPos(cursorPos);
|
||||||
|
|
||||||
|
ImGui::Image(Ship::Context::GetInstance()->GetWindow()->GetGui()->GetTextureByName("Game_Icon"), ImVec2(64.0f * ImGui::GetIO().FontGlobalScale, 64.0f * ImGui::GetIO().FontGlobalScale));
|
||||||
|
|
||||||
|
ImGui::SameLine();
|
||||||
|
|
||||||
|
ImGui::BeginGroup();
|
||||||
|
ImGui::Text("Ship of Harkinian");
|
||||||
|
if (mIsTaggedVersion) {
|
||||||
|
ImGui::Text("%s", gBuildVersion);
|
||||||
|
} else {
|
||||||
|
//truncate the commit to 7 characters
|
||||||
|
char gGitCommitHashTruncated[8];
|
||||||
|
strncpy(gGitCommitHashTruncated, (char*)gGitCommitHash, 7);
|
||||||
|
gGitCommitHashTruncated[7] = 0;
|
||||||
|
ImGui::Text("%s", gGitBranch);
|
||||||
|
ImGui::Text("%s", gGitCommitHashTruncated);
|
||||||
|
}
|
||||||
|
ImGui::EndGroup();
|
||||||
|
|
||||||
|
ImGui::Dummy(ImVec2(0, 2 * ImGui::GetIO().FontGlobalScale));
|
||||||
|
ImGui::Text("Game Archives:");
|
||||||
|
for (uint32_t i = 0; i < ResourceMgr_GetNumGameVersions(); i++) {
|
||||||
|
ImGui::BulletText(GetGameVersionString(i));
|
||||||
|
}
|
||||||
|
}
|
19
soh/soh/AboutWindow.h
Normal file
19
soh/soh/AboutWindow.h
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <libultraship/libultraship.h>
|
||||||
|
|
||||||
|
class AboutWindow : public Ship::GuiWindow {
|
||||||
|
public:
|
||||||
|
using GuiWindow::GuiWindow;
|
||||||
|
~AboutWindow();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void InitElement() override;
|
||||||
|
void Draw() override;
|
||||||
|
void DrawElement() override;
|
||||||
|
void UpdateElement() override {};
|
||||||
|
|
||||||
|
const char* GetGameVersionString(uint32_t index);
|
||||||
|
|
||||||
|
bool mIsTaggedVersion;
|
||||||
|
};
|
@ -134,6 +134,7 @@ namespace SohGui {
|
|||||||
std::shared_ptr<SohModalWindow> mModalWindow;
|
std::shared_ptr<SohModalWindow> mModalWindow;
|
||||||
std::shared_ptr<Notification::Window> mNotificationWindow;
|
std::shared_ptr<Notification::Window> mNotificationWindow;
|
||||||
std::shared_ptr<TimeDisplayWindow> mTimeDisplayWindow;
|
std::shared_ptr<TimeDisplayWindow> mTimeDisplayWindow;
|
||||||
|
std::shared_ptr<AboutWindow> mAboutWindow;
|
||||||
|
|
||||||
void SetupGuiElements() {
|
void SetupGuiElements() {
|
||||||
auto gui = Ship::Context::GetInstance()->GetWindow()->GetGui();
|
auto gui = Ship::Context::GetInstance()->GetWindow()->GetGui();
|
||||||
@ -221,6 +222,8 @@ namespace SohGui {
|
|||||||
mNotificationWindow->Show();
|
mNotificationWindow->Show();
|
||||||
mTimeDisplayWindow = std::make_shared<TimeDisplayWindow>(CVAR_WINDOW("TimeDisplayEnabled"), "Additional Timers");
|
mTimeDisplayWindow = std::make_shared<TimeDisplayWindow>(CVAR_WINDOW("TimeDisplayEnabled"), "Additional Timers");
|
||||||
gui->AddGuiWindow(mTimeDisplayWindow);
|
gui->AddGuiWindow(mTimeDisplayWindow);
|
||||||
|
mAboutWindow = std::make_shared<AboutWindow>(CVAR_WINDOW("AboutWindow"), "About");
|
||||||
|
gui->AddGuiWindow(mAboutWindow);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Destroy() {
|
void Destroy() {
|
||||||
@ -257,6 +260,7 @@ namespace SohGui {
|
|||||||
mTimeSplitWindow = nullptr;
|
mTimeSplitWindow = nullptr;
|
||||||
mPlandomizerWindow = nullptr;
|
mPlandomizerWindow = nullptr;
|
||||||
mTimeDisplayWindow = nullptr;
|
mTimeDisplayWindow = nullptr;
|
||||||
|
mAboutWindow = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterPopup(std::string title, std::string message, std::string button1, std::string button2, std::function<void()> button1callback, std::function<void()> button2callback) {
|
void RegisterPopup(std::string title, std::string message, std::string button1, std::string button2, std::function<void()> button1callback, std::function<void()> button2callback) {
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
#include "Enhancements/randomizer/randomizer_settings_window.h"
|
#include "Enhancements/randomizer/randomizer_settings_window.h"
|
||||||
#include "Enhancements/timesplits/TimeSplits.h"
|
#include "Enhancements/timesplits/TimeSplits.h"
|
||||||
#include "Enhancements/randomizer/Plandomizer.h"
|
#include "Enhancements/randomizer/Plandomizer.h"
|
||||||
|
#include "AboutWindow.h"
|
||||||
#include "SohModals.h"
|
#include "SohModals.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -44,6 +44,7 @@
|
|||||||
#include "Enhancements/timesplits/TimeSplits.h"
|
#include "Enhancements/timesplits/TimeSplits.h"
|
||||||
#include "Enhancements/randomizer/Plandomizer.h"
|
#include "Enhancements/randomizer/Plandomizer.h"
|
||||||
#include "Enhancements/TimeDisplay/TimeDisplay.h"
|
#include "Enhancements/TimeDisplay/TimeDisplay.h"
|
||||||
|
#include "AboutWindow.h"
|
||||||
|
|
||||||
// FA icons are kind of wonky, if they worked how I expected them to the "+ 2.0f" wouldn't be needed, but
|
// FA icons are kind of wonky, if they worked how I expected them to the "+ 2.0f" wouldn't be needed, but
|
||||||
// they don't work how I expect them to so I added that because it looked good when I eyeballed it
|
// they don't work how I expect them to so I added that because it looked good when I eyeballed it
|
||||||
@ -177,8 +178,18 @@ void DrawMenuBarIcon() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern std::shared_ptr<AboutWindow> mAboutWindow;
|
||||||
|
|
||||||
void DrawShipMenu() {
|
void DrawShipMenu() {
|
||||||
if (ImGui::BeginMenu("Ship")) {
|
if (ImGui::BeginMenu("Ship")) {
|
||||||
|
if (mAboutWindow) {
|
||||||
|
if (ImGui::MenuItem("About...")) {
|
||||||
|
mAboutWindow->Show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
UIWidgets::Spacer(0);
|
||||||
|
|
||||||
if (ImGui::MenuItem("Hide Menu Bar",
|
if (ImGui::MenuItem("Hide Menu Bar",
|
||||||
#if !defined(__SWITCH__) && !defined(__WIIU__)
|
#if !defined(__SWITCH__) && !defined(__WIIU__)
|
||||||
"F1"
|
"F1"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user