add option to override name colors by game version

This commit is contained in:
Martin Michelsen
2024-03-06 12:48:54 -08:00
parent 2ecef68a72
commit 33b95015a2
6 changed files with 77 additions and 4 deletions
+31 -4
View File
@@ -1703,6 +1703,11 @@ static void send_join_spectator_team(shared_ptr<Client> c, shared_ptr<Lobby> l)
: wc_p->disp.stats.level.load();
e.name_color = wc_p->disp.visual.name_color;
if (s->version_name_colors) {
p.disp.visual.name_color = s->name_color_for_version(wc->version());
e.name_color = p.disp.visual.name_color;
}
player_count++;
}
@@ -1766,6 +1771,11 @@ static void send_join_spectator_team(shared_ptr<Client> c, shared_ptr<Lobby> l)
: other_p->disp.stats.level.load();
cmd_e.name_color = other_p->disp.visual.name_color;
if (s->version_name_colors) {
cmd_p.disp.visual.name_color = s->name_color_for_version(other_c->version());
cmd_e.name_color = cmd_p.disp.visual.name_color;
}
player_count++;
}
}
@@ -1867,10 +1877,14 @@ void send_join_game(shared_ptr<Client> c, shared_ptr<Lobby> l) {
for (size_t x = 0; x < 4; x++) {
if (l->clients[x]) {
auto other_p = l->clients[x]->character();
cmd.players_ep3[x].inventory = other_p->inventory;
cmd.players_ep3[x].inventory.encode_for_client(c);
cmd.players_ep3[x].disp = convert_player_disp_data<PlayerDispDataDCPCV3>(other_p->disp, c->language(), other_p->inventory.language);
cmd.players_ep3[x].disp.enforce_lobby_join_limits_for_version(c->version());
auto& cmd_p = cmd.players_ep3[x];
cmd_p.inventory = other_p->inventory;
cmd_p.inventory.encode_for_client(c);
cmd_p.disp = convert_player_disp_data<PlayerDispDataDCPCV3>(other_p->disp, c->language(), other_p->inventory.language);
cmd_p.disp.enforce_lobby_join_limits_for_version(c->version());
if (s->version_name_colors) {
cmd_p.disp.visual.name_color = s->name_color_for_version(l->clients[x]->version());
}
}
}
send_command_t(c, 0x64, player_count, cmd);
@@ -1987,6 +2001,12 @@ void send_join_lobby_t(shared_ptr<Client> c, shared_ptr<Lobby> l, shared_ptr<Cli
} else {
e.disp = convert_player_disp_data<DispDataT>(lp->disp, c->language(), lp->inventory.language);
e.disp.enforce_lobby_join_limits_for_version(c->version());
if (s->version_name_colors) {
e.disp.visual.name_color = s->name_color_for_version(lc->version());
if (is_v1_or_v2(c->version())) {
e.disp.visual.compute_name_color_checksum();
}
}
}
}
@@ -2053,6 +2073,9 @@ void send_join_lobby_xb(shared_ptr<Client> c, shared_ptr<Lobby> l, shared_ptr<Cl
e.inventory.encode_for_client(c);
e.disp = convert_player_disp_data<PlayerDispDataDCPCV3>(lp->disp, c->language(), lp->inventory.language);
e.disp.enforce_lobby_join_limits_for_version(c->version());
if (s->version_name_colors) {
e.disp.visual.name_color = s->name_color_for_version(lc->version());
}
}
send_command(c, command, used_entries, &cmd, cmd.size(used_entries));
@@ -2101,6 +2124,10 @@ void send_join_lobby_dc_nte(shared_ptr<Client> c, shared_ptr<Lobby> l,
} else {
e.disp = convert_player_disp_data<PlayerDispDataDCPCV3>(lp->disp, c->language(), lp->inventory.language);
e.disp.enforce_lobby_join_limits_for_version(c->version());
if (s->version_name_colors) {
e.disp.visual.name_color = s->name_color_for_version(lc->version());
e.disp.visual.compute_name_color_checksum();
}
}
}