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