Improvements to the way the position dropdown is handled (#428)
* it works * woops * oops 2 electric boogaloo * fix "SP" packet not working properly
This commit is contained in:
parent
3683e54501
commit
639d4738db
@ -165,7 +165,7 @@ public:
|
||||
void set_background(QString p_background, bool display = false);
|
||||
|
||||
// sets the local character pos/side to use.
|
||||
void set_side(QString p_side);
|
||||
void set_side(QString p_side, bool block_signals=true);
|
||||
|
||||
// sets the pos dropdown
|
||||
void set_pos_dropdown(QStringList pos_dropdowns);
|
||||
@ -659,6 +659,7 @@ private:
|
||||
|
||||
QComboBox *ui_emote_dropdown;
|
||||
QComboBox *ui_pos_dropdown;
|
||||
AOButton *ui_pos_remove;
|
||||
|
||||
QComboBox *ui_iniswap_dropdown;
|
||||
AOButton *ui_iniswap_remove;
|
||||
@ -836,6 +837,7 @@ private slots:
|
||||
|
||||
void on_emote_dropdown_changed(int p_index);
|
||||
void on_pos_dropdown_changed(int p_index);
|
||||
void on_pos_remove_clicked();
|
||||
|
||||
void on_iniswap_dropdown_changed(int p_index);
|
||||
void set_iniswap_dropdown();
|
||||
|
@ -165,6 +165,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
|
||||
initialize_emotes();
|
||||
|
||||
ui_pos_dropdown = new QComboBox(this);
|
||||
ui_pos_remove = new AOButton(this, ao_app);
|
||||
|
||||
ui_iniswap_dropdown = new QComboBox(this);
|
||||
ui_iniswap_dropdown->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
@ -301,6 +302,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
|
||||
|
||||
connect(ui_pos_dropdown, SIGNAL(currentIndexChanged(int)), this,
|
||||
SLOT(on_pos_dropdown_changed(int)));
|
||||
connect(ui_pos_remove, SIGNAL(clicked()), this, SLOT(on_pos_remove_clicked()));
|
||||
|
||||
connect(ui_iniswap_dropdown, SIGNAL(currentIndexChanged(int)), this,
|
||||
SLOT(on_iniswap_dropdown_changed(int)));
|
||||
@ -726,6 +728,15 @@ void Courtroom::set_widgets()
|
||||
ui_pos_dropdown->setToolTip(
|
||||
tr("Set your character's supplementary background."));
|
||||
|
||||
set_size_and_pos(ui_pos_remove, "pos_remove");
|
||||
ui_pos_remove->setText("X");
|
||||
ui_pos_remove->set_image("evidencex");
|
||||
ui_pos_remove->setToolTip(tr("Reset your character's supplementary background to its default."));
|
||||
if (current_side == "")
|
||||
ui_pos_remove->hide();
|
||||
else
|
||||
ui_pos_remove->show();
|
||||
|
||||
set_size_and_pos(ui_iniswap_dropdown, "iniswap_dropdown");
|
||||
ui_iniswap_dropdown->setEditable(true);
|
||||
ui_iniswap_dropdown->setInsertPolicy(QComboBox::InsertAtBottom);
|
||||
@ -1285,26 +1296,50 @@ void Courtroom::set_background(QString p_background, bool display)
|
||||
}
|
||||
}
|
||||
|
||||
void Courtroom::set_side(QString p_side)
|
||||
void Courtroom::set_side(QString p_side, bool block_signals)
|
||||
{
|
||||
QString f_side;
|
||||
if (p_side == "")
|
||||
current_side = ao_app->get_char_side(current_char);
|
||||
f_side = ao_app->get_char_side(current_char);
|
||||
else
|
||||
current_side = p_side;
|
||||
f_side = p_side;
|
||||
|
||||
if (f_side == "jud") {
|
||||
ui_witness_testimony->show();
|
||||
ui_cross_examination->show();
|
||||
ui_not_guilty->show();
|
||||
ui_guilty->show();
|
||||
ui_defense_minus->show();
|
||||
ui_defense_plus->show();
|
||||
ui_prosecution_minus->show();
|
||||
ui_prosecution_plus->show();
|
||||
}
|
||||
else {
|
||||
ui_witness_testimony->hide();
|
||||
ui_cross_examination->hide();
|
||||
ui_guilty->hide();
|
||||
ui_not_guilty->hide();
|
||||
ui_defense_minus->hide();
|
||||
ui_defense_plus->hide();
|
||||
ui_prosecution_minus->hide();
|
||||
ui_prosecution_plus->hide();
|
||||
}
|
||||
|
||||
for (int i = 0; i < ui_pos_dropdown->count(); ++i) {
|
||||
QString pos = ui_pos_dropdown->itemText(i);
|
||||
if (pos == current_side) {
|
||||
if (pos == f_side) {
|
||||
// Block the signals to prevent setCurrentIndex from triggering a pos
|
||||
// change
|
||||
ui_pos_dropdown->blockSignals(true);
|
||||
if (block_signals)
|
||||
ui_pos_dropdown->blockSignals(true);
|
||||
|
||||
// Set the index on dropdown ui element to let you know what pos you're on
|
||||
// right now
|
||||
ui_pos_dropdown->setCurrentIndex(i);
|
||||
|
||||
// Unblock the signals so the element can be used for setting pos again
|
||||
ui_pos_dropdown->blockSignals(false);
|
||||
if (block_signals)
|
||||
ui_pos_dropdown->blockSignals(false);
|
||||
|
||||
// alright we dun, jobs done here boyos
|
||||
break;
|
||||
@ -1321,6 +1356,7 @@ void Courtroom::set_pos_dropdown(QStringList pos_dropdowns)
|
||||
ui_pos_dropdown->addItems(pos_dropdown_list);
|
||||
// Unblock the signals so the element can be used for setting pos again
|
||||
ui_pos_dropdown->blockSignals(false);
|
||||
set_side(current_side);
|
||||
}
|
||||
|
||||
void Courtroom::update_character(int p_cid)
|
||||
@ -1344,7 +1380,7 @@ void Courtroom::update_character(int p_cid)
|
||||
}
|
||||
|
||||
current_char = f_char;
|
||||
current_side = ao_app->get_char_side(current_char);
|
||||
set_side(current_side);
|
||||
|
||||
set_text_color_dropdown();
|
||||
|
||||
@ -1366,27 +1402,6 @@ void Courtroom::update_character(int p_cid)
|
||||
if (newchar) // Avoid infinite loop of death and suffering
|
||||
set_iniswap_dropdown();
|
||||
|
||||
if (current_side == "jud") {
|
||||
ui_witness_testimony->show();
|
||||
ui_cross_examination->show();
|
||||
ui_not_guilty->show();
|
||||
ui_guilty->show();
|
||||
ui_defense_minus->show();
|
||||
ui_defense_plus->show();
|
||||
ui_prosecution_minus->show();
|
||||
ui_prosecution_plus->show();
|
||||
}
|
||||
else {
|
||||
ui_witness_testimony->hide();
|
||||
ui_cross_examination->hide();
|
||||
ui_guilty->hide();
|
||||
ui_not_guilty->hide();
|
||||
ui_defense_minus->hide();
|
||||
ui_defense_plus->hide();
|
||||
ui_prosecution_minus->hide();
|
||||
ui_prosecution_plus->hide();
|
||||
}
|
||||
|
||||
ui_custom_objection->hide();
|
||||
if (ao_app->custom_objection_enabled) // if setting is enabled
|
||||
{
|
||||
@ -1693,9 +1708,12 @@ void Courtroom::on_chat_return_pressed()
|
||||
// immediate_preanim#%
|
||||
|
||||
QStringList packet_contents;
|
||||
QString f_side;
|
||||
|
||||
if (current_side == "")
|
||||
current_side = ao_app->get_char_side(current_char);
|
||||
f_side = ao_app->get_char_side(current_char);
|
||||
else
|
||||
f_side = current_side;
|
||||
|
||||
QString f_desk_mod = "chat";
|
||||
|
||||
@ -1722,7 +1740,7 @@ void Courtroom::on_chat_return_pressed()
|
||||
|
||||
packet_contents.append(ui_ic_chat_message->text());
|
||||
|
||||
packet_contents.append(current_side);
|
||||
packet_contents.append(f_side);
|
||||
|
||||
packet_contents.append(get_char_sfx());
|
||||
|
||||
@ -4269,12 +4287,36 @@ void Courtroom::on_pos_dropdown_changed(int p_index)
|
||||
|
||||
if (f_pos == "jud")
|
||||
toggle_judge_buttons(true);
|
||||
|
||||
ui_pos_remove->show();
|
||||
|
||||
current_side = f_pos;
|
||||
|
||||
// YEAH SENDING LIKE 20 PACKETS IF THE USER SCROLLS THROUGH, GREAT IDEA
|
||||
// how about this instead
|
||||
set_side(f_pos);
|
||||
}
|
||||
|
||||
void Courtroom::on_pos_remove_clicked()
|
||||
{
|
||||
QString default_side = ao_app->get_char_side(current_char);
|
||||
|
||||
for (int i = 0; i < ui_pos_dropdown->count(); ++i) {
|
||||
QString pos = ui_pos_dropdown->itemText(i);
|
||||
if (pos == default_side) {
|
||||
ui_pos_dropdown->setCurrentIndex(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
int wit_index = ui_pos_dropdown->findText("wit");
|
||||
if ((ui_pos_dropdown->currentText() != default_side) & (wit_index != -1)) //i.e. this bg doesn't have our pos
|
||||
ui_pos_dropdown->setCurrentIndex(wit_index); // fall back to "wit"
|
||||
else if (ui_pos_dropdown->currentText() != default_side) // we don't have "wit" either?
|
||||
ui_pos_dropdown->setCurrentIndex(0); // as a last resort, choose the first item in the dropdown
|
||||
current_side = "";
|
||||
ui_pos_remove->hide();
|
||||
}
|
||||
|
||||
void Courtroom::set_iniswap_dropdown()
|
||||
{
|
||||
ui_iniswap_dropdown->blockSignals(true);
|
||||
|
@ -475,7 +475,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
|
||||
|
||||
if (courtroom_constructed) // We were sent a "set position" packet
|
||||
{
|
||||
w_courtroom->set_side(f_contents.at(0));
|
||||
w_courtroom->set_side(f_contents.at(0), false);
|
||||
append_to_demofile(p_packet->to_string(true));
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user