Add [Options] override for blips and shownames for parity with 2.5 (#953)
* split get_blips into two functions Because otherwise it would always return only what was read from char.ini, and we want it to be able to read our custom QLineEdit too, right? * include new function, rewrite description * check for custom blips support in packet * add custom blips enabled bool * increase MS_MAXIMUM, add custom blips QLineEdit * add BLIPNAME to chat message * introducing custom blips * introducing custom blips I said * unfold if * unfold other if * retool custom blips code, add ini parser * remove extraneous debug calls * fix incorrect default value on get_showname * restructure ini format * fix parser again --------- Co-authored-by: Lernos <lernoskey@gmail.com> Co-authored-by: stonedDiscord <Tukz@gmx.de>
This commit is contained in:
parent
9517666666
commit
c9eabf35da
@ -100,11 +100,12 @@ public:
|
|||||||
bool casing_alerts_supported = false;
|
bool casing_alerts_supported = false;
|
||||||
bool modcall_reason_supported = false;
|
bool modcall_reason_supported = false;
|
||||||
bool looping_sfx_supported = false;
|
bool looping_sfx_supported = false;
|
||||||
bool additive_text_supported = false;
|
bool additive_supported = false;
|
||||||
bool effects_supported = false;
|
bool effects_supported = false;
|
||||||
bool y_offset_supported = false;
|
bool y_offset_supported = false;
|
||||||
bool expanded_desk_mods_supported = false;
|
bool expanded_desk_mods_supported = false;
|
||||||
bool auth_packet_supported = false;
|
bool auth_packet_supported = false;
|
||||||
|
bool custom_blips_supported = false;
|
||||||
|
|
||||||
///////////////loading info///////////////////
|
///////////////loading info///////////////////
|
||||||
|
|
||||||
@ -260,7 +261,7 @@ public:
|
|||||||
QString get_char_side(QString p_char);
|
QString get_char_side(QString p_char);
|
||||||
|
|
||||||
// Returns the showname from the ini of p_char
|
// Returns the showname from the ini of p_char
|
||||||
QString get_showname(QString p_char);
|
QString get_showname(QString p_char, int p_emote = -1);
|
||||||
|
|
||||||
// Returns the category of this character
|
// Returns the category of this character
|
||||||
QString get_category(QString p_char);
|
QString get_category(QString p_char);
|
||||||
@ -336,8 +337,11 @@ public:
|
|||||||
// Returns the desk modifier for p_char's p_emote
|
// Returns the desk modifier for p_char's p_emote
|
||||||
int get_desk_mod(QString p_char, int p_emote);
|
int get_desk_mod(QString p_char, int p_emote);
|
||||||
|
|
||||||
// Returns p_char's blips (previously called their "gender")
|
// Returns p_char's blipname by reading char.ini for blips (previously called "gender")
|
||||||
QString get_blips(QString p_char);
|
QString get_blipname(QString p_char, int p_emote = -1);
|
||||||
|
|
||||||
|
// Returns p_blipname's sound(path) to play in the client
|
||||||
|
QString get_blips(QString p_blipname);
|
||||||
|
|
||||||
// Get a property of a given emote, or get it from "options" if emote doesn't have it
|
// Get a property of a given emote, or get it from "options" if emote doesn't have it
|
||||||
QString get_emote_property(QString p_char, QString p_emote, QString p_property);
|
QString get_emote_property(QString p_char, QString p_emote, QString p_property);
|
||||||
|
@ -496,7 +496,7 @@ private:
|
|||||||
|
|
||||||
// Minumum and maximum number of parameters in the MS packet
|
// Minumum and maximum number of parameters in the MS packet
|
||||||
static const int MS_MINIMUM = 15;
|
static const int MS_MINIMUM = 15;
|
||||||
static const int MS_MAXIMUM = 30;
|
static const int MS_MAXIMUM = 31;
|
||||||
QString m_chatmessage[MS_MAXIMUM];
|
QString m_chatmessage[MS_MAXIMUM];
|
||||||
|
|
||||||
QString previous_ic_message = "";
|
QString previous_ic_message = "";
|
||||||
@ -692,6 +692,7 @@ private:
|
|||||||
QLineEdit *ui_ic_chat_message;
|
QLineEdit *ui_ic_chat_message;
|
||||||
AOLineEditFilter *ui_ic_chat_message_filter;
|
AOLineEditFilter *ui_ic_chat_message_filter;
|
||||||
QLineEdit *ui_ic_chat_name;
|
QLineEdit *ui_ic_chat_name;
|
||||||
|
QLineEdit *ui_custom_blips;
|
||||||
|
|
||||||
QLineEdit *ui_ooc_chat_message;
|
QLineEdit *ui_ooc_chat_message;
|
||||||
QLineEdit *ui_ooc_chat_name;
|
QLineEdit *ui_ooc_chat_name;
|
||||||
|
@ -111,6 +111,7 @@ enum CHAT_MESSAGE {
|
|||||||
FRAME_SFX,
|
FRAME_SFX,
|
||||||
ADDITIVE,
|
ADDITIVE,
|
||||||
EFFECTS,
|
EFFECTS,
|
||||||
|
BLIPNAME,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum EMOTE_MOD_TYPE {
|
enum EMOTE_MOD_TYPE {
|
||||||
|
@ -1593,7 +1593,7 @@ void Courtroom::enter_courtroom()
|
|||||||
else
|
else
|
||||||
ui_flip->hide();
|
ui_flip->hide();
|
||||||
|
|
||||||
if (ao_app->additive_text_supported)
|
if (ao_app->additive_supported)
|
||||||
ui_additive->show();
|
ui_additive->show();
|
||||||
else
|
else
|
||||||
ui_additive->hide();
|
ui_additive->hide();
|
||||||
@ -2019,13 +2019,12 @@ void Courtroom::on_chat_return_pressed()
|
|||||||
|
|
||||||
// If the server we're on supports CCCC stuff, we should use it!
|
// If the server we're on supports CCCC stuff, we should use it!
|
||||||
if (ao_app->cccc_ic_supported) {
|
if (ao_app->cccc_ic_supported) {
|
||||||
// If there is a showname entered, use that -- else, just send an empty
|
// If there is a showname entered, use that -- else, just send whatever the ini calls for.
|
||||||
// packet-part.
|
|
||||||
if (!ui_ic_chat_name->text().isEmpty()) {
|
if (!ui_ic_chat_name->text().isEmpty()) {
|
||||||
packet_contents.append(ui_ic_chat_name->text());
|
packet_contents.append(ui_ic_chat_name->text());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
packet_contents.append("");
|
packet_contents.append(ao_app->get_showname(current_char, current_emote));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Similarly, we send over whom we're paired with, unless we have chosen
|
// Similarly, we send over whom we're paired with, unless we have chosen
|
||||||
@ -2088,7 +2087,7 @@ void Courtroom::on_chat_return_pressed()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ao_app->additive_text_supported) {
|
if (ao_app->additive_supported) {
|
||||||
packet_contents.append(ui_additive->isChecked() ? "1" : "0");
|
packet_contents.append(ui_additive->isChecked() ? "1" : "0");
|
||||||
}
|
}
|
||||||
if (ao_app->effects_supported) {
|
if (ao_app->effects_supported) {
|
||||||
@ -2111,6 +2110,7 @@ void Courtroom::on_chat_return_pressed()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
packet_contents.append(ao_app->get_blipname(current_char, current_emote));
|
||||||
ao_app->send_server_packet(new AOPacket("MS", packet_contents));
|
ao_app->send_server_packet(new AOPacket("MS", packet_contents));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3658,7 +3658,11 @@ void Courtroom::start_chat_ticking()
|
|||||||
if (last_misc != current_misc || char_color_rgb_list.size() < max_colors)
|
if (last_misc != current_misc || char_color_rgb_list.size() < max_colors)
|
||||||
gen_char_rgb_list(current_misc);
|
gen_char_rgb_list(current_misc);
|
||||||
|
|
||||||
QString f_blips = ao_app->get_blips(m_chatmessage[CHAR_NAME]);
|
QString f_blips = ao_app->get_blipname(m_chatmessage[CHAR_NAME]);
|
||||||
|
f_blips = ao_app->get_blips(f_blips);
|
||||||
|
if (ao_app->custom_blips_supported && !m_chatmessage[BLIPNAME].isEmpty()) {
|
||||||
|
f_blips = ao_app->get_blips(m_chatmessage[BLIPNAME]);
|
||||||
|
}
|
||||||
blip_player->set_blips(f_blips);
|
blip_player->set_blips(f_blips);
|
||||||
|
|
||||||
// means text is currently ticking
|
// means text is currently ticking
|
||||||
|
@ -53,9 +53,10 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
|
|||||||
casing_alerts_supported = false;
|
casing_alerts_supported = false;
|
||||||
modcall_reason_supported = false;
|
modcall_reason_supported = false;
|
||||||
looping_sfx_supported = false;
|
looping_sfx_supported = false;
|
||||||
additive_text_supported = false;
|
additive_supported = false;
|
||||||
effects_supported = false;
|
effects_supported = false;
|
||||||
y_offset_supported = false;
|
y_offset_supported = false;
|
||||||
|
custom_blips_supported = false;
|
||||||
|
|
||||||
QString f_hdid;
|
QString f_hdid;
|
||||||
f_hdid = get_hdid();
|
f_hdid = get_hdid();
|
||||||
@ -101,10 +102,13 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
|
|||||||
casing_alerts_supported = false;
|
casing_alerts_supported = false;
|
||||||
modcall_reason_supported = false;
|
modcall_reason_supported = false;
|
||||||
looping_sfx_supported = false;
|
looping_sfx_supported = false;
|
||||||
additive_text_supported = false;
|
additive_supported = false;
|
||||||
effects_supported = false;
|
effects_supported = false;
|
||||||
expanded_desk_mods_supported = false;
|
expanded_desk_mods_supported = false;
|
||||||
auth_packet_supported = false;
|
auth_packet_supported = false;
|
||||||
|
custom_blips_supported = false;
|
||||||
|
log_to_demo = false;
|
||||||
|
|
||||||
if (f_packet.contains("yellowtext", Qt::CaseInsensitive))
|
if (f_packet.contains("yellowtext", Qt::CaseInsensitive))
|
||||||
yellow_text_supported = true;
|
yellow_text_supported = true;
|
||||||
if (f_packet.contains("prezoom", Qt::CaseInsensitive))
|
if (f_packet.contains("prezoom", Qt::CaseInsensitive))
|
||||||
@ -128,7 +132,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
|
|||||||
if (f_packet.contains("looping_sfx", Qt::CaseInsensitive))
|
if (f_packet.contains("looping_sfx", Qt::CaseInsensitive))
|
||||||
looping_sfx_supported = true;
|
looping_sfx_supported = true;
|
||||||
if (f_packet.contains("additive", Qt::CaseInsensitive))
|
if (f_packet.contains("additive", Qt::CaseInsensitive))
|
||||||
additive_text_supported = true;
|
additive_supported = true;
|
||||||
if (f_packet.contains("effects", Qt::CaseInsensitive))
|
if (f_packet.contains("effects", Qt::CaseInsensitive))
|
||||||
effects_supported = true;
|
effects_supported = true;
|
||||||
if (f_packet.contains("y_offset", Qt::CaseInsensitive))
|
if (f_packet.contains("y_offset", Qt::CaseInsensitive))
|
||||||
@ -137,7 +141,8 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
|
|||||||
expanded_desk_mods_supported = true;
|
expanded_desk_mods_supported = true;
|
||||||
if (f_packet.contains("auth_packet", Qt::CaseInsensitive))
|
if (f_packet.contains("auth_packet", Qt::CaseInsensitive))
|
||||||
auth_packet_supported = true;
|
auth_packet_supported = true;
|
||||||
log_to_demo = false;
|
if (f_packet.contains("custom_blips", Qt::CaseInsensitive))
|
||||||
|
custom_blips_supported = true;
|
||||||
}
|
}
|
||||||
else if (header == "PN") {
|
else if (header == "PN") {
|
||||||
if (!lobby_constructed || f_contents.size() < 2)
|
if (!lobby_constructed || f_contents.size() < 2)
|
||||||
|
@ -442,11 +442,23 @@ QStringList AOApplication::read_ini_tags(VPath p_path, QString target_tag)
|
|||||||
return r_values;
|
return r_values;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString AOApplication::get_showname(QString p_char)
|
QString AOApplication::get_showname(QString p_char, int p_emote)
|
||||||
{
|
{
|
||||||
QString f_result = read_char_ini(p_char, "showname", "Options");
|
QString f_result = read_char_ini(p_char, "showname", "Options");
|
||||||
QString f_needed = read_char_ini(p_char, "needs_showname", "Options");
|
QString f_needed = read_char_ini(p_char, "needs_showname", "Options");
|
||||||
|
|
||||||
|
if (p_emote != -1) {
|
||||||
|
int override_idx =
|
||||||
|
read_char_ini(p_char, QString::number(p_emote + 1), "OptionsN").toInt();
|
||||||
|
if (override_idx > 0) {
|
||||||
|
QString override_key = "Options" + QString::number(override_idx);
|
||||||
|
QString temp_f_result = read_char_ini(p_char, "showname", override_key);
|
||||||
|
if (!temp_f_result.isEmpty()) {
|
||||||
|
f_result = temp_f_result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (f_needed.startsWith("false"))
|
if (f_needed.startsWith("false"))
|
||||||
return "";
|
return "";
|
||||||
if (f_result == "")
|
if (f_result == "")
|
||||||
@ -463,24 +475,39 @@ QString AOApplication::get_char_side(QString p_char)
|
|||||||
return f_result;
|
return f_result;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString AOApplication::get_blips(QString p_char)
|
QString AOApplication::get_blipname(QString p_char, int p_emote)
|
||||||
{
|
{
|
||||||
QString f_result = read_char_ini(p_char, "blips", "Options");
|
QString f_result = read_char_ini(p_char, "blips", "Options");
|
||||||
|
|
||||||
if (f_result == "") {
|
if (p_emote != -1) {
|
||||||
f_result = read_char_ini(p_char, "gender", "Options"); // not very PC, FanatSors
|
int override_idx =
|
||||||
if (f_result == "")
|
read_char_ini(p_char, QString::number(p_emote + 1), "OptionsN").toInt();
|
||||||
f_result = "male";
|
if (override_idx > 0) {
|
||||||
|
QString override_key = "Options" + QString::number(override_idx);
|
||||||
|
QString temp_f_result = read_char_ini(p_char, "blips", override_key);
|
||||||
|
if (!temp_f_result.isEmpty()) {
|
||||||
|
f_result = temp_f_result;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!file_exists(get_sfx_suffix(get_sounds_path(f_result)))) {
|
if (f_result == "") {
|
||||||
if (file_exists(get_sfx_suffix(get_sounds_path("../blips/" + f_result))))
|
f_result =
|
||||||
return "../blips/" + f_result; // Return the cool kids variant
|
read_char_ini(p_char, "gender", "Options"); // not very PC, FanatSors
|
||||||
|
if (f_result == "") f_result = "male";
|
||||||
return "sfx-blip" + f_result; // Return legacy variant
|
|
||||||
}
|
}
|
||||||
return f_result;
|
return f_result;
|
||||||
}
|
}
|
||||||
|
QString AOApplication::get_blips(QString p_blipname)
|
||||||
|
{
|
||||||
|
if (!file_exists(get_sfx_suffix(get_sounds_path(p_blipname)))) {
|
||||||
|
if (file_exists(get_sfx_suffix(get_sounds_path("../blips/" + p_blipname))))
|
||||||
|
return "../blips/" + p_blipname; // Return the cool kids variant
|
||||||
|
|
||||||
|
return "sfx-blip" + p_blipname; // Return legacy variant
|
||||||
|
}
|
||||||
|
return p_blipname;
|
||||||
|
}
|
||||||
|
|
||||||
QString AOApplication::get_emote_property(QString p_char, QString p_emote,
|
QString AOApplication::get_emote_property(QString p_char, QString p_emote,
|
||||||
QString p_property)
|
QString p_property)
|
||||||
|
Loading…
Reference in New Issue
Block a user