add some extra proxy options

This commit is contained in:
Martin Michelsen
2023-07-15 22:52:06 -07:00
parent 8cd1106818
commit 668c9f9457
3 changed files with 22 additions and 0 deletions
+12
View File
@@ -36,6 +36,10 @@
using namespace std;
static constexpr uint16_t encode_xrgb1555(uint32_t xrgb8888) {
return ((xrgb8888 >> 9) & 0x7C00) | ((xrgb8888 >> 6) & 0x03E0) | ((xrgb8888 >> 3) & 0x001F);
}
struct HandlerResult {
enum class Type {
FORWARD = 0,
@@ -1033,6 +1037,10 @@ static HandlerResult C_GXB_61(shared_ptr<ServerState>,
pd.disp.visual.name_color = 0x00000000;
modified = true;
}
if (!session.challenge_rank_title_override.empty()) {
pd.records.challenge.title_color = encode_xrgb1555(session.challenge_rank_color_override);
pd.records.challenge.rank_title = encrypt_challenge_rank_text(session.challenge_rank_title_override);
}
} else {
C_CharacterData_V3_61_98* pd;
@@ -1066,6 +1074,10 @@ static HandlerResult C_GXB_61(shared_ptr<ServerState>,
pd->disp.visual.name_color = 0x00000000;
modified = true;
}
if (!session.challenge_rank_title_override.empty()) {
pd->records.challenge.title_color = encode_xrgb1555(session.challenge_rank_color_override);
pd->records.challenge.rank_title = encrypt_challenge_rank_text(session.challenge_rank_title_override);
}
}
return modified ? HandlerResult::Type::MODIFIED : HandlerResult::Type::FORWARD;
+2
View File
@@ -65,6 +65,8 @@ public:
std::string login_command_bb;
ClientOptions options;
uint32_t challenge_rank_color_override;
std::string challenge_rank_title_override;
int64_t remote_guild_card_number;
parray<uint8_t, 0x20> remote_client_config_data;
ClientConfigBB newserv_client_config;
+8
View File
@@ -720,6 +720,14 @@ Proxy session commands:\n\
session->options.override_lobby_number = lobby_type_for_name(command_args);
}
} else if (command_name == "set-challenge-rank-title") {
auto session = this->get_proxy_session(session_name);
session->challenge_rank_title_override = command_args;
} else if (command_name == "set-challenge-rank-color") {
auto session = this->get_proxy_session(session_name);
session->challenge_rank_color_override = stoul(command_args, nullptr, 16);
} else if (command_name == "set-chat-filter") {
auto session = this->get_proxy_session(session_name);
set_boolean(&session->options.enable_chat_filter, command_args);