Remove /rainbow as clientside slash commands are cursed. I shall purge all clientside slash command memery soon...

Fix /save_case iterating from last to first instead of first to last
Implement private evidence saving/loading to and from an .ini file
This commit is contained in:
Crystalwarrior 2019-10-03 17:01:41 +03:00
parent 829604e808
commit bdef10ace5
3 changed files with 88 additions and 10 deletions

View File

@ -570,6 +570,8 @@ private:
AOButton *ui_evidence_ok; AOButton *ui_evidence_ok;
AOButton *ui_evidence_switch; AOButton *ui_evidence_switch;
AOButton *ui_evidence_transfer; AOButton *ui_evidence_transfer;
AOButton *ui_evidence_save;
AOButton *ui_evidence_load;
AOTextEdit *ui_evidence_description; AOTextEdit *ui_evidence_description;
AOImage *ui_char_select_background; AOImage *ui_char_select_background;
@ -747,6 +749,8 @@ private slots:
void evidence_close(); void evidence_close();
void evidence_switch(bool global); void evidence_switch(bool global);
void on_evidence_save_clicked();
void on_evidence_load_clicked();
bool compare_evidence_changed(evi_type evi_a, evi_type evi_b); bool compare_evidence_changed(evi_type evi_a, evi_type evi_b);
void on_back_to_lobby_clicked(); void on_back_to_lobby_clicked();

View File

@ -2993,14 +2993,6 @@ void Courtroom::on_ooc_return_pressed()
toggle_judge_buttons(false); toggle_judge_buttons(false);
} }
} }
else if (ooc_message.startsWith("/rainbow") && ao_app->yellow_text_enabled && !rainbow_appended)
{
//ui_text_color->addItem("Rainbow");
ui_ooc_chat_message->clear();
//rainbow_appended = true;
append_server_chatmessage("CLIENT", tr("This does nothing, but there you go."), "1");
return;
}
else if (ooc_message.startsWith("/settings")) else if (ooc_message.startsWith("/settings"))
{ {
ui_ooc_chat_message->clear(); ui_ooc_chat_message->clear();
@ -3221,7 +3213,7 @@ void Courtroom::on_ooc_return_pressed()
casefile.setValue("doc", ""); casefile.setValue("doc", "");
casefile.setValue("status",command[2]); casefile.setValue("status",command[2]);
casefile.sync(); casefile.sync();
for(int i = local_evidence_list.size() - 1; i >= 0; i--) for(int i = 0; i < local_evidence_list.size(); i++)
{ {
QString clean_evidence_dsc = local_evidence_list[i].description.replace(QRegularExpression("<owner = ...>..."), ""); QString clean_evidence_dsc = local_evidence_list[i].description.replace(QRegularExpression("<owner = ...>..."), "");
clean_evidence_dsc = clean_evidence_dsc.replace(clean_evidence_dsc.lastIndexOf(">"), 1, ""); clean_evidence_dsc = clean_evidence_dsc.replace(clean_evidence_dsc.lastIndexOf(">"), 1, "");

View File

@ -19,6 +19,11 @@ void Courtroom::initialize_evidence()
ui_evidence_switch = new AOButton(ui_evidence, ao_app); ui_evidence_switch = new AOButton(ui_evidence, ao_app);
ui_evidence_transfer = new AOButton(ui_evidence, ao_app); ui_evidence_transfer = new AOButton(ui_evidence, ao_app);
ui_evidence_save = new AOButton(ui_evidence, ao_app);
ui_evidence_save->setToolTip(tr("Save evidence to an .ini file."));
ui_evidence_load = new AOButton(ui_evidence, ao_app);
ui_evidence_save->setToolTip(tr("Load evidence from an .ini file."));
ui_evidence_overlay = new AOImage(ui_evidence, ao_app); ui_evidence_overlay = new AOImage(ui_evidence, ao_app);
ui_evidence_delete = new AOButton(ui_evidence_overlay, ao_app); ui_evidence_delete = new AOButton(ui_evidence_overlay, ao_app);
@ -45,6 +50,8 @@ void Courtroom::initialize_evidence()
connect(ui_evidence_present, SIGNAL(clicked()), this, SLOT(on_evidence_present_clicked())); connect(ui_evidence_present, SIGNAL(clicked()), this, SLOT(on_evidence_present_clicked()));
connect(ui_evidence_switch, SIGNAL(clicked()), this, SLOT(on_evidence_switch_clicked())); connect(ui_evidence_switch, SIGNAL(clicked()), this, SLOT(on_evidence_switch_clicked()));
connect(ui_evidence_transfer, SIGNAL(clicked()), this, SLOT(on_evidence_transfer_clicked())); connect(ui_evidence_transfer, SIGNAL(clicked()), this, SLOT(on_evidence_transfer_clicked()));
connect(ui_evidence_save, SIGNAL(clicked()), this, SLOT(on_evidence_save_clicked()));
connect(ui_evidence_load, SIGNAL(clicked()), this, SLOT(on_evidence_load_clicked()));
connect(ui_evidence_delete, SIGNAL(clicked()), this, SLOT(on_evidence_delete_clicked())); connect(ui_evidence_delete, SIGNAL(clicked()), this, SLOT(on_evidence_delete_clicked()));
connect(ui_evidence_image_name, SIGNAL(returnPressed()), this, SLOT(on_evidence_image_name_edited())); connect(ui_evidence_image_name, SIGNAL(returnPressed()), this, SLOT(on_evidence_image_name_edited()));
@ -136,6 +143,20 @@ void Courtroom::refresh_evidence()
ui_evidence_transfer->setToolTip(tr("Transfer evidence to global inventory.")); ui_evidence_transfer->setToolTip(tr("Transfer evidence to global inventory."));
} }
set_size_and_pos(ui_evidence_save, "evidence_save");
ui_evidence_save->set_image("evidence_save");
if (current_evidence_global)
ui_evidence_save->hide();
else
ui_evidence_save->show();
set_size_and_pos(ui_evidence_load, "evidence_load");
ui_evidence_load->set_image("evidence_load");
if (current_evidence_global)
ui_evidence_load->hide();
else
ui_evidence_load->show();
set_size_and_pos(ui_evidence_description, "evidence_description"); set_size_and_pos(ui_evidence_description, "evidence_description");
QPoint f_spacing = ao_app->get_button_spacing("evidence_button_spacing", "courtroom_design.ini"); QPoint f_spacing = ao_app->get_button_spacing("evidence_button_spacing", "courtroom_design.ini");
@ -584,6 +605,7 @@ void Courtroom::on_evidence_transfer_clicked()
if (current_evidence >= local_evidence_list.size()) if (current_evidence >= local_evidence_list.size())
return; return;
QString name;
if (!current_evidence_global) //Transfer private evidence to global if (!current_evidence_global) //Transfer private evidence to global
{ {
evi_type f_evi = local_evidence_list.at(current_evidence); evi_type f_evi = local_evidence_list.at(current_evidence);
@ -593,16 +615,18 @@ void Courtroom::on_evidence_transfer_clicked()
f_contents.append(f_evi.description); f_contents.append(f_evi.description);
f_contents.append(f_evi.image); f_contents.append(f_evi.image);
name = f_evi.name;
ao_app->send_server_packet(new AOPacket("PE", f_contents)); ao_app->send_server_packet(new AOPacket("PE", f_contents));
} }
else //Transfer global evidence to private else //Transfer global evidence to private
{ {
evi_type f_evi = local_evidence_list.at(current_evidence); evi_type f_evi = local_evidence_list.at(current_evidence);
name = f_evi.name;
private_evidence_list.append(f_evi); private_evidence_list.append(f_evi);
} }
QMessageBox *msgBox = new QMessageBox; QMessageBox *msgBox = new QMessageBox;
msgBox->setText("Evidence has been transferred."); msgBox->setText("\"" + name + "\" has been transferred.");
msgBox->setStandardButtons(QMessageBox::Ok); msgBox->setStandardButtons(QMessageBox::Ok);
msgBox->setDefaultButton(QMessageBox::Ok); msgBox->setDefaultButton(QMessageBox::Ok);
msgBox->exec(); msgBox->exec();
@ -644,15 +668,73 @@ void Courtroom::evidence_switch(bool global)
{ {
local_evidence_list = global_evidence_list; local_evidence_list = global_evidence_list;
ui_evidence_present->show(); ui_evidence_present->show();
ui_evidence_save->hide();
ui_evidence_load->hide();
} }
else else
{ {
local_evidence_list = private_evidence_list; local_evidence_list = private_evidence_list;
ui_evidence_present->hide(); ui_evidence_present->hide();
ui_evidence_save->show();
ui_evidence_load->show();
} }
set_evidence_page(); set_evidence_page();
} }
void Courtroom::on_evidence_save_clicked()
{
if (current_evidence_global)
return; //Don't allow saving/loading operations when in global inventory mode for now
QString p_path = QFileDialog::getSaveFileName(this, tr("Save Inventory"), "base/inventories/", tr("Ini Files (*.ini)"));
if (p_path.isEmpty())
return;
evidence_close();
ui_evidence_name->setText("");
QSettings inventory(p_path, QSettings::IniFormat);
inventory.clear();
for(int i = 0; i < local_evidence_list.size(); i++)
{
inventory.beginGroup(QString::number(i));
inventory.setValue("name",local_evidence_list[i].name);
inventory.setValue("description",local_evidence_list[i].description);
inventory.setValue("image",local_evidence_list[i].image);
inventory.endGroup();
}
inventory.sync();
}
void Courtroom::on_evidence_load_clicked()
{
if (current_evidence_global)
return; //Don't allow saving/loading operations when in global inventory mode for now
QString p_path = QFileDialog::getOpenFileName(this, tr("Open Inventory"), "base/inventories/", tr("Ini Files (*.ini)"));
if (p_path.isEmpty())
return;
evidence_close();
ui_evidence_name->setText("");
QSettings inventory(p_path, QSettings::IniFormat);
local_evidence_list.clear();
foreach (QString evi, inventory.childGroups())
{
if (evi == "General")
continue;
evi_type f_evi;
f_evi.name = inventory.value(evi + "/name", "UNKNOWN").value<QString>();
f_evi.description = inventory.value(evi + "/description", "UNKNOWN").value<QString>();
f_evi.image = inventory.value(evi + "/image", "UNKNOWN.png").value<QString>();
local_evidence_list.append(f_evi);
}
private_evidence_list = local_evidence_list;
set_evidence_page();
}
bool Courtroom::compare_evidence_changed(evi_type evi_a, evi_type evi_b) bool Courtroom::compare_evidence_changed(evi_type evi_a, evi_type evi_b)
{ {
return evi_a.name != evi_b.name || evi_a.image != evi_b.image || evi_a.description != evi_b.description; return evi_a.name != evi_b.name || evi_a.image != evi_b.image || evi_a.description != evi_b.description;