Positional evidence implemented. Click a button to change between private/global evidence list.
There's also a button to transfer evidence to global/private, context sensitive. TODO: Save/load private evidence list
This commit is contained in:
parent
6f5b3d2462
commit
829604e808
@ -411,6 +411,11 @@ private:
|
|||||||
int max_emotes_on_page = 10;
|
int max_emotes_on_page = 10;
|
||||||
|
|
||||||
QVector<evi_type> local_evidence_list;
|
QVector<evi_type> local_evidence_list;
|
||||||
|
QVector<evi_type> private_evidence_list;
|
||||||
|
QVector<evi_type> global_evidence_list;
|
||||||
|
|
||||||
|
//false = use private_evidence_list
|
||||||
|
bool current_evidence_global = true;
|
||||||
|
|
||||||
int current_evidence_page = 0;
|
int current_evidence_page = 0;
|
||||||
int current_evidence = 0;
|
int current_evidence = 0;
|
||||||
@ -563,6 +568,8 @@ private:
|
|||||||
AOButton *ui_evidence_image_button;
|
AOButton *ui_evidence_image_button;
|
||||||
AOButton *ui_evidence_x;
|
AOButton *ui_evidence_x;
|
||||||
AOButton *ui_evidence_ok;
|
AOButton *ui_evidence_ok;
|
||||||
|
AOButton *ui_evidence_switch;
|
||||||
|
AOButton *ui_evidence_transfer;
|
||||||
AOTextEdit *ui_evidence_description;
|
AOTextEdit *ui_evidence_description;
|
||||||
|
|
||||||
AOImage *ui_char_select_background;
|
AOImage *ui_char_select_background;
|
||||||
@ -733,10 +740,13 @@ private slots:
|
|||||||
void on_evidence_delete_clicked();
|
void on_evidence_delete_clicked();
|
||||||
void on_evidence_x_clicked();
|
void on_evidence_x_clicked();
|
||||||
void on_evidence_ok_clicked();
|
void on_evidence_ok_clicked();
|
||||||
|
void on_evidence_switch_clicked();
|
||||||
|
void on_evidence_transfer_clicked();
|
||||||
|
|
||||||
void on_evidence_edited();
|
void on_evidence_edited();
|
||||||
|
|
||||||
void evidence_close();
|
void evidence_close();
|
||||||
|
void evidence_switch(bool global);
|
||||||
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();
|
||||||
|
207
src/evidence.cpp
207
src/evidence.cpp
@ -16,6 +16,9 @@ void Courtroom::initialize_evidence()
|
|||||||
ui_evidence_present = new AOButton(ui_evidence, ao_app);
|
ui_evidence_present = new AOButton(ui_evidence, ao_app);
|
||||||
ui_evidence_present->setToolTip(tr("Present this piece of evidence to everyone on your next spoken message"));
|
ui_evidence_present->setToolTip(tr("Present this piece of evidence to everyone on your next spoken message"));
|
||||||
|
|
||||||
|
ui_evidence_switch = new AOButton(ui_evidence, ao_app);
|
||||||
|
ui_evidence_transfer = new AOButton(ui_evidence, ao_app);
|
||||||
|
|
||||||
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);
|
||||||
@ -40,6 +43,9 @@ void Courtroom::initialize_evidence()
|
|||||||
connect(ui_evidence_left, SIGNAL(clicked()), this, SLOT(on_evidence_left_clicked()));
|
connect(ui_evidence_left, SIGNAL(clicked()), this, SLOT(on_evidence_left_clicked()));
|
||||||
connect(ui_evidence_right, SIGNAL(clicked()), this, SLOT(on_evidence_right_clicked()));
|
connect(ui_evidence_right, SIGNAL(clicked()), this, SLOT(on_evidence_right_clicked()));
|
||||||
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_transfer, SIGNAL(clicked()), this, SLOT(on_evidence_transfer_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()));
|
||||||
connect(ui_evidence_image_name, SIGNAL(double_clicked()), this, SLOT(on_evidence_image_name_double_clicked()));
|
connect(ui_evidence_image_name, SIGNAL(double_clicked()), this, SLOT(on_evidence_image_name_double_clicked()));
|
||||||
@ -65,11 +71,14 @@ void Courtroom::refresh_evidence()
|
|||||||
ui_evidence_list.clear();
|
ui_evidence_list.clear();
|
||||||
|
|
||||||
set_size_and_pos(ui_evidence_button, "evidence_button");
|
set_size_and_pos(ui_evidence_button, "evidence_button");
|
||||||
ui_evidence_button->set_image("evidencebutton");
|
ui_evidence_button->set_image("evidence_button");
|
||||||
ui_evidence_button->setToolTip(tr("Bring up the Evidence screen."));
|
ui_evidence_button->setToolTip(tr("Bring up the Evidence screen."));
|
||||||
|
|
||||||
set_size_and_pos(ui_evidence, "evidence_background");
|
set_size_and_pos(ui_evidence, "evidence_background");
|
||||||
ui_evidence->set_image("evidencebackground");
|
if (current_evidence_global)
|
||||||
|
ui_evidence->set_image("evidence_background");
|
||||||
|
else
|
||||||
|
ui_evidence->set_image("evidence_background_private");
|
||||||
|
|
||||||
set_size_and_pos(ui_evidence_name, "evidence_name");
|
set_size_and_pos(ui_evidence_name, "evidence_name");
|
||||||
|
|
||||||
@ -85,20 +94,47 @@ void Courtroom::refresh_evidence()
|
|||||||
ui_evidence_present->set_image("present");
|
ui_evidence_present->set_image("present");
|
||||||
|
|
||||||
set_size_and_pos(ui_evidence_overlay, "evidence_overlay");
|
set_size_and_pos(ui_evidence_overlay, "evidence_overlay");
|
||||||
ui_evidence_overlay->set_image("evidenceoverlay");
|
if (current_evidence_global)
|
||||||
|
ui_evidence_overlay->set_image("evidence_overlay");
|
||||||
|
else
|
||||||
|
ui_evidence_overlay->set_image("evidence_overlay_private");
|
||||||
|
|
||||||
set_size_and_pos(ui_evidence_delete, "evidence_delete");
|
set_size_and_pos(ui_evidence_delete, "evidence_delete");
|
||||||
ui_evidence_delete->set_image("deleteevidence");
|
ui_evidence_delete->set_image("evidence_delete");
|
||||||
|
|
||||||
set_size_and_pos(ui_evidence_image_name, "evidence_image_name");
|
set_size_and_pos(ui_evidence_image_name, "evidence_image_name");
|
||||||
|
|
||||||
set_size_and_pos(ui_evidence_image_button, "evidence_image_button");
|
set_size_and_pos(ui_evidence_image_button, "evidence_image_button");
|
||||||
|
|
||||||
set_size_and_pos(ui_evidence_x, "evidence_x");
|
set_size_and_pos(ui_evidence_x, "evidence_x");
|
||||||
ui_evidence_x->set_image("evidencex");
|
ui_evidence_x->set_image("evidence_x");
|
||||||
|
|
||||||
set_size_and_pos(ui_evidence_ok, "evidence_ok");
|
set_size_and_pos(ui_evidence_ok, "evidence_ok");
|
||||||
ui_evidence_ok->set_image("evidenceok");
|
ui_evidence_ok->set_image("evidence_ok");
|
||||||
|
|
||||||
|
set_size_and_pos(ui_evidence_switch, "evidence_switch");
|
||||||
|
if (current_evidence_global)
|
||||||
|
{
|
||||||
|
ui_evidence_switch->set_image("evidence_global");
|
||||||
|
ui_evidence_switch->setToolTip(tr("Switch evidence to private inventory."));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ui_evidence_switch->set_image("evidence_private");
|
||||||
|
ui_evidence_switch->setToolTip(tr("Switch evidence to global inventory."));
|
||||||
|
}
|
||||||
|
|
||||||
|
set_size_and_pos(ui_evidence_transfer, "evidence_transfer");
|
||||||
|
if (current_evidence_global)
|
||||||
|
{
|
||||||
|
ui_evidence_transfer->set_image("evidence_transfer");
|
||||||
|
ui_evidence_transfer->setToolTip(tr("Transfer evidence to private inventory."));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ui_evidence_transfer->set_image("evidence_transfer_private");
|
||||||
|
ui_evidence_transfer->setToolTip(tr("Transfer evidence to global inventory."));
|
||||||
|
}
|
||||||
|
|
||||||
set_size_and_pos(ui_evidence_description, "evidence_description");
|
set_size_and_pos(ui_evidence_description, "evidence_description");
|
||||||
|
|
||||||
@ -145,6 +181,10 @@ void Courtroom::refresh_evidence()
|
|||||||
|
|
||||||
void Courtroom::set_evidence_list(QVector<evi_type> &p_evi_list)
|
void Courtroom::set_evidence_list(QVector<evi_type> &p_evi_list)
|
||||||
{
|
{
|
||||||
|
global_evidence_list = p_evi_list;
|
||||||
|
if (!current_evidence_global)
|
||||||
|
return; //We're on private evidence editing, wait for user to do their thing
|
||||||
|
|
||||||
QVector<evi_type> old_list = local_evidence_list;
|
QVector<evi_type> old_list = local_evidence_list;
|
||||||
local_evidence_list.clear();
|
local_evidence_list.clear();
|
||||||
local_evidence_list = p_evi_list;
|
local_evidence_list = p_evi_list;
|
||||||
@ -171,7 +211,7 @@ void Courtroom::set_evidence_list(QVector<evi_type> &p_evi_list)
|
|||||||
msgBox->setInformativeText("Do you wish to keep your changes?");
|
msgBox->setInformativeText("Do you wish to keep your changes?");
|
||||||
msgBox->setDetailedText("Name: " + local_evidence_list.at(current_evidence).name + "\nImage: " + local_evidence_list.at(current_evidence).image + "\nDescription:\n" + local_evidence_list.at(current_evidence).description);
|
msgBox->setDetailedText("Name: " + local_evidence_list.at(current_evidence).name + "\nImage: " + local_evidence_list.at(current_evidence).image + "\nDescription:\n" + local_evidence_list.at(current_evidence).description);
|
||||||
msgBox->setStandardButtons(QMessageBox::Yes | QMessageBox::No);
|
msgBox->setStandardButtons(QMessageBox::Yes | QMessageBox::No);
|
||||||
msgBox->setDefaultButton(QMessageBox::No);
|
msgBox->setDefaultButton(QMessageBox::LastButton);
|
||||||
//msgBox->setWindowModality(Qt::NonModal);
|
//msgBox->setWindowModality(Qt::NonModal);
|
||||||
int ret = msgBox->exec();
|
int ret = msgBox->exec();
|
||||||
switch (ret) {
|
switch (ret) {
|
||||||
@ -259,18 +299,6 @@ void Courtroom::on_evidence_name_edited()
|
|||||||
ui_evidence_name->setReadOnly(true);
|
ui_evidence_name->setReadOnly(true);
|
||||||
if (current_evidence >= local_evidence_list.size())
|
if (current_evidence >= local_evidence_list.size())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Prefer pressing [X] to update the evidence.
|
|
||||||
// QStringList f_contents;
|
|
||||||
|
|
||||||
// evi_type f_evi = local_evidence_list.at(current_evidence);
|
|
||||||
|
|
||||||
// f_contents.append(QString::number(current_evidence));
|
|
||||||
// f_contents.append(ui_evidence_name->text());
|
|
||||||
// f_contents.append(f_evi.description);
|
|
||||||
// f_contents.append(f_evi.image);
|
|
||||||
|
|
||||||
// ao_app->send_server_packet(new AOPacket("EE", f_contents));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Courtroom::on_evidence_name_double_clicked()
|
void Courtroom::on_evidence_name_double_clicked()
|
||||||
@ -295,17 +323,6 @@ void Courtroom::on_evidence_image_name_edited()
|
|||||||
ui_evidence_image_name->setReadOnly(true);
|
ui_evidence_image_name->setReadOnly(true);
|
||||||
if (current_evidence >= local_evidence_list.size())
|
if (current_evidence >= local_evidence_list.size())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// QStringList f_contents;
|
|
||||||
|
|
||||||
// evi_type f_evi = local_evidence_list.at(current_evidence);
|
|
||||||
|
|
||||||
// f_contents.append(QString::number(current_evidence));
|
|
||||||
// f_contents.append(f_evi.name);
|
|
||||||
// f_contents.append(f_evi.description);
|
|
||||||
// f_contents.append(ui_evidence_image_name->text());
|
|
||||||
|
|
||||||
// ao_app->send_server_packet(new AOPacket("EE", f_contents));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Courtroom::on_evidence_image_button_clicked()
|
void Courtroom::on_evidence_image_button_clicked()
|
||||||
@ -339,7 +356,19 @@ void Courtroom::on_evidence_clicked(int p_id)
|
|||||||
|
|
||||||
if (f_real_id == local_evidence_list.size())
|
if (f_real_id == local_evidence_list.size())
|
||||||
{
|
{
|
||||||
ao_app->send_server_packet(new AOPacket("PE#<name>#<description>#empty.png#%"));
|
if (current_evidence_global)
|
||||||
|
ao_app->send_server_packet(new AOPacket("PE#<name>#<description>#empty.png#%"));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
evi_type f_evi;
|
||||||
|
f_evi.name = "<name>";
|
||||||
|
f_evi.description = "<description>";
|
||||||
|
f_evi.image = "empty.png";
|
||||||
|
|
||||||
|
local_evidence_list.append(f_evi);
|
||||||
|
private_evidence_list = local_evidence_list;
|
||||||
|
set_evidence_page();
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (f_real_id > local_evidence_list.size())
|
else if (f_real_id > local_evidence_list.size())
|
||||||
@ -425,6 +454,12 @@ void Courtroom::on_evidence_right_clicked()
|
|||||||
|
|
||||||
void Courtroom::on_evidence_present_clicked()
|
void Courtroom::on_evidence_present_clicked()
|
||||||
{
|
{
|
||||||
|
if (!current_evidence_global)
|
||||||
|
{
|
||||||
|
ui_evidence_present->hide();
|
||||||
|
is_presenting_evidence = false;
|
||||||
|
return; //otherwise we get force-disconnected
|
||||||
|
}
|
||||||
if (is_presenting_evidence)
|
if (is_presenting_evidence)
|
||||||
ui_evidence_present->set_image("present");
|
ui_evidence_present->set_image("present");
|
||||||
else
|
else
|
||||||
@ -438,7 +473,14 @@ void Courtroom::on_evidence_present_clicked()
|
|||||||
void Courtroom::on_evidence_delete_clicked()
|
void Courtroom::on_evidence_delete_clicked()
|
||||||
{
|
{
|
||||||
evidence_close();
|
evidence_close();
|
||||||
ao_app->send_server_packet(new AOPacket("DE#" + QString::number(current_evidence) + "#%"));
|
if (current_evidence_global)
|
||||||
|
ao_app->send_server_packet(new AOPacket("DE#" + QString::number(current_evidence) + "#%"));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
local_evidence_list.remove(current_evidence);
|
||||||
|
private_evidence_list = local_evidence_list;
|
||||||
|
set_evidence_page();
|
||||||
|
}
|
||||||
|
|
||||||
current_evidence = 0;
|
current_evidence = 0;
|
||||||
|
|
||||||
@ -488,24 +530,82 @@ void Courtroom::on_evidence_ok_clicked()
|
|||||||
ui_evidence_description->setReadOnly(true);
|
ui_evidence_description->setReadOnly(true);
|
||||||
ui_evidence_image_name->setReadOnly(true);
|
ui_evidence_image_name->setReadOnly(true);
|
||||||
if (current_evidence < local_evidence_list.size())
|
if (current_evidence < local_evidence_list.size())
|
||||||
|
{
|
||||||
|
evi_type f_evi = local_evidence_list.at(current_evidence);
|
||||||
|
if (current_evidence_global)
|
||||||
|
{
|
||||||
|
QStringList f_contents;
|
||||||
|
f_contents.append(QString::number(current_evidence));
|
||||||
|
f_contents.append(ui_evidence_name->text());
|
||||||
|
f_contents.append(ui_evidence_description->toPlainText());
|
||||||
|
f_contents.append(ui_evidence_image_name->text());
|
||||||
|
|
||||||
|
ao_app->send_server_packet(new AOPacket("EE", f_contents));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
f_evi.name = ui_evidence_name->text();
|
||||||
|
f_evi.description = ui_evidence_description->toPlainText();
|
||||||
|
f_evi.image = ui_evidence_image_name->text();
|
||||||
|
local_evidence_list.replace(current_evidence, f_evi);
|
||||||
|
private_evidence_list = local_evidence_list;
|
||||||
|
ui_evidence_ok->hide();
|
||||||
|
set_evidence_page();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Courtroom::on_evidence_switch_clicked()
|
||||||
|
{
|
||||||
|
evidence_close();
|
||||||
|
evidence_switch(!current_evidence_global);
|
||||||
|
if (current_evidence_global)
|
||||||
|
{
|
||||||
|
ui_evidence_switch->set_image("evidence_global");
|
||||||
|
ui_evidence->set_image("evidence_background");
|
||||||
|
ui_evidence_overlay->set_image("evidence_overlay");
|
||||||
|
ui_evidence_transfer->set_image("evidence_transfer");
|
||||||
|
ui_evidence_transfer->setToolTip(tr("Transfer evidence to private inventory."));
|
||||||
|
ui_evidence_switch->setToolTip(tr("Current evidence is global. Click to switch to private."));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ui_evidence_switch->set_image("evidence_private");
|
||||||
|
ui_evidence->set_image("evidence_background_private");
|
||||||
|
ui_evidence_overlay->set_image("evidence_overlay_private");
|
||||||
|
ui_evidence_transfer->set_image("evidence_transfer_private");
|
||||||
|
ui_evidence_transfer->setToolTip(tr("Transfer evidence to global inventory."));
|
||||||
|
ui_evidence_switch->setToolTip(tr("Current evidence is private. Click to switch to global."));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Courtroom::on_evidence_transfer_clicked()
|
||||||
|
{
|
||||||
|
if (current_evidence >= local_evidence_list.size())
|
||||||
|
return;
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
||||||
QStringList f_contents;
|
QStringList f_contents;
|
||||||
f_contents.append(QString::number(current_evidence));
|
f_contents.append(f_evi.name);
|
||||||
f_contents.append(ui_evidence_name->text());
|
f_contents.append(f_evi.description);
|
||||||
f_contents.append(ui_evidence_description->toPlainText());
|
f_contents.append(f_evi.image);
|
||||||
f_contents.append(ui_evidence_image_name->text());
|
|
||||||
|
|
||||||
ao_app->send_server_packet(new AOPacket("EE", f_contents));
|
ao_app->send_server_packet(new AOPacket("PE", f_contents));
|
||||||
|
|
||||||
// QMessageBox *msgBox = new QMessageBox;
|
|
||||||
|
|
||||||
// msgBox->setText("You succesfully saved your changes.");
|
|
||||||
// msgBox->setStandardButtons(QMessageBox::Ok);
|
|
||||||
// msgBox->setDefaultButton(QMessageBox::Ok);
|
|
||||||
// msgBox->exec();
|
|
||||||
}
|
}
|
||||||
|
else //Transfer global evidence to private
|
||||||
|
{
|
||||||
|
evi_type f_evi = local_evidence_list.at(current_evidence);
|
||||||
|
private_evidence_list.append(f_evi);
|
||||||
|
}
|
||||||
|
|
||||||
|
QMessageBox *msgBox = new QMessageBox;
|
||||||
|
msgBox->setText("Evidence has been transferred.");
|
||||||
|
msgBox->setStandardButtons(QMessageBox::Ok);
|
||||||
|
msgBox->setDefaultButton(QMessageBox::Ok);
|
||||||
|
msgBox->exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Courtroom::on_evidence_edited()
|
void Courtroom::on_evidence_edited()
|
||||||
@ -534,6 +634,25 @@ void Courtroom::evidence_close()
|
|||||||
ui_ic_chat_message->setFocus();
|
ui_ic_chat_message->setFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Courtroom::evidence_switch(bool global)
|
||||||
|
{
|
||||||
|
current_evidence_global = global;
|
||||||
|
is_presenting_evidence = false;
|
||||||
|
ui_evidence_present->set_image("present");
|
||||||
|
local_evidence_list.clear();
|
||||||
|
if (current_evidence_global)
|
||||||
|
{
|
||||||
|
local_evidence_list = global_evidence_list;
|
||||||
|
ui_evidence_present->show();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
local_evidence_list = private_evidence_list;
|
||||||
|
ui_evidence_present->hide();
|
||||||
|
}
|
||||||
|
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;
|
||||||
|
Loading…
Reference in New Issue
Block a user