feat(Players): Made list alphabetical

This commit is contained in:
Yimura
2021-07-23 18:06:33 +02:00
parent e426963f54
commit cba521b616
3 changed files with 26 additions and 7 deletions

View File

@ -11,6 +11,9 @@ namespace big
if (busy) return;
busy = true;
int friend_count = 0;
int player_count = 0;
for (Player i = 0; i < 32; i++)
{
if (NETWORK::NETWORK_IS_PLAYER_CONNECTED(i) && i != PLAYER::PLAYER_ID())
@ -24,7 +27,13 @@ namespace big
NETWORK::NETWORK_HANDLE_FROM_PLAYER(i, &iNetworkHandle[0], 13);
NETWORK::NETWORK_IS_HANDLE_VALID(&iNetworkHandle[0], 13) && NETWORK::NETWORK_IS_FRIEND(&iNetworkHandle[0]);
g.players[i].is_friend = NETWORK::NETWORK_IS_HANDLE_VALID(iNetworkHandle, 13) && NETWORK::NETWORK_IS_FRIEND(iNetworkHandle);
if (NETWORK::NETWORK_IS_HANDLE_VALID(iNetworkHandle, 13) && NETWORK::NETWORK_IS_FRIEND(iNetworkHandle))
{
g.players[i].is_friend = true;
friend_count++;
}
else player_count++;
strcpy(g.players[i].name, PLAYER::GET_PLAYER_NAME(i));
}
@ -37,6 +46,9 @@ namespace big
script::get_current()->yield();
}
g.friend_count = friend_count;
g.player_count = player_count;
busy = false;
}
}

View File

@ -43,6 +43,8 @@ struct globals {
int y;
};
int friend_count = 0;
int player_count = 0;
CPlayer players[32];
CPlayer selected_player;

View File

@ -1,3 +1,5 @@
#include <algorithm>
#include <iterator>
#include "gui/window.hpp"
#include "imgui.h"
@ -12,7 +14,7 @@ namespace big
ImGui::SetNextWindowPos({ g.window.x - width, height_correction }, ImGuiCond_Always);
if (ImGui::Begin("###player_menu", NULL, ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoNav))
{
auto vecButtonWidth = ImVec2(ImGui::GetWindowSize().x - 30.f, 0.0f);
auto vecButtonWidth = ImVec2(ImGui::GetWindowSize().x - 15.f, 0.0f);
//ImGui::TextColored({ 255,255,255,255 }, "YOU:");
@ -24,15 +26,19 @@ namespace big
//ImGui::Separator();
CPlayer players[32];
std::copy(std::begin(g.players), std::end(g.players), std::begin(players));
std::sort(std::begin(players), std::end(players));
char title[64];
sprintf(title, "Friends (%d)###friend_lists", 0);
sprintf(title, "Friends (%d)###friend_lists", g.friend_count);
if (ImGui::TreeNode(title))
{
ImGui::Unindent();
bool friendInLobby = false;
for (auto& player : g.players)
for (auto& player : players)
{
if (player.is_friend && player.is_online)
{
@ -56,12 +62,12 @@ namespace big
ImGui::Separator();
}
sprintf(title, "Players (%d)###player_lists", 0);
sprintf(title, "Players (%d)###player_lists", g.player_count);
if (ImGui::TreeNode(title))
{
ImGui::Unindent();
for (auto& player : g.players)
for (auto& player : players)
{
if (!player.is_friend && player.is_online)
{
@ -79,6 +85,5 @@ namespace big
ImGui::End();
}
}
}