finished evidence. ready for release.
This commit is contained in:
parent
7c20ad7292
commit
3f926341c8
@ -6,8 +6,17 @@ AOEvidenceButton::AOEvidenceButton(QWidget *p_parent, AOApplication *p_ao_app, i
|
||||
{
|
||||
ao_app = p_ao_app;
|
||||
|
||||
ui_selector = new AOImage(p_parent, ao_app);
|
||||
ui_selector->resize(71, 71);
|
||||
ui_selector->move(p_x - 1, p_y - 1);
|
||||
ui_selector->set_scaled_image("evidence_selector.png");
|
||||
ui_selector->setAttribute(Qt::WA_TransparentForMouseEvents);
|
||||
ui_selector->hide();
|
||||
|
||||
this->move(p_x, p_y);
|
||||
this->resize(70, 70);
|
||||
|
||||
connect(this, SIGNAL(clicked()), this, SLOT(on_clicked()));
|
||||
}
|
||||
|
||||
void AOEvidenceButton::set_image(QString p_image)
|
||||
@ -21,12 +30,39 @@ void AOEvidenceButton::set_image(QString p_image)
|
||||
}
|
||||
else
|
||||
{
|
||||
this->setText("evi");
|
||||
this->setText(p_image);
|
||||
this->setStyleSheet("");
|
||||
}
|
||||
}
|
||||
|
||||
void AOEvidenceButton::set_selected(bool p_selected)
|
||||
{
|
||||
m_selected = p_selected;
|
||||
|
||||
if (!m_selected)
|
||||
ui_selector->hide();
|
||||
}
|
||||
|
||||
void AOEvidenceButton::on_clicked()
|
||||
{
|
||||
evidence_clicked(m_id);
|
||||
}
|
||||
|
||||
void AOEvidenceButton::enterEvent(QEvent * e)
|
||||
{
|
||||
ui_selector->show();
|
||||
|
||||
on_hover(m_id, true);
|
||||
|
||||
setFlat(false);
|
||||
QPushButton::enterEvent(e);
|
||||
}
|
||||
|
||||
void AOEvidenceButton::leaveEvent(QEvent * e)
|
||||
{
|
||||
if (!m_selected)
|
||||
ui_selector->hide();
|
||||
|
||||
on_hover(m_id, false);
|
||||
QPushButton::leaveEvent(e);
|
||||
}
|
||||
|
@ -2,6 +2,7 @@
|
||||
#define AOEVIDENCEBUTTON_H
|
||||
|
||||
#include "aoapplication.h"
|
||||
#include "aoimage.h"
|
||||
|
||||
#include <QPushButton>
|
||||
#include <QString>
|
||||
@ -16,13 +17,24 @@ public:
|
||||
void set_image(QString p_image);
|
||||
void set_id(int p_id) {m_id = p_id;}
|
||||
|
||||
void set_selected(bool p_selected);
|
||||
|
||||
private:
|
||||
AOApplication *ao_app;
|
||||
|
||||
int m_id;
|
||||
AOImage *ui_selector;
|
||||
|
||||
bool m_selected = false;
|
||||
|
||||
int m_id = 0;
|
||||
|
||||
protected:
|
||||
void enterEvent(QEvent *e);
|
||||
void leaveEvent(QEvent *e);
|
||||
|
||||
signals:
|
||||
void evidence_clicked(int p_id);
|
||||
void on_hover(int p_id, bool p_state);
|
||||
|
||||
private slots:
|
||||
void on_clicked();
|
||||
|
@ -63,6 +63,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
|
||||
ui_vp_message->setFrameStyle(QFrame::NoFrame);
|
||||
ui_vp_message->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
||||
ui_vp_message->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
||||
ui_vp_message->setReadOnly(true);
|
||||
ui_vp_testimony = new AOImage(ui_viewport, ao_app);
|
||||
ui_vp_realization = new AOImage(this, ao_app);
|
||||
ui_vp_wtce = new AOMovie(ui_viewport, ao_app);
|
||||
@ -168,7 +169,6 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
|
||||
ui_evidence_button = new AOButton(this, ao_app);
|
||||
|
||||
ui_evidence = new AOImage(this, ao_app);
|
||||
ui_evidence->hide();
|
||||
|
||||
/////////////char select widgets under here///////////////
|
||||
|
||||
@ -289,7 +289,6 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
|
||||
|
||||
set_widgets();
|
||||
|
||||
//in evidence.cpp
|
||||
construct_evidence();
|
||||
|
||||
//implementation in emotes.cpp
|
||||
@ -379,7 +378,6 @@ void Courtroom::set_widgets()
|
||||
"color: white;");
|
||||
|
||||
set_size_and_pos(ui_vp_message, "message");
|
||||
ui_vp_message->setReadOnly(true);
|
||||
#if (defined (_WIN32) || defined (_WIN64))
|
||||
ui_vp_message->setFont(pt_10);
|
||||
#else
|
||||
@ -520,6 +518,7 @@ void Courtroom::set_widgets()
|
||||
|
||||
set_size_and_pos(ui_evidence_button, "evidence_button");
|
||||
//ui_evidence_button->set_image("evidencebutton.png");
|
||||
ui_evidence_button->setText("Evidence");
|
||||
|
||||
set_size_and_pos(ui_evidence, "evidence_background");
|
||||
ui_evidence->set_image("evidencebackground.png");
|
||||
@ -591,6 +590,7 @@ void Courtroom::set_taken(int n_char, bool p_taken)
|
||||
f_char.name = char_list.at(n_char).name;
|
||||
f_char.description = char_list.at(n_char).description;
|
||||
f_char.taken = p_taken;
|
||||
f_char.evidence_string = char_list.at(n_char).evidence_string;
|
||||
|
||||
char_list.replace(n_char, f_char);
|
||||
}
|
||||
@ -691,6 +691,13 @@ void Courtroom::enter_courtroom(int p_cid)
|
||||
|
||||
set_emote_page();
|
||||
|
||||
current_evidence_page = 0;
|
||||
current_evidence = 0;
|
||||
|
||||
qDebug() << "setting evidence page";
|
||||
set_evidence_page();
|
||||
qDebug() << "evidence page set";
|
||||
|
||||
QString side = ao_app->get_char_side(f_char);
|
||||
|
||||
if (side == "jud")
|
||||
@ -1805,6 +1812,7 @@ void Courtroom::on_evidence_button_clicked()
|
||||
if (ui_evidence->isHidden())
|
||||
{
|
||||
ui_evidence->show();
|
||||
ui_evidence_overlay->hide();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
19
courtroom.h
19
courtroom.h
@ -172,6 +172,8 @@ private:
|
||||
int emote_rows = 2;
|
||||
int max_emotes_on_page = 10;
|
||||
|
||||
QVector<evi_type> local_evidence_list;
|
||||
|
||||
int current_evidence_page = 0;
|
||||
int current_evidence = 0;
|
||||
int evidence_columns = 6;
|
||||
@ -273,11 +275,14 @@ private:
|
||||
AOImage *ui_muted;
|
||||
|
||||
AOButton *ui_evidence_button;
|
||||
AOImage *ui_evidence;
|
||||
QLabel *ui_evidence_name;
|
||||
QVector<AOEvidenceButton*> ui_evidence_list;
|
||||
AOImage *ui_evidence_left;
|
||||
AOImage *ui_evidence_right;
|
||||
|
||||
AOImage *ui_evidence;
|
||||
AOImage *ui_evidence_overlay;
|
||||
AOButton *ui_evidence_x;
|
||||
QPlainTextEdit *ui_evidence_description;
|
||||
|
||||
AOImage *ui_char_select_background;
|
||||
|
||||
@ -326,11 +331,17 @@ private slots:
|
||||
void on_music_list_double_clicked(QModelIndex p_model);
|
||||
|
||||
void on_emote_clicked(int p_id);
|
||||
void on_evidence_clicked(int p_id);
|
||||
|
||||
void on_emote_left_clicked();
|
||||
void on_emote_right_clicked();
|
||||
|
||||
void on_evidence_clicked(int p_id);
|
||||
|
||||
void on_evidence_hover(int p_id, bool p_state);
|
||||
|
||||
void on_evidence_left_clicked();
|
||||
void on_evidence_right_clicked();
|
||||
|
||||
void on_hold_it_clicked();
|
||||
void on_objection_clicked();
|
||||
void on_take_that_clicked();
|
||||
@ -366,6 +377,8 @@ private slots:
|
||||
|
||||
void on_evidence_button_clicked();
|
||||
|
||||
void on_evidence_x_clicked();
|
||||
|
||||
void on_back_to_lobby_clicked();
|
||||
|
||||
void on_char_select_left_clicked();
|
||||
|
@ -26,6 +26,7 @@ struct char_type
|
||||
{
|
||||
QString name;
|
||||
QString description;
|
||||
QString evidence_string;
|
||||
bool taken;
|
||||
};
|
||||
|
||||
|
157
evidence.cpp
157
evidence.cpp
@ -15,14 +15,10 @@ void Courtroom::construct_evidence()
|
||||
int y_mod_count{0};
|
||||
|
||||
evidence_columns = ui_evidence->width() / x_modifier;
|
||||
qDebug() << "columns: " << evidence_columns;
|
||||
evidence_rows = ui_evidence->height() / y_modifier;
|
||||
qDebug() << "rows: " << evidence_rows;
|
||||
|
||||
max_evidence_on_page = evidence_columns * evidence_rows;
|
||||
|
||||
qDebug() << "max_evidence_on_page: " << max_evidence_on_page;
|
||||
|
||||
for (int n = 0 ; n < max_evidence_on_page ; ++n)
|
||||
{
|
||||
int x_pos = base_x_pos + (x_modifier * x_mod_count);
|
||||
@ -35,6 +31,7 @@ void Courtroom::construct_evidence()
|
||||
f_evidence->set_id(n);
|
||||
|
||||
connect(f_evidence, SIGNAL(evidence_clicked(int)), this, SLOT(on_evidence_clicked(int)));
|
||||
connect(f_evidence, SIGNAL(on_hover(int, bool)), this, SLOT(on_evidence_hover(int, bool)));
|
||||
|
||||
++x_mod_count;
|
||||
|
||||
@ -44,11 +41,163 @@ void Courtroom::construct_evidence()
|
||||
x_mod_count = 0;
|
||||
}
|
||||
}
|
||||
|
||||
ui_evidence_name = new QLabel(ui_evidence);
|
||||
|
||||
ui_evidence_left = new AOImage(ui_evidence, ao_app);
|
||||
ui_evidence_right = new AOImage(ui_evidence, ao_app);
|
||||
|
||||
ui_evidence_overlay = new AOImage(ui_evidence, ao_app);
|
||||
|
||||
ui_evidence_x = new AOButton(ui_evidence_overlay, ao_app);
|
||||
|
||||
ui_evidence_description = new QPlainTextEdit(ui_evidence_overlay);
|
||||
|
||||
set_size_and_pos(ui_evidence_name, "evidence_name");
|
||||
ui_evidence_name->setAlignment(Qt::AlignCenter);
|
||||
ui_evidence_name->setFont(QFont("Arial", 14, QFont::Bold));
|
||||
ui_evidence_name->setStyleSheet("background-color: rgba(0, 0, 0, 0);"
|
||||
"color: rgba(255, 128, 0, 255);");
|
||||
|
||||
set_size_and_pos(ui_evidence_left, "evidence_left");
|
||||
ui_evidence_left->set_image("arrow_left.png");
|
||||
|
||||
set_size_and_pos(ui_evidence_right, "evidence_right");
|
||||
ui_evidence_right->set_image("arrow_right.png");
|
||||
|
||||
set_size_and_pos(ui_evidence_overlay, "evidence_overlay");
|
||||
ui_evidence_overlay->set_image("evidenceoverlay.png");
|
||||
|
||||
set_size_and_pos(ui_evidence_x, "evidence_x");
|
||||
ui_evidence_x->setText("X");
|
||||
|
||||
set_size_and_pos(ui_evidence_description, "evidence_description");
|
||||
ui_evidence_description->setReadOnly(true);
|
||||
ui_evidence_description->setStyleSheet("background-color: rgba(0, 0, 0, 0);"
|
||||
"color: white;");
|
||||
|
||||
connect(ui_evidence_x, SIGNAL(clicked()), this, SLOT(on_evidence_x_clicked()));
|
||||
|
||||
ui_evidence->hide();
|
||||
}
|
||||
|
||||
void Courtroom::set_evidence_page()
|
||||
{
|
||||
local_evidence_list.clear();
|
||||
|
||||
QString evi_string = char_list.at(m_cid).evidence_string;
|
||||
|
||||
QStringList evi_numbers = evi_string.split(",");
|
||||
|
||||
for (QString i_evi : evi_numbers)
|
||||
{
|
||||
int n_evi = i_evi.toInt() - 1;
|
||||
|
||||
if (n_evi < 0 || n_evi >= evidence_list.size())
|
||||
continue;
|
||||
|
||||
local_evidence_list.append(evidence_list.at(n_evi));
|
||||
}
|
||||
|
||||
int total_evidence = local_evidence_list.size();
|
||||
|
||||
qDebug() << "total_evidence: " << total_evidence;
|
||||
|
||||
ui_evidence_left->hide();
|
||||
ui_evidence_right->hide();
|
||||
|
||||
qDebug() << "hid evidence left and right";
|
||||
|
||||
for (AOEvidenceButton *i_button : ui_evidence_list)
|
||||
{
|
||||
i_button->hide();
|
||||
}
|
||||
|
||||
qDebug() << "hid all evidence buttons";
|
||||
|
||||
if (total_evidence == 0)
|
||||
return;
|
||||
|
||||
qDebug() << "max_evi_on_page =" << max_evidence_on_page;
|
||||
|
||||
int total_pages = total_evidence / max_evidence_on_page;
|
||||
|
||||
qDebug() << "total_pages: " << total_pages;
|
||||
|
||||
int evidence_on_page = 0;
|
||||
|
||||
if (total_evidence % max_evidence_on_page != 0)
|
||||
{
|
||||
++total_pages;
|
||||
evidence_on_page = total_evidence % max_evidence_on_page;
|
||||
|
||||
}
|
||||
else
|
||||
evidence_on_page = max_evidence_on_page;
|
||||
|
||||
qDebug() << "evidence_on_page: " << evidence_on_page;
|
||||
|
||||
if (total_pages > current_evidence_page + 1)
|
||||
ui_evidence_right->show();
|
||||
|
||||
if (current_evidence_page > 0)
|
||||
ui_evidence_left->show();
|
||||
|
||||
for (int n_evidence = 0 ; n_evidence < evidence_on_page ; ++n_evidence)
|
||||
{
|
||||
int n_real_evidence = n_evidence + current_evidence_page * max_evidence_on_page;
|
||||
AOEvidenceButton *f_evidence = ui_evidence_list.at(n_evidence);
|
||||
|
||||
f_evidence->set_image(evidence_list.at(n_real_evidence).image);
|
||||
|
||||
f_evidence->show();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void Courtroom::on_evidence_clicked(int p_id)
|
||||
{
|
||||
ui_evidence_name->setText(local_evidence_list.at(p_id + max_evidence_on_page * current_evidence_page).name);
|
||||
|
||||
for (AOEvidenceButton *i_button : ui_evidence_list)
|
||||
{
|
||||
i_button->set_selected(false);
|
||||
}
|
||||
|
||||
ui_evidence_list.at(p_id)->set_selected(true);
|
||||
|
||||
current_evidence = p_id + max_evidence_on_page * current_evidence_page;
|
||||
|
||||
ui_evidence_description->clear();
|
||||
ui_evidence_description->appendPlainText(local_evidence_list.at(current_evidence).description);
|
||||
|
||||
ui_evidence_overlay->show();
|
||||
}
|
||||
|
||||
void Courtroom::on_evidence_hover(int p_id, bool p_state)
|
||||
{
|
||||
if (p_state)
|
||||
ui_evidence_name->setText(local_evidence_list.at(p_id + max_evidence_on_page * current_evidence_page).name);
|
||||
else
|
||||
ui_evidence_name->setText("");
|
||||
}
|
||||
|
||||
void Courtroom::on_evidence_left_clicked()
|
||||
{
|
||||
--current_evidence_page;
|
||||
|
||||
set_evidence_page();
|
||||
}
|
||||
|
||||
void Courtroom::on_evidence_right_clicked()
|
||||
{
|
||||
++current_evidence_page;
|
||||
|
||||
set_evidence_page();
|
||||
}
|
||||
|
||||
void Courtroom::on_evidence_x_clicked()
|
||||
{
|
||||
ui_evidence_overlay->hide();
|
||||
}
|
||||
|
||||
|
@ -251,6 +251,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
|
||||
char_type f_char;
|
||||
f_char.name = sub_elements.at(0);
|
||||
f_char.description = sub_elements.at(1);
|
||||
f_char.evidence_string = sub_elements.at(3);
|
||||
//temporary. the CharsCheck packet sets this properly
|
||||
f_char.taken = false;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user