From 6c393f9ff420c2a4185122cfb1bed0fbb2bcfad9 Mon Sep 17 00:00:00 2001 From: Techjar Date: Tue, 2 Apr 2019 17:13:42 -0400 Subject: Add imgui golf mode overlay --- Source/Core/VideoCommon/NetPlayGolfUI.cpp | 66 +++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 Source/Core/VideoCommon/NetPlayGolfUI.cpp (limited to 'Source/Core/VideoCommon/NetPlayGolfUI.cpp') diff --git a/Source/Core/VideoCommon/NetPlayGolfUI.cpp b/Source/Core/VideoCommon/NetPlayGolfUI.cpp new file mode 100644 index 0000000000..3a831b1cf1 --- /dev/null +++ b/Source/Core/VideoCommon/NetPlayGolfUI.cpp @@ -0,0 +1,66 @@ +// Copyright 2019 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#include "Common/StringUtil.h" + +#include "Core/NetPlayClient.h" + +#include "VideoCommon/NetPlayGolfUI.h" + +#include + +constexpr float DEFAULT_WINDOW_WIDTH = 220.0f; +constexpr float DEFAULT_WINDOW_HEIGHT = 45.0f; + +std::unique_ptr g_netplay_golf_ui; + +NetPlayGolfUI::NetPlayGolfUI(std::shared_ptr netplay_client) +{ + m_netplay_client = netplay_client; +} + +void NetPlayGolfUI::Display() +{ + auto client = m_netplay_client.lock(); + if (!client) + return; + + const float scale = ImGui::GetIO().DisplayFramebufferScale.x; + + ImGui::SetNextWindowPos(ImVec2((20.0f + DEFAULT_WINDOW_WIDTH) * scale, 10.0f * scale), + ImGuiCond_FirstUseEver); + ImGui::SetNextWindowSizeConstraints( + ImVec2(DEFAULT_WINDOW_WIDTH * scale, DEFAULT_WINDOW_HEIGHT * scale), + ImGui::GetIO().DisplaySize); + + // TODO: Translate these strings once imgui has multilingual fonts + if (!ImGui::Begin("Golf Mode", nullptr, ImGuiWindowFlags_None)) + { + ImGui::End(); + return; + } + + ImGui::Text("Current Golfer: %s", client->GetCurrentGolfer().c_str()); + + if (client->LocalPlayerHasControllerMapped()) + { + if (ImGui::Button("Take Control")) + { + client->RequestGolfControl(); + } + + for (auto player : client->GetPlayers()) + { + if (client->IsLocalPlayer(player->pid) || !client->PlayerHasControllerMapped(player->pid)) + continue; + + if (ImGui::Button(StringFromFormat("Give Control to %s", player->name.c_str()).c_str())) + { + client->RequestGolfControl(player->pid); + } + } + } + + ImGui::End(); +} -- cgit v1.2.3