Skip to content

Commit

Permalink
Add overrides for name and color from rating lookup
Browse files Browse the repository at this point in the history
  • Loading branch information
maxsupermanhd authored and past-due committed Oct 15, 2023
1 parent 2f2781b commit 9049906
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 5 deletions.
22 changes: 18 additions & 4 deletions src/multiint.cpp
Expand Up @@ -7684,12 +7684,23 @@ void displayPlayer(WIDGET *psWidget, UDWORD xOffset, UDWORD yOffset)
}
else if (ingame.localOptionsReceived && NetPlay.players[j].allocated) // only draw if real player!
{
const PLAYERSTATS& stat = getMultiStats(j);
auto ar = stat.autorating;

std::string name = NetPlay.players[j].name;
if (ar.name != "")
{
name = ar.name;
}

std::map<std::string, EcKey::Key> serverPlayers; // TODO Fill this with players known to the server (needs implementing on the server, too). Currently useless.

PIELIGHT colour;
if (ingame.PingTimes[j] >= PING_LIMIT)
if (ar.nameTextColorOverride[0] != 255 || ar.nameTextColorOverride[1] != 255 || ar.nameTextColorOverride[2] != 255)
{
colour = pal_Colour(ar.nameTextColorOverride[0], ar.nameTextColorOverride[1], ar.nameTextColorOverride[2]);
}
else if (ingame.PingTimes[j] >= PING_LIMIT)
{
colour = WZCOL_FORM_PLAYER_NOPING;
}
Expand Down Expand Up @@ -7743,8 +7754,6 @@ void displayPlayer(WIDGET *psWidget, UDWORD xOffset, UDWORD yOffset)
subText += buf;
}

const PLAYERSTATS& stat = getMultiStats(j);
auto ar = stat.autorating;
if (!ar.valid)
{
ar.dummy = stat.played < 5;
Expand Down Expand Up @@ -7810,8 +7819,13 @@ void displayPlayer(WIDGET *psWidget, UDWORD xOffset, UDWORD yOffset)

if (!ar.elo.empty())
{
PIELIGHT eloColour = WZCOL_TEXT_BRIGHT;
if (ar.eloTextColorOverride[0] != 255 || ar.eloTextColorOverride[1] != 255 || ar.eloTextColorOverride[2] != 255)
{
eloColour = pal_Colour(ar.eloTextColorOverride[0], ar.eloTextColorOverride[1], ar.eloTextColorOverride[2]);
}
cache.wzEloText.setText(WzString::fromUtf8(ar.elo), font_small);
cache.wzEloText.render(x + nameX, y + 28 + H*!subText.isEmpty(), WZCOL_TEXT_BRIGHT);
cache.wzEloText.render(x + nameX, y + 28 + H*!subText.isEmpty(), eloColour);
}
}
else // AI
Expand Down
21 changes: 20 additions & 1 deletion src/multistat.cpp
Expand Up @@ -71,6 +71,9 @@ static void NETauto(PLAYERSTATS::Autorating &ar)
NETauto(ar.elo);
NETauto(ar.autohoster);
NETauto(ar.details);
NETauto(ar.name);
NETauto(ar.nameTextColorOverride);
NETauto(ar.eloTextColorOverride);
}
}

Expand All @@ -86,6 +89,22 @@ PLAYERSTATS::Autorating::Autorating(nlohmann::json const &json)
elo = json["elo"].get<std::string>();
autohoster = json["autohoster"].get<bool>();
details = json["details"].get<std::string>();
if (json.contains("name"))
{
name = json["name"].get<std::string>();
}
if (json.contains("nameTextColorOverride"))
{
nameTextColorOverride[0] = json["nameTextColorOverride"][0].get<uint8_t>();
nameTextColorOverride[1] = json["nameTextColorOverride"][1].get<uint8_t>();
nameTextColorOverride[2] = json["nameTextColorOverride"][2].get<uint8_t>();
}
if (json.contains("eloTextColorOverride"))
{
eloTextColorOverride[0] = json["eloTextColorOverride"][0].get<uint8_t>();
eloTextColorOverride[1] = json["eloTextColorOverride"][1].get<uint8_t>();
eloTextColorOverride[2] = json["eloTextColorOverride"][2].get<uint8_t>();
}
valid = true;
} catch (const std::exception &e) {
debug(LOG_WARNING, "Error parsing rating JSON: %s", e.what());
Expand Down Expand Up @@ -165,7 +184,7 @@ void lookupRatingAsync(uint32_t playerIndex)
debug(LOG_WARNING, "Failure fetching \"%s\".", urlCopy.c_str());
});
};
req.maxDownloadSizeLimit = 4096;
req.maxDownloadSizeLimit = 4096*4;
urlRequestData(req);
}

Expand Down
3 changes: 3 additions & 0 deletions src/multistat.h
Expand Up @@ -75,8 +75,11 @@ struct PLAYERSTATS
uint8_t star[3] = {0, 0, 0};
uint8_t medal = 0;
uint8_t level = 0;
uint8_t nameTextColorOverride[3] = {255, 255, 255}; // rgb
uint8_t eloTextColorOverride[3] = {255, 255, 255}; // rgb
std::string elo;
std::string details;
std::string name;
};
Autorating autorating;
RATING_SOURCE autoratingFrom = RATING_SOURCE_HOST;
Expand Down

0 comments on commit 9049906

Please sign in to comment.