added viewport functionality
This commit is contained in:
		
							parent
							
								
									de7d25962f
								
							
						
					
					
						commit
						6a4657ceb9
					
				@ -93,6 +93,9 @@ public:
 | 
				
			|||||||
  pos_size_type get_pos_and_size(QString p_identifier, QString p_design_path);
 | 
					  pos_size_type get_pos_and_size(QString p_identifier, QString p_design_path);
 | 
				
			||||||
  QString get_char_side(QString p_char);
 | 
					  QString get_char_side(QString p_char);
 | 
				
			||||||
  QString get_showname(QString p_char);
 | 
					  QString get_showname(QString p_char);
 | 
				
			||||||
 | 
					  QString get_chat(QString p_char);
 | 
				
			||||||
 | 
					  int get_preanim_duration(QString p_char, QString p_emote);
 | 
				
			||||||
 | 
					  int get_text_delay(QString p_char, QString p_emote);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
  const int RELEASE = 2;
 | 
					  const int RELEASE = 2;
 | 
				
			||||||
 | 
				
			|||||||
@ -4,29 +4,27 @@
 | 
				
			|||||||
#include "file_functions.h"
 | 
					#include "file_functions.h"
 | 
				
			||||||
#include "aoapplication.h"
 | 
					#include "aoapplication.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <QDebug>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
AOCharMovie::AOCharMovie(QWidget *p_parent, AOApplication *p_ao_app) : QLabel(p_parent)
 | 
					AOCharMovie::AOCharMovie(QWidget *p_parent, AOApplication *p_ao_app) : QLabel(p_parent)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  ao_app = p_ao_app;
 | 
					  ao_app = p_ao_app;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  m_movie = new QMovie(this);
 | 
					  m_movie = new QMovie(this);
 | 
				
			||||||
 | 
					  preanim_timer = new QTimer(this);
 | 
				
			||||||
 | 
					  preanim_timer->setSingleShot(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  this->setMovie(m_movie);
 | 
					  this->setMovie(m_movie);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  connect(m_movie, SIGNAL(frameChanged(int)), this, SLOT(frame_change(int)));
 | 
					  connect(m_movie, SIGNAL(frameChanged(int)), this, SLOT(frame_change(int)));
 | 
				
			||||||
 | 
					  connect(preanim_timer, SIGNAL(timeout()), this, SLOT(preanim_done()));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void AOCharMovie::set(QString p_char, QString p_pre, QString p_gif)
 | 
					void AOCharMovie::play_pre(QString p_char, QString p_emote, int duration)
 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  m_char = p_char;
 | 
					 | 
				
			||||||
  m_pre = p_pre;
 | 
					 | 
				
			||||||
  m_gif = p_gif;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void AOCharMovie::play_pre()
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  m_movie->stop();
 | 
					  m_movie->stop();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  QString pre_path = ao_app->get_character_path(m_char) + m_pre.toLower() + ".gif";
 | 
					  QString pre_path = ao_app->get_character_path(p_char) + p_emote.toLower() + ".gif";
 | 
				
			||||||
  QString placeholder_path = ao_app->get_theme_path() + "placeholder.gif";
 | 
					  QString placeholder_path = ao_app->get_theme_path() + "placeholder.gif";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (file_exists(pre_path))
 | 
					  if (file_exists(pre_path))
 | 
				
			||||||
@ -36,13 +34,14 @@ void AOCharMovie::play_pre()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  this->show();
 | 
					  this->show();
 | 
				
			||||||
  m_movie->start();
 | 
					  m_movie->start();
 | 
				
			||||||
 | 
					  preanim_timer->start(duration);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void AOCharMovie::play_talking()
 | 
					void AOCharMovie::play_talking(QString p_char, QString p_emote)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  m_movie->stop();
 | 
					  m_movie->stop();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  QString talking_path = ao_app->get_character_path(m_char) + "(b)" + m_gif.toLower() + ".gif";
 | 
					  QString talking_path = ao_app->get_character_path(p_char) + "(b)" + p_emote.toLower() + ".gif";
 | 
				
			||||||
  QString placeholder_path = ao_app->get_theme_path() + "placeholder.gif";
 | 
					  QString placeholder_path = ao_app->get_theme_path() + "placeholder.gif";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (file_exists(talking_path))
 | 
					  if (file_exists(talking_path))
 | 
				
			||||||
@ -54,11 +53,11 @@ void AOCharMovie::play_talking()
 | 
				
			|||||||
  m_movie->start();
 | 
					  m_movie->start();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void AOCharMovie::play_idle()
 | 
					void AOCharMovie::play_idle(QString p_char, QString p_emote)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  m_movie->stop();
 | 
					  m_movie->stop();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  QString idle_path = ao_app->get_character_path(m_char) + "(a)" + m_gif.toLower() + ".gif";
 | 
					  QString idle_path = ao_app->get_character_path(p_char) + "(a)" + p_emote.toLower() + ".gif";
 | 
				
			||||||
  QString placeholder_path = ao_app->get_theme_path() + "placeholder.gif";
 | 
					  QString placeholder_path = ao_app->get_theme_path() + "placeholder.gif";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (file_exists(idle_path))
 | 
					  if (file_exists(idle_path))
 | 
				
			||||||
@ -86,12 +85,11 @@ void AOCharMovie::combo_resize(int w, int h)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void AOCharMovie::frame_change(int n_frame)
 | 
					void AOCharMovie::frame_change(int n_frame)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if (n_frame == (m_movie->frameCount() - 1) && play_once)
 | 
					  //we'll need this later
 | 
				
			||||||
  {
 | 
					  ++n_frame;
 | 
				
			||||||
    //we need this or else the last frame wont show
 | 
					}
 | 
				
			||||||
    delay(m_movie->nextFrameDelay());
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    //signal connected to courtroom object, let it figure out what to do
 | 
					void AOCharMovie::preanim_done()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
  done();
 | 
					  done();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
				
			|||||||
@ -14,11 +14,9 @@ class AOCharMovie : public QLabel
 | 
				
			|||||||
public:
 | 
					public:
 | 
				
			||||||
  AOCharMovie(QWidget *p_parent, AOApplication *p_ao_app);
 | 
					  AOCharMovie(QWidget *p_parent, AOApplication *p_ao_app);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void set(QString p_char, QString p_pre, QString p_gif);
 | 
					  void play_pre(QString p_char, QString p_emote, int duration);
 | 
				
			||||||
 | 
					  void play_talking(QString p_char, QString p_emote);
 | 
				
			||||||
  void play_pre();
 | 
					  void play_idle(QString p_char, QString p_emote);
 | 
				
			||||||
  void play_talking();
 | 
					 | 
				
			||||||
  void play_idle();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void stop();
 | 
					  void stop();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -27,20 +25,15 @@ public:
 | 
				
			|||||||
private:
 | 
					private:
 | 
				
			||||||
  AOApplication *ao_app;
 | 
					  AOApplication *ao_app;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  bool play_once = true;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  QMovie *m_movie;
 | 
					  QMovie *m_movie;
 | 
				
			||||||
  QTimer *m_timer;
 | 
					  QTimer *preanim_timer;
 | 
				
			||||||
 | 
					 | 
				
			||||||
  QString m_char = "null";
 | 
					 | 
				
			||||||
  QString m_pre;
 | 
					 | 
				
			||||||
  QString m_gif;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
signals:
 | 
					signals:
 | 
				
			||||||
  void done();
 | 
					  void done();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
private slots:
 | 
					private slots:
 | 
				
			||||||
  void frame_change(int n_frame);
 | 
					  void frame_change(int n_frame);
 | 
				
			||||||
 | 
					  void preanim_done();
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // AOCHARMOVIE_H
 | 
					#endif // AOCHARMOVIE_H
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										10
									
								
								aoimage.cpp
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								aoimage.cpp
									
									
									
									
									
								
							@ -24,6 +24,16 @@ void AOImage::set_image(QString p_image)
 | 
				
			|||||||
    this->setPixmap(default_image_path);
 | 
					    this->setPixmap(default_image_path);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void AOImage::set_image_from_path(QString p_path)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  QString default_path = ao_app->get_default_theme_path() + "chatmed.png";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (file_exists(p_path))
 | 
				
			||||||
 | 
					    this->setPixmap(p_path);
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    this->setPixmap(default_path);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void AOImage::set_scaled_image(QString p_image)
 | 
					void AOImage::set_scaled_image(QString p_image)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  QString theme_image_path = ao_app->get_theme_path() + p_image;
 | 
					  QString theme_image_path = ao_app->get_theme_path() + p_image;
 | 
				
			||||||
 | 
				
			|||||||
@ -17,6 +17,7 @@ public:
 | 
				
			|||||||
  AOApplication *ao_app;
 | 
					  AOApplication *ao_app;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void set_image(QString p_image);
 | 
					  void set_image(QString p_image);
 | 
				
			||||||
 | 
					  void set_image_from_path(QString p_path);
 | 
				
			||||||
  void set_scaled_image(QString p_image);
 | 
					  void set_scaled_image(QString p_image);
 | 
				
			||||||
  void set_size_and_pos(QString identifier);
 | 
					  void set_size_and_pos(QString identifier);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										22
									
								
								aomovie.cpp
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								aomovie.cpp
									
									
									
									
									
								
							@ -17,6 +17,8 @@ AOMovie::AOMovie(QWidget *p_parent, AOApplication *p_ao_app) : QLabel(p_parent)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void AOMovie::play(QString p_gif, QString p_char)
 | 
					void AOMovie::play(QString p_gif, QString p_char)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  play_once = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  m_movie->stop();
 | 
					  m_movie->stop();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  QString default_path = ao_app->get_default_theme_path() + p_gif + ".gif";
 | 
					  QString default_path = ao_app->get_default_theme_path() + p_gif + ".gif";
 | 
				
			||||||
@ -37,6 +39,24 @@ void AOMovie::play(QString p_gif, QString p_char)
 | 
				
			|||||||
  m_movie->start();
 | 
					  m_movie->start();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void AOMovie::play(QString p_gif, bool p_play_once)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  play_once = p_play_once;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  m_movie->stop();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  QString default_path = ao_app->get_default_theme_path() + p_gif + ".gif";
 | 
				
			||||||
 | 
					  QString gif_path = ao_app->get_theme_path() + p_gif + ".gif";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (file_exists(gif_path))
 | 
				
			||||||
 | 
					    m_movie->setFileName(gif_path);
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    m_movie->setFileName(default_path);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  this->show();
 | 
				
			||||||
 | 
					  m_movie->start();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void AOMovie::stop()
 | 
					void AOMovie::stop()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  m_movie->stop();
 | 
					  m_movie->stop();
 | 
				
			||||||
@ -45,7 +65,7 @@ void AOMovie::stop()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void AOMovie::frame_change(int n_frame)
 | 
					void AOMovie::frame_change(int n_frame)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if (n_frame == (m_movie->frameCount() - 1))
 | 
					  if (n_frame == (m_movie->frameCount() - 1) && play_once)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    //we need this or else the last frame wont show
 | 
					    //we need this or else the last frame wont show
 | 
				
			||||||
    delay(m_movie->nextFrameDelay());
 | 
					    delay(m_movie->nextFrameDelay());
 | 
				
			||||||
 | 
				
			|||||||
@ -15,12 +15,14 @@ public:
 | 
				
			|||||||
  AOMovie(QWidget *p_parent, AOApplication *p_ao_app);
 | 
					  AOMovie(QWidget *p_parent, AOApplication *p_ao_app);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void play(QString p_gif, QString p_char = "null");
 | 
					  void play(QString p_gif, QString p_char = "null");
 | 
				
			||||||
 | 
					  void play(QString p_gif, bool p_play_once);
 | 
				
			||||||
  void combo_resize(int w, int h);
 | 
					  void combo_resize(int w, int h);
 | 
				
			||||||
  void stop();
 | 
					  void stop();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
  QMovie *m_movie;
 | 
					  QMovie *m_movie;
 | 
				
			||||||
  AOApplication *ao_app;
 | 
					  AOApplication *ao_app;
 | 
				
			||||||
 | 
					  bool play_once = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
signals:
 | 
					signals:
 | 
				
			||||||
  void done();
 | 
					  void done();
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										243
									
								
								courtroom.cpp
									
									
									
									
									
								
							
							
						
						
									
										243
									
								
								courtroom.cpp
									
									
									
									
									
								
							@ -19,11 +19,11 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  chat_tick_timer = new QTimer(this);
 | 
					  chat_tick_timer = new QTimer(this);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  text_delay = new QTimer(this);
 | 
					  text_delay_timer = new QTimer(this);
 | 
				
			||||||
  text_delay->setSingleShot(true);
 | 
					  text_delay_timer->setSingleShot(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  sfx_delay = new QTimer(this);
 | 
					  sfx_delay_timer = new QTimer(this);
 | 
				
			||||||
  sfx_delay->setSingleShot(true);
 | 
					  sfx_delay_timer->setSingleShot(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  char_button_mapper = new QSignalMapper(this);
 | 
					  char_button_mapper = new QSignalMapper(this);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -33,10 +33,10 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  ui_viewport = new QWidget(this);
 | 
					  ui_viewport = new QWidget(this);
 | 
				
			||||||
  ui_vp_background = new AOScene(ui_viewport, ao_app);
 | 
					  ui_vp_background = new AOScene(ui_viewport, ao_app);
 | 
				
			||||||
 | 
					  ui_vp_speedlines = new AOMovie(ui_viewport, ao_app);
 | 
				
			||||||
  ui_vp_player_char = new AOCharMovie(ui_viewport, ao_app);
 | 
					  ui_vp_player_char = new AOCharMovie(ui_viewport, ao_app);
 | 
				
			||||||
  ui_vp_desk = new AOScene(ui_viewport, ao_app);
 | 
					  ui_vp_desk = new AOScene(ui_viewport, ao_app);
 | 
				
			||||||
  ui_vp_legacy_desk = new AOScene(ui_viewport, ao_app);
 | 
					  ui_vp_legacy_desk = new AOScene(ui_viewport, ao_app);
 | 
				
			||||||
  //ui_vp_legacy_padding = new AOImage(ui_viewport, ao_app);
 | 
					 | 
				
			||||||
  ui_vp_chatbox = new AOImage(ui_viewport, ao_app);
 | 
					  ui_vp_chatbox = new AOImage(ui_viewport, ao_app);
 | 
				
			||||||
  ui_vp_showname = new QLabel(ui_vp_chatbox);
 | 
					  ui_vp_showname = new QLabel(ui_vp_chatbox);
 | 
				
			||||||
  ui_vp_message = new QPlainTextEdit(ui_vp_chatbox);
 | 
					  ui_vp_message = new QPlainTextEdit(ui_vp_chatbox);
 | 
				
			||||||
@ -180,6 +180,12 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
 | 
				
			|||||||
  connect(keepalive_timer, SIGNAL(timeout()), this, SLOT(ping_server()));
 | 
					  connect(keepalive_timer, SIGNAL(timeout()), this, SLOT(ping_server()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  connect(ui_vp_objection, SIGNAL(done()), this, SLOT(objection_done()));
 | 
					  connect(ui_vp_objection, SIGNAL(done()), this, SLOT(objection_done()));
 | 
				
			||||||
 | 
					  connect(ui_vp_player_char, SIGNAL(done()), this, SLOT(preanim_done()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  connect(text_delay_timer, SIGNAL(timeout()), this, SLOT(start_chat_ticking()));
 | 
				
			||||||
 | 
					  connect(sfx_delay_timer, SIGNAL(timeout()), this, SLOT(play_sfx()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  connect(chat_tick_timer, SIGNAL(timeout()), this, SLOT(chat_tick()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  connect(ui_ooc_chat_message, SIGNAL(returnPressed()), this, SLOT(on_ooc_return_pressed()));
 | 
					  connect(ui_ooc_chat_message, SIGNAL(returnPressed()), this, SLOT(on_ooc_return_pressed()));
 | 
				
			||||||
  connect(ui_ooc_toggle, SIGNAL(clicked()), this, SLOT(on_ooc_toggle_clicked()));
 | 
					  connect(ui_ooc_toggle, SIGNAL(clicked()), this, SLOT(on_ooc_toggle_clicked()));
 | 
				
			||||||
@ -232,6 +238,9 @@ void Courtroom::set_widgets()
 | 
				
			|||||||
  ui_vp_background->move(0, 0);
 | 
					  ui_vp_background->move(0, 0);
 | 
				
			||||||
  ui_vp_background->resize(ui_viewport->width(), ui_viewport->height());
 | 
					  ui_vp_background->resize(ui_viewport->width(), ui_viewport->height());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ui_vp_speedlines->move(0, 0);
 | 
				
			||||||
 | 
					  ui_vp_speedlines->combo_resize(ui_viewport->width(), ui_viewport->height());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ui_vp_player_char->move(0, 0);
 | 
					  ui_vp_player_char->move(0, 0);
 | 
				
			||||||
  ui_vp_player_char->combo_resize(ui_viewport->width(), ui_viewport->height());
 | 
					  ui_vp_player_char->combo_resize(ui_viewport->width(), ui_viewport->height());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -246,19 +255,21 @@ void Courtroom::set_widgets()
 | 
				
			|||||||
  ui_vp_legacy_desk->move(0, final_y);
 | 
					  ui_vp_legacy_desk->move(0, final_y);
 | 
				
			||||||
  ui_vp_legacy_desk->hide();
 | 
					  ui_vp_legacy_desk->hide();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //set_size_and_pos(ui_vp_legacy_padding, "legacy_padding");
 | 
					 | 
				
			||||||
  //ui_vp_legacy_padding->setStyleSheet("background-color: rgba(89, 89, 89, 255);");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  set_size_and_pos(ui_vp_chatbox, "chatbox");
 | 
					  set_size_and_pos(ui_vp_chatbox, "chatbox");
 | 
				
			||||||
  ui_vp_chatbox->set_scaled_image("chatmed.png");
 | 
					  ui_vp_chatbox->set_scaled_image("chatmed.png");
 | 
				
			||||||
 | 
					  ui_vp_chatbox->hide();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  set_size_and_pos(ui_vp_showname, "showname");
 | 
					  set_size_and_pos(ui_vp_showname, "showname");
 | 
				
			||||||
 | 
					  QFont f = ui_vp_showname->font();
 | 
				
			||||||
 | 
					  f.setPointSize(8);
 | 
				
			||||||
 | 
					  ui_vp_showname->setFont(f);
 | 
				
			||||||
  ui_vp_showname->setStyleSheet("background-color: rgba(0, 0, 0, 0);"
 | 
					  ui_vp_showname->setStyleSheet("background-color: rgba(0, 0, 0, 0);"
 | 
				
			||||||
                               "color: white;");
 | 
					                               "color: white;");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  set_size_and_pos(ui_vp_message, "message");
 | 
					  set_size_and_pos(ui_vp_message, "message");
 | 
				
			||||||
 | 
					  ui_vp_message->setReadOnly(true);
 | 
				
			||||||
  ui_vp_message->setStyleSheet("background-color: rgba(0, 0, 0, 0);"
 | 
					  ui_vp_message->setStyleSheet("background-color: rgba(0, 0, 0, 0);"
 | 
				
			||||||
                               "color: white;");
 | 
					                               "color: white");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ui_vp_testimony->move(0, 0);
 | 
					  ui_vp_testimony->move(0, 0);
 | 
				
			||||||
  ui_vp_testimony->resize(ui_viewport->width(), ui_viewport->height());
 | 
					  ui_vp_testimony->resize(ui_viewport->width(), ui_viewport->height());
 | 
				
			||||||
@ -611,14 +622,15 @@ void Courtroom::append_server_chatmessage(QString f_message)
 | 
				
			|||||||
void Courtroom::handle_chatmessage(QStringList *p_contents)
 | 
					void Courtroom::handle_chatmessage(QStringList *p_contents)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  text_state = 0;
 | 
					  text_state = 0;
 | 
				
			||||||
 | 
					  anim_state = 0;
 | 
				
			||||||
  chatmessage_is_empty = m_chatmessage[MESSAGE] == " " || m_chatmessage[MESSAGE] == "";
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for (int n_string = 0 ; n_string < chatmessage_size ; ++n_string)
 | 
					  for (int n_string = 0 ; n_string < chatmessage_size ; ++n_string)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    m_chatmessage[n_string] = p_contents->at(n_string);
 | 
					    m_chatmessage[n_string] = p_contents->at(n_string);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  chatmessage_is_empty = m_chatmessage[MESSAGE] == " " || m_chatmessage[MESSAGE] == "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  QString f_message = m_chatmessage[CHAR_NAME] + ": " + m_chatmessage[MESSAGE] + '\n';
 | 
					  QString f_message = m_chatmessage[CHAR_NAME] + ": " + m_chatmessage[MESSAGE] + '\n';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const QTextCursor old_cursor = ui_ic_chatlog->textCursor();
 | 
					  const QTextCursor old_cursor = ui_ic_chatlog->textCursor();
 | 
				
			||||||
@ -667,7 +679,7 @@ void Courtroom::handle_chatmessage(QStringList *p_contents)
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    //means we are in a state of objecting
 | 
					    //means we are in a state of objecting
 | 
				
			||||||
    anim_state = 0;
 | 
					    //anim_state = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    int emote_mod = m_chatmessage[EMOTE_MOD].toInt();
 | 
					    int emote_mod = m_chatmessage[EMOTE_MOD].toInt();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -693,6 +705,7 @@ void Courtroom::objection_done()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void Courtroom::handle_chatmessage_2()
 | 
					void Courtroom::handle_chatmessage_2()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  ui_vp_speedlines->stop();
 | 
				
			||||||
  ui_vp_player_char->stop();
 | 
					  ui_vp_player_char->stop();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  QString remote_name = m_chatmessage[CHAR_NAME];
 | 
					  QString remote_name = m_chatmessage[CHAR_NAME];
 | 
				
			||||||
@ -707,15 +720,169 @@ void Courtroom::handle_chatmessage_2()
 | 
				
			|||||||
  ui_vp_message->clear();
 | 
					  ui_vp_message->clear();
 | 
				
			||||||
  ui_vp_chatbox->hide();
 | 
					  ui_vp_chatbox->hide();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //D3BUG START
 | 
					  QString chatbox = ao_app->get_chat(m_chatmessage[CHAR_NAME]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ui_vp_chatbox->show();
 | 
					  if (chatbox == "")
 | 
				
			||||||
  ui_vp_message->appendPlainText(m_chatmessage[MESSAGE]);
 | 
					    ui_vp_chatbox->set_image("chatmed.png");
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
  //D3BUG END
 | 
					  {
 | 
				
			||||||
 | 
					    QString chatbox_path = ao_app->get_base_path() + "misc/" + chatbox;
 | 
				
			||||||
 | 
					    ui_vp_chatbox->set_image_from_path(chatbox_path);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  set_scene();
 | 
					  set_scene();
 | 
				
			||||||
  set_text_color();
 | 
					  set_text_color();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  int emote_mod = m_chatmessage[EMOTE_MOD].toInt();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  switch (emote_mod)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					  case 1: case 3: case 4:
 | 
				
			||||||
 | 
					    play_preanim();
 | 
				
			||||||
 | 
					    break;
 | 
				
			||||||
 | 
					  default:
 | 
				
			||||||
 | 
					    qDebug() << "W: invalid emote mod: " << QString::number(emote_mod);
 | 
				
			||||||
 | 
					    //intentional fallthru
 | 
				
			||||||
 | 
					  case 0: case 2: case 5:
 | 
				
			||||||
 | 
					    start_chat_ticking();
 | 
				
			||||||
 | 
					    handle_chatmessage_3();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Courtroom::handle_chatmessage_3()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  start_chat_ticking();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  int emote_mod = m_chatmessage[EMOTE_MOD].toInt();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (emote_mod == 4 ||
 | 
				
			||||||
 | 
					      emote_mod == 5)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    QString side = m_chatmessage[SIDE];
 | 
				
			||||||
 | 
					    ui_vp_desk->hide();
 | 
				
			||||||
 | 
					    ui_vp_legacy_desk->hide();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (side == "pro" ||
 | 
				
			||||||
 | 
					        side == "hlp" ||
 | 
				
			||||||
 | 
					        side == "wit")
 | 
				
			||||||
 | 
					      ui_vp_speedlines->play("prosecution_speedlines", false);
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					      ui_vp_speedlines->play("defense_speedlines", false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  int f_anim_state = 0;
 | 
				
			||||||
 | 
					  //BLUE is from an enum in datatypes.h
 | 
				
			||||||
 | 
					  bool text_is_blue = m_chatmessage[TEXT_COLOR].toInt() == BLUE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (!text_is_blue && text_state == 1)
 | 
				
			||||||
 | 
					    //talking
 | 
				
			||||||
 | 
					    f_anim_state = 2;
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    //idle
 | 
				
			||||||
 | 
					    f_anim_state = 3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (f_anim_state <= anim_state)
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ui_vp_player_char->stop();
 | 
				
			||||||
 | 
					  QString f_char = m_chatmessage[CHAR_NAME];
 | 
				
			||||||
 | 
					  QString f_emote = m_chatmessage[EMOTE];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  switch (f_anim_state)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					  case 2:
 | 
				
			||||||
 | 
					    ui_vp_player_char->play_talking(f_char, f_emote);
 | 
				
			||||||
 | 
					    anim_state = 2;
 | 
				
			||||||
 | 
					    break;
 | 
				
			||||||
 | 
					  default:
 | 
				
			||||||
 | 
					    qDebug() << "W: invalid anim_state: " << f_anim_state;
 | 
				
			||||||
 | 
					  case 3:
 | 
				
			||||||
 | 
					    ui_vp_player_char->play_idle(f_char, f_emote);
 | 
				
			||||||
 | 
					    anim_state = 3;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Courtroom::play_preanim()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  QString f_char = m_chatmessage[CHAR_NAME];
 | 
				
			||||||
 | 
					  QString f_preanim = m_chatmessage[PRE_EMOTE];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  //all time values in char.inis are multiplied by a constant(time_mod) to get the actual time
 | 
				
			||||||
 | 
					  int preanim_duration = ao_app->get_preanim_duration(f_char, f_preanim) * time_mod;
 | 
				
			||||||
 | 
					  int text_delay = ao_app->get_text_delay(f_char, f_preanim) * time_mod;
 | 
				
			||||||
 | 
					  int sfx_delay = m_chatmessage[SFX_DELAY].toInt() * time_mod;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ui_vp_player_char->play_pre(f_char, f_preanim, preanim_duration);
 | 
				
			||||||
 | 
					  anim_state = 1;
 | 
				
			||||||
 | 
					  if (text_delay >= 0)
 | 
				
			||||||
 | 
					    text_delay_timer->start(text_delay);
 | 
				
			||||||
 | 
					  sfx_delay_timer->start(sfx_delay);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Courtroom::preanim_done()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  handle_chatmessage_3();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Courtroom::start_chat_ticking()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  //we need to ensure that the text isn't already ticking because this function can be called by two logic paths
 | 
				
			||||||
 | 
					  if (text_state != 0)
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (chatmessage_is_empty)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    //since the message is empty, it's technically done ticking
 | 
				
			||||||
 | 
					    text_state = 2;
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ui_vp_chatbox->show();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  tick_pos = 0;
 | 
				
			||||||
 | 
					  chat_tick_timer->start(chat_tick_interval);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  //means text is currently ticking
 | 
				
			||||||
 | 
					  text_state = 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Courtroom::chat_tick()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  //T0D0: play tick sound based on gender
 | 
				
			||||||
 | 
					  //note: this is called fairly often(every 60 ms when char is talking)
 | 
				
			||||||
 | 
					  //do not perform heavy operations here
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  QString f_message = m_chatmessage[MESSAGE];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (tick_pos >= f_message.size())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    text_state = 2;
 | 
				
			||||||
 | 
					    chat_tick_timer->stop();
 | 
				
			||||||
 | 
					    if (anim_state == 2)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      ui_vp_player_char->play_idle(m_chatmessage[CHAR_NAME], m_chatmessage[EMOTE]);
 | 
				
			||||||
 | 
					      anim_state = 3;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    ui_vp_message->insertPlainText(f_message.at(tick_pos));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    QScrollBar *scroll = ui_vp_message->verticalScrollBar();
 | 
				
			||||||
 | 
					    scroll->setValue(scroll->maximum());
 | 
				
			||||||
 | 
					    scroll->hide();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ++tick_pos;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Courtroom::play_sfx()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  //T0D0: add audio implementation
 | 
				
			||||||
 | 
					  //QString sfx_name = m_chatmessage[SFX_NAME];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Courtroom::set_scene()
 | 
					void Courtroom::set_scene()
 | 
				
			||||||
@ -794,26 +961,31 @@ void Courtroom::set_text_color()
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  switch (m_chatmessage[TEXT_COLOR].toInt())
 | 
					  switch (m_chatmessage[TEXT_COLOR].toInt())
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
  case 0:
 | 
					  case GREEN:
 | 
				
			||||||
    ui_vp_message->setStyleSheet("QPlainTextEdit{color: white;}");
 | 
					    ui_vp_message->setStyleSheet("background-color: rgba(0, 0, 0, 0);"
 | 
				
			||||||
 | 
					                                 "color: rgb(0, 255, 0)");
 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
  case 1:
 | 
					  case RED:
 | 
				
			||||||
    ui_vp_message->setStyleSheet("QPlainTextEdit{color: rgb(0, 255, 0);}");
 | 
					    ui_vp_message->setStyleSheet("background-color: rgba(0, 0, 0, 0);"
 | 
				
			||||||
 | 
					                                 "color: red");
 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
  case 2:
 | 
					  case ORANGE:
 | 
				
			||||||
    ui_vp_message->setStyleSheet("QPlainTextEdit{color: red;}");
 | 
					    ui_vp_message->setStyleSheet("background-color: rgba(0, 0, 0, 0);"
 | 
				
			||||||
 | 
					                                 "color: orange");
 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
  case 3:
 | 
					  case BLUE:
 | 
				
			||||||
    ui_vp_message->setStyleSheet("QPlainTextEdit{color: orange;}");
 | 
					    ui_vp_message->setStyleSheet("background-color: rgba(0, 0, 0, 0);"
 | 
				
			||||||
    break;
 | 
					                                 "color: rgb(45, 150, 255)");
 | 
				
			||||||
  case 4:
 | 
					 | 
				
			||||||
    ui_vp_message->setStyleSheet("QPlainTextEdit{color: rgb(45, 150, 255);}");
 | 
					 | 
				
			||||||
    break;
 | 
					 | 
				
			||||||
  case 5:
 | 
					 | 
				
			||||||
    ui_vp_message->setStyleSheet("QPlainTextEdit{color: yellow;}");
 | 
					 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
 | 
					  case YELLOW:
 | 
				
			||||||
 | 
					    ui_vp_message->setStyleSheet("background-color: rgba(0, 0, 0, 0);"
 | 
				
			||||||
 | 
					                                 "color: yellow");
 | 
				
			||||||
  default:
 | 
					  default:
 | 
				
			||||||
    ui_vp_message->setStyleSheet("QPlainTextEdit{color: white;}");
 | 
					    qDebug() << "W: undefined text color: " << m_chatmessage[TEXT_COLOR];
 | 
				
			||||||
 | 
					  case WHITE:
 | 
				
			||||||
 | 
					    ui_vp_message->setStyleSheet("background-color: rgba(0, 0, 0, 0);"
 | 
				
			||||||
 | 
					                                 "color: white");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -886,6 +1058,13 @@ void Courtroom::on_ooc_toggle_clicked()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void Courtroom::on_witness_testimony_clicked()
 | 
					void Courtroom::on_witness_testimony_clicked()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  //D3BUG
 | 
				
			||||||
 | 
					  //ui_vp_message->setStyleSheet("background-color: rgba(0, 0, 0, 0);"
 | 
				
			||||||
 | 
					  //                             "color: red");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  set_text_color();
 | 
				
			||||||
 | 
					  //D3BUG
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ao_app->send_server_packet(new AOPacket("RT#testimony1#%"));
 | 
					  ao_app->send_server_packet(new AOPacket("RT#testimony1#%"));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										17
									
								
								courtroom.h
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								courtroom.h
									
									
									
									
									
								
							@ -60,6 +60,9 @@ public:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  void handle_chatmessage(QStringList *p_contents);
 | 
					  void handle_chatmessage(QStringList *p_contents);
 | 
				
			||||||
  void handle_chatmessage_2();
 | 
					  void handle_chatmessage_2();
 | 
				
			||||||
 | 
					  void handle_chatmessage_3();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void play_preanim();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void handle_wtce(QString p_wtce);
 | 
					  void handle_wtce(QString p_wtce);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -93,10 +96,13 @@ private:
 | 
				
			|||||||
  int tick_pos = 0;
 | 
					  int tick_pos = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //delay before chat messages starts ticking
 | 
					  //delay before chat messages starts ticking
 | 
				
			||||||
  QTimer *text_delay;
 | 
					  QTimer *text_delay_timer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //delay before sfx plays
 | 
					  //delay before sfx plays
 | 
				
			||||||
  QTimer *sfx_delay;
 | 
					  QTimer *sfx_delay_timer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  //every time point in char.inis times this equals the final time
 | 
				
			||||||
 | 
					  const int time_mod = 60;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  static const int chatmessage_size = 15;
 | 
					  static const int chatmessage_size = 15;
 | 
				
			||||||
  QString m_chatmessage[chatmessage_size];
 | 
					  QString m_chatmessage[chatmessage_size];
 | 
				
			||||||
@ -130,6 +136,7 @@ private:
 | 
				
			|||||||
  //ui_viewport is the parent of all the viewport widgets
 | 
					  //ui_viewport is the parent of all the viewport widgets
 | 
				
			||||||
  QWidget *ui_viewport;
 | 
					  QWidget *ui_viewport;
 | 
				
			||||||
  AOScene *ui_vp_background;
 | 
					  AOScene *ui_vp_background;
 | 
				
			||||||
 | 
					  AOMovie *ui_vp_speedlines;
 | 
				
			||||||
  AOCharMovie *ui_vp_player_char;
 | 
					  AOCharMovie *ui_vp_player_char;
 | 
				
			||||||
  AOScene *ui_vp_desk;
 | 
					  AOScene *ui_vp_desk;
 | 
				
			||||||
  AOScene *ui_vp_legacy_desk;
 | 
					  AOScene *ui_vp_legacy_desk;
 | 
				
			||||||
@ -224,8 +231,14 @@ private:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
public slots:
 | 
					public slots:
 | 
				
			||||||
  void objection_done();
 | 
					  void objection_done();
 | 
				
			||||||
 | 
					  void preanim_done();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
private slots:
 | 
					private slots:
 | 
				
			||||||
 | 
					  void start_chat_ticking();
 | 
				
			||||||
 | 
					  void play_sfx();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void chat_tick();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void on_ooc_return_pressed();
 | 
					  void on_ooc_return_pressed();
 | 
				
			||||||
  void on_ooc_toggle_clicked();
 | 
					  void on_ooc_toggle_clicked();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										13
									
								
								datatypes.h
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								datatypes.h
									
									
									
									
									
								
							@ -94,4 +94,17 @@ enum CHAT_MESSAGE
 | 
				
			|||||||
  TEXT_COLOR
 | 
					  TEXT_COLOR
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum COLOR
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  WHITE = 0,
 | 
				
			||||||
 | 
					  GREEN,
 | 
				
			||||||
 | 
					  RED,
 | 
				
			||||||
 | 
					  ORANGE,
 | 
				
			||||||
 | 
					  BLUE,
 | 
				
			||||||
 | 
					  YELLOW,
 | 
				
			||||||
 | 
					  //NYI
 | 
				
			||||||
 | 
					  BLACK,
 | 
				
			||||||
 | 
					  RAINBOW
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // DATATYPES_H
 | 
					#endif // DATATYPES_H
 | 
				
			||||||
 | 
				
			|||||||
@ -7,7 +7,7 @@
 | 
				
			|||||||
QString AOApplication::get_base_path(){
 | 
					QString AOApplication::get_base_path(){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef OMNI_DEBUG
 | 
					#ifdef OMNI_DEBUG
 | 
				
			||||||
  return "/media/omnitroid/Data/winshare/AO/client/4chan_base/";
 | 
					  return "/media/omnitroid/Data/winshare/AO/client/base/";
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
  return (QDir::currentPath() + "/base/");
 | 
					  return (QDir::currentPath() + "/base/");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
				
			|||||||
@ -202,9 +202,84 @@ QString AOApplication::get_showname(QString p_char)
 | 
				
			|||||||
    if (line_elements.size() < 2)
 | 
					    if (line_elements.size() < 2)
 | 
				
			||||||
      continue;
 | 
					      continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return line_elements.at(1).trimmed().toLower();
 | 
					    return line_elements.at(1).trimmed();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return "";
 | 
					  return "";
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					QString AOApplication::get_chat(QString p_char)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  QString char_ini_path = get_character_path(p_char) + "char.ini";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  QFile char_ini;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  char_ini.setFileName(char_ini_path);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (!char_ini.open(QIODevice::ReadOnly))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    return "";
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  QTextStream in(&char_ini);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  while(!in.atEnd())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    QString line = in.readLine();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!line.startsWith("chat"))
 | 
				
			||||||
 | 
					      continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    QStringList line_elements = line.split("=");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (line_elements.size() < 2)
 | 
				
			||||||
 | 
					      continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return line_elements.at(1).trimmed().toLower() + ".png";
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return "";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int AOApplication::get_preanim_duration(QString p_char, QString p_emote)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  QString char_ini_path = get_character_path(p_char) + "char.ini";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  QFile char_ini;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  char_ini.setFileName(char_ini_path);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (!char_ini.open(QIODevice::ReadOnly))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    //means preanim will finish instantly(i.e. not play)
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  QTextStream in(&char_ini);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  while(!in.atEnd())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    QString line = in.readLine();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!line.startsWith(p_emote))
 | 
				
			||||||
 | 
					      continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    QStringList line_elements = line.split("=");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (line_elements.size() < 2)
 | 
				
			||||||
 | 
					      continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return line_elements.at(1).trimmed().toInt();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int AOApplication::get_text_delay(QString p_char, QString p_emote)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  //T0D0: make a sane format for this and implement function
 | 
				
			||||||
 | 
					  p_char.toLower();
 | 
				
			||||||
 | 
					  p_emote.toLower();
 | 
				
			||||||
 | 
					  return -1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user