Fix music_display not stretching properly, reconsolidate ForegroundLayer into InterjectionLayer, rename InterjectionLayer to SplashLayer (#436)
* more intelligent separation * separation 2 electric boogaloo * rename InterjectionLayer to SplashLayer * remove redundant layer type * comments and cleanup * fix incorrect use of continuous * remove nonfunctional check * fix additive not coloring correctly Co-authored-by: Crystalwarrior <varsash@gmail.com>
This commit is contained in:
		
							parent
							
								
									4a9480afdc
								
							
						
					
					
						commit
						5cafb011f5
					
				@ -1 +1 @@
 | 
				
			|||||||
Subproject commit 9090a63dec0384c63fc4bdc7fc68dccb961e05cf
 | 
					Subproject commit 15b0cc4aa1241a9b740fb1ce8a61c7f699a80de5
 | 
				
			||||||
@ -10,6 +10,27 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
class AOApplication;
 | 
					class AOApplication;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// "Brief" explanation of what the hell this is:
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// AOLayer handles all animations both inside and outside
 | 
				
			||||||
 | 
					// the viewport. It was originally devised as a layering
 | 
				
			||||||
 | 
					// system, but turned into a full refactor of the existing
 | 
				
			||||||
 | 
					// animation code. 
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// AOLayer has six subclasses, all of which differ mainly in
 | 
				
			||||||
 | 
					// how they handle path resolution.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//  - BackgroundLayer: self-explanatory, handles files found in base/background
 | 
				
			||||||
 | 
					//  - CharLayer: handles all the "wonderful" quirks of character path resolution 
 | 
				
			||||||
 | 
					//  - SplashLayer: handles elements that can either be provided by a misc/ directory
 | 
				
			||||||
 | 
					//    or by the theme - speedlines, shouts, WT/CE, et cetera
 | 
				
			||||||
 | 
					//  - EffectLayer: this is basically a dummy layer since effects do their own wonky
 | 
				
			||||||
 | 
					//    path resolution in a different file
 | 
				
			||||||
 | 
					//  - InterfaceLayer: handles UI elements like the chat arrow and the music display
 | 
				
			||||||
 | 
					//  - StickerLayer: Crystalwarrior really wanted this. Handles "stickers," whatever those are.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// For questions comments or concerns, bother someone else
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class AOLayer : public QLabel {
 | 
					class AOLayer : public QLabel {
 | 
				
			||||||
  Q_OBJECT
 | 
					  Q_OBJECT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -24,6 +45,11 @@ public:
 | 
				
			|||||||
  bool play_once = false; // Whether to loop this animation or not
 | 
					  bool play_once = false; // Whether to loop this animation or not
 | 
				
			||||||
  bool cull_image = true; // if we're done playing this animation, should we
 | 
					  bool cull_image = true; // if we're done playing this animation, should we
 | 
				
			||||||
                          // hide it? also controls durational culling
 | 
					                          // hide it? also controls durational culling
 | 
				
			||||||
 | 
					  // Are we loading this from the same frame we left off on? 
 | 
				
			||||||
 | 
					  bool continuous = false;
 | 
				
			||||||
 | 
					  // Whether or not to forcibly bypass the simple check done by start_playback
 | 
				
			||||||
 | 
					  // and use the existent value of continuous instead
 | 
				
			||||||
 | 
					  bool force_continuous = false;
 | 
				
			||||||
  Qt::TransformationMode transform_mode = Qt::FastTransformation; // transformation mode to use for this image
 | 
					  Qt::TransformationMode transform_mode = Qt::FastTransformation; // transformation mode to use for this image
 | 
				
			||||||
  bool stretch = false; // Should we stretch/squash this image to fill the screen?
 | 
					  bool stretch = false; // Should we stretch/squash this image to fill the screen?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -72,7 +98,7 @@ protected:
 | 
				
			|||||||
  QElapsedTimer actual_time;
 | 
					  QElapsedTimer actual_time;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Usually used to turn seconds into milliseconds such as for [Time] tag in
 | 
					  // Usually used to turn seconds into milliseconds such as for [Time] tag in
 | 
				
			||||||
  // char.ini
 | 
					  // char.ini (which is no longer used)
 | 
				
			||||||
  const int tick_ms = 60;
 | 
					  const int tick_ms = 60;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // These are the X and Y values before they are fixed based on the sprite's
 | 
					  // These are the X and Y values before they are fixed based on the sprite's
 | 
				
			||||||
@ -91,12 +117,6 @@ protected:
 | 
				
			|||||||
  int speed = 100;
 | 
					  int speed = 100;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  bool m_flipped = false;
 | 
					  bool m_flipped = false;
 | 
				
			||||||
  // Are we loading this from the same frame we left off on? TODO: actually make
 | 
					 | 
				
			||||||
  // this work
 | 
					 | 
				
			||||||
  bool continuous = false;
 | 
					 | 
				
			||||||
  // Whether or not to forcibly bypass the simple check done by start_playback
 | 
					 | 
				
			||||||
  // and use the existent value of continuous instead
 | 
					 | 
				
			||||||
  bool force_continuous = false;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  int duration = 0;
 | 
					  int duration = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -129,14 +149,6 @@ public:
 | 
				
			|||||||
  void load_image(QString p_filename);
 | 
					  void load_image(QString p_filename);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ForegroundLayer : public AOLayer {
 | 
					 | 
				
			||||||
  Q_OBJECT
 | 
					 | 
				
			||||||
public:
 | 
					 | 
				
			||||||
  ForegroundLayer(QWidget *p_parent, AOApplication *p_ao_app);
 | 
					 | 
				
			||||||
  QString miscname; //'misc' folder to search. we fetch this based on p_charname below
 | 
					 | 
				
			||||||
  void load_image(QString p_filename, QString p_charname);
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class CharLayer : public AOLayer {
 | 
					class CharLayer : public AOLayer {
 | 
				
			||||||
  Q_OBJECT
 | 
					  Q_OBJECT
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
@ -191,10 +203,10 @@ signals:
 | 
				
			|||||||
  void play_sfx(QString sfx);
 | 
					  void play_sfx(QString sfx);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class InterjectionLayer : public AOLayer {
 | 
					class SplashLayer : public AOLayer {
 | 
				
			||||||
  Q_OBJECT
 | 
					  Q_OBJECT
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
  InterjectionLayer(QWidget *p_parent, AOApplication *p_ao_app);
 | 
					  SplashLayer(QWidget *p_parent, AOApplication *p_ao_app);
 | 
				
			||||||
  void load_image(QString p_filename, QString p_charname, QString p_miscname);
 | 
					  void load_image(QString p_filename, QString p_charname, QString p_miscname);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -605,7 +605,7 @@ private:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  QWidget *ui_viewport;
 | 
					  QWidget *ui_viewport;
 | 
				
			||||||
  BackgroundLayer *ui_vp_background;
 | 
					  BackgroundLayer *ui_vp_background;
 | 
				
			||||||
  ForegroundLayer *ui_vp_speedlines;
 | 
					  SplashLayer *ui_vp_speedlines;
 | 
				
			||||||
  CharLayer *ui_vp_player_char;
 | 
					  CharLayer *ui_vp_player_char;
 | 
				
			||||||
  CharLayer *ui_vp_sideplayer_char;
 | 
					  CharLayer *ui_vp_sideplayer_char;
 | 
				
			||||||
  BackgroundLayer *ui_vp_desk;
 | 
					  BackgroundLayer *ui_vp_desk;
 | 
				
			||||||
@ -614,10 +614,10 @@ private:
 | 
				
			|||||||
  QLabel *ui_vp_showname;
 | 
					  QLabel *ui_vp_showname;
 | 
				
			||||||
  InterfaceLayer *ui_vp_chat_arrow;
 | 
					  InterfaceLayer *ui_vp_chat_arrow;
 | 
				
			||||||
  QTextEdit *ui_vp_message;
 | 
					  QTextEdit *ui_vp_message;
 | 
				
			||||||
  InterfaceLayer *ui_vp_testimony;
 | 
					  SplashLayer *ui_vp_testimony;
 | 
				
			||||||
  InterjectionLayer *ui_vp_wtce;
 | 
					  SplashLayer *ui_vp_wtce;
 | 
				
			||||||
  EffectLayer *ui_vp_effect;
 | 
					  EffectLayer *ui_vp_effect;
 | 
				
			||||||
  InterjectionLayer *ui_vp_objection;
 | 
					  SplashLayer *ui_vp_objection;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  QTextEdit *ui_ic_chatlog;
 | 
					  QTextEdit *ui_ic_chatlog;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -28,10 +28,6 @@ BackgroundLayer::BackgroundLayer(QWidget *p_parent, AOApplication *p_ao_app)
 | 
				
			|||||||
    : AOLayer(p_parent, p_ao_app)
 | 
					    : AOLayer(p_parent, p_ao_app)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
ForegroundLayer::ForegroundLayer(QWidget *p_parent, AOApplication *p_ao_app)
 | 
					 | 
				
			||||||
    : AOLayer(p_parent, p_ao_app)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
CharLayer::CharLayer(QWidget *p_parent, AOApplication *p_ao_app)
 | 
					CharLayer::CharLayer(QWidget *p_parent, AOApplication *p_ao_app)
 | 
				
			||||||
    : AOLayer(p_parent, p_ao_app)
 | 
					    : AOLayer(p_parent, p_ao_app)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -40,7 +36,7 @@ EffectLayer::EffectLayer(QWidget *p_parent, AOApplication *p_ao_app)
 | 
				
			|||||||
    : AOLayer(p_parent, p_ao_app)
 | 
					    : AOLayer(p_parent, p_ao_app)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
InterjectionLayer::InterjectionLayer(QWidget *p_parent, AOApplication *p_ao_app)
 | 
					SplashLayer::SplashLayer(QWidget *p_parent, AOApplication *p_ao_app)
 | 
				
			||||||
    : AOLayer(p_parent, p_ao_app)
 | 
					    : AOLayer(p_parent, p_ao_app)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -48,7 +44,6 @@ InterfaceLayer::InterfaceLayer(QWidget *p_parent, AOApplication *p_ao_app)
 | 
				
			|||||||
    : AOLayer(p_parent, p_ao_app)
 | 
					    : AOLayer(p_parent, p_ao_app)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
StickerLayer::StickerLayer(QWidget *p_parent, AOApplication *p_ao_app)
 | 
					StickerLayer::StickerLayer(QWidget *p_parent, AOApplication *p_ao_app)
 | 
				
			||||||
    : AOLayer(p_parent, p_ao_app)
 | 
					    : AOLayer(p_parent, p_ao_app)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -135,27 +130,6 @@ void BackgroundLayer::load_image(QString p_filename)
 | 
				
			|||||||
  start_playback(ao_app->get_image_suffix(ao_app->get_background_path(p_filename)));
 | 
					  start_playback(ao_app->get_image_suffix(ao_app->get_background_path(p_filename)));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void ForegroundLayer::load_image(QString p_filename, QString p_charname)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  play_once = false;
 | 
					 | 
				
			||||||
  cull_image = false;
 | 
					 | 
				
			||||||
  miscname = ao_app->get_char_shouts(p_charname);
 | 
					 | 
				
			||||||
  qDebug() << "[ForegroundLayer] FG loaded: " << p_filename;
 | 
					 | 
				
			||||||
  QList<QString> pathlist = {
 | 
					 | 
				
			||||||
      ao_app->get_image_suffix(ao_app->get_character_path(
 | 
					 | 
				
			||||||
          p_charname, p_filename)), // first check the character folder
 | 
					 | 
				
			||||||
      ao_app->get_image_suffix(ao_app->get_theme_path(
 | 
					 | 
				
			||||||
          "misc/" + miscname + "/" +
 | 
					 | 
				
			||||||
          p_filename)), // then check our theme's misc directory
 | 
					 | 
				
			||||||
      ao_app->get_image_suffix(ao_app->get_misc_path(
 | 
					 | 
				
			||||||
          miscname, p_filename)), // then check our global misc folder
 | 
					 | 
				
			||||||
      ao_app->get_image_suffix(
 | 
					 | 
				
			||||||
          ao_app->get_theme_path(p_filename)), // then check the user's theme
 | 
					 | 
				
			||||||
      ao_app->get_image_suffix(ao_app->get_default_theme_path(
 | 
					 | 
				
			||||||
          p_filename))}; // and finally check the default theme
 | 
					 | 
				
			||||||
  start_playback(find_image(pathlist));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void CharLayer::load_image(QString p_filename, QString p_charname,
 | 
					void CharLayer::load_image(QString p_filename, QString p_charname,
 | 
				
			||||||
                           int p_duration, bool p_is_preanim)
 | 
					                           int p_duration, bool p_is_preanim)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -219,12 +193,9 @@ void CharLayer::load_image(QString p_filename, QString p_charname,
 | 
				
			|||||||
  this->start_playback(find_image(pathlist));
 | 
					  this->start_playback(find_image(pathlist));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void InterjectionLayer::load_image(QString p_filename, QString p_charname,
 | 
					void SplashLayer::load_image(QString p_filename, QString p_charname,
 | 
				
			||||||
                                   QString p_miscname)
 | 
					                                   QString p_miscname)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  continuous = false;
 | 
					 | 
				
			||||||
  force_continuous = true;
 | 
					 | 
				
			||||||
  play_once = true;
 | 
					 | 
				
			||||||
  transform_mode = ao_app->get_misc_scaling(p_miscname);
 | 
					  transform_mode = ao_app->get_misc_scaling(p_miscname);
 | 
				
			||||||
  QList<QString> pathlist = {
 | 
					  QList<QString> pathlist = {
 | 
				
			||||||
      ao_app->get_image_suffix(ao_app->get_character_path(
 | 
					      ao_app->get_image_suffix(ao_app->get_character_path(
 | 
				
			||||||
@ -269,7 +240,7 @@ void EffectLayer::load_image(QString p_filename, bool p_looping)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void InterfaceLayer::load_image(QString p_filename, QString p_miscname)
 | 
					void InterfaceLayer::load_image(QString p_filename, QString p_miscname)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  transform_mode = ao_app->get_misc_scaling(p_miscname);
 | 
					  stretch = true;
 | 
				
			||||||
  QList<QString> pathlist = {
 | 
					  QList<QString> pathlist = {
 | 
				
			||||||
      ao_app->get_image_suffix(ao_app->get_theme_path(
 | 
					      ao_app->get_image_suffix(ao_app->get_theme_path(
 | 
				
			||||||
          "misc/" + p_miscname + "/" +
 | 
					          "misc/" + p_miscname + "/" +
 | 
				
			||||||
@ -371,12 +342,9 @@ void AOLayer::start_playback(QString p_image)
 | 
				
			|||||||
      int l_delay = m_reader.nextImageDelay();
 | 
					      int l_delay = m_reader.nextImageDelay();
 | 
				
			||||||
      movie_frames.append(l_pixmap);
 | 
					      movie_frames.append(l_pixmap);
 | 
				
			||||||
      movie_delays.append(l_delay);
 | 
					      movie_delays.append(l_delay);
 | 
				
			||||||
      // qDebug() << "appending delay of " << l_delay;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  last_path = p_image;
 | 
					  last_path = p_image;
 | 
				
			||||||
  // qDebug() << "CONT: " << continuous << " MAX: " << max_frames
 | 
					 | 
				
			||||||
  //         << " LAST MAX: " << last_max_frames << " FRAME: " << frame;
 | 
					 | 
				
			||||||
  QPixmap f_pixmap = this->get_pixmap(m_reader.read());
 | 
					  QPixmap f_pixmap = this->get_pixmap(m_reader.read());
 | 
				
			||||||
  int f_delay = m_reader.nextImageDelay();
 | 
					  int f_delay = m_reader.nextImageDelay();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -44,7 +44,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  ui_viewport = new QWidget(this);
 | 
					  ui_viewport = new QWidget(this);
 | 
				
			||||||
  ui_vp_background = new BackgroundLayer(ui_viewport, ao_app);
 | 
					  ui_vp_background = new BackgroundLayer(ui_viewport, ao_app);
 | 
				
			||||||
  ui_vp_speedlines = new ForegroundLayer(ui_viewport, ao_app);
 | 
					  ui_vp_speedlines = new SplashLayer(ui_viewport, ao_app);
 | 
				
			||||||
  ui_vp_player_char = new CharLayer(ui_viewport, ao_app);
 | 
					  ui_vp_player_char = new CharLayer(ui_viewport, ao_app);
 | 
				
			||||||
  ui_vp_sideplayer_char = new CharLayer(ui_viewport, ao_app);
 | 
					  ui_vp_sideplayer_char = new CharLayer(ui_viewport, ao_app);
 | 
				
			||||||
  ui_vp_sideplayer_char->hide();
 | 
					  ui_vp_sideplayer_char->hide();
 | 
				
			||||||
@ -67,13 +67,18 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
 | 
				
			|||||||
  ui_vp_message->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
 | 
					  ui_vp_message->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
 | 
				
			||||||
  ui_vp_message->setReadOnly(true);
 | 
					  ui_vp_message->setReadOnly(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ui_vp_testimony = new InterfaceLayer(this, ao_app);
 | 
					  ui_vp_testimony = new SplashLayer(this, ao_app);
 | 
				
			||||||
  ui_vp_testimony->set_play_once(false);
 | 
					  ui_vp_testimony->set_play_once(false);
 | 
				
			||||||
  ui_vp_testimony->setAttribute(Qt::WA_TransparentForMouseEvents);
 | 
					  ui_vp_testimony->setAttribute(Qt::WA_TransparentForMouseEvents);
 | 
				
			||||||
  ui_vp_wtce = new InterjectionLayer(this, ao_app);
 | 
					  ui_vp_wtce = new SplashLayer(this, ao_app);
 | 
				
			||||||
  ui_vp_wtce->set_play_once(true);
 | 
					  ui_vp_wtce->set_play_once(true);
 | 
				
			||||||
 | 
					  ui_vp_wtce->continuous = false;
 | 
				
			||||||
 | 
					  ui_vp_wtce->force_continuous = true;
 | 
				
			||||||
  ui_vp_wtce->setAttribute(Qt::WA_TransparentForMouseEvents);
 | 
					  ui_vp_wtce->setAttribute(Qt::WA_TransparentForMouseEvents);
 | 
				
			||||||
  ui_vp_objection = new InterjectionLayer(this, ao_app);
 | 
					  ui_vp_objection = new SplashLayer(this, ao_app);
 | 
				
			||||||
 | 
					  ui_vp_objection->set_play_once(true);
 | 
				
			||||||
 | 
					  ui_vp_objection->continuous = false;
 | 
				
			||||||
 | 
					  ui_vp_objection->force_continuous = true;
 | 
				
			||||||
  ui_vp_objection->setAttribute(Qt::WA_TransparentForMouseEvents);
 | 
					  ui_vp_objection->setAttribute(Qt::WA_TransparentForMouseEvents);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ui_ic_chatlog = new QTextEdit(this);
 | 
					  ui_ic_chatlog = new QTextEdit(this);
 | 
				
			||||||
@ -115,6 +120,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  ui_music_display = new InterfaceLayer(this, ao_app);
 | 
					  ui_music_display = new InterfaceLayer(this, ao_app);
 | 
				
			||||||
  ui_music_display->set_play_once(false);
 | 
					  ui_music_display->set_play_once(false);
 | 
				
			||||||
 | 
					  ui_music_display->transform_mode = Qt::SmoothTransformation;
 | 
				
			||||||
  ui_music_display->setAttribute(Qt::WA_TransparentForMouseEvents);
 | 
					  ui_music_display->setAttribute(Qt::WA_TransparentForMouseEvents);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ui_music_name = new ScrollText(ui_music_display);
 | 
					  ui_music_name = new ScrollText(ui_music_display);
 | 
				
			||||||
@ -1998,6 +2004,7 @@ void Courtroom::chatmessage_dequeue()
 | 
				
			|||||||
    QString f_char = m_chatmessage[CHAR_NAME];
 | 
					    QString f_char = m_chatmessage[CHAR_NAME];
 | 
				
			||||||
    f_custom_theme = ao_app->get_chat(f_char);
 | 
					    f_custom_theme = ao_app->get_chat(f_char);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					  ui_vp_chat_arrow->transform_mode = ao_app->get_misc_scaling(f_custom_theme);
 | 
				
			||||||
  ui_vp_chat_arrow->load_image("chat_arrow", f_custom_theme);
 | 
					  ui_vp_chat_arrow->load_image("chat_arrow", f_custom_theme);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Nothing to parse in the queue
 | 
					  // Nothing to parse in the queue
 | 
				
			||||||
@ -2592,7 +2599,6 @@ void Courtroom::initialize_chatbox()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // This should probably be called only if any change from the last chat
 | 
					    // This should probably be called only if any change from the last chat
 | 
				
			||||||
    // arrow was actually detected.
 | 
					    // arrow was actually detected.
 | 
				
			||||||
    if (current_misc != last_misc) {
 | 
					 | 
				
			||||||
    pos_size_type design_ini_result = ao_app->get_element_dimensions(
 | 
					    pos_size_type design_ini_result = ao_app->get_element_dimensions(
 | 
				
			||||||
        "chat_arrow", "courtroom_design.ini", customchar);
 | 
					        "chat_arrow", "courtroom_design.ini", customchar);
 | 
				
			||||||
    if (design_ini_result.width < 0 || design_ini_result.height < 0) {
 | 
					    if (design_ini_result.width < 0 || design_ini_result.height < 0) {
 | 
				
			||||||
@ -2604,7 +2610,6 @@ void Courtroom::initialize_chatbox()
 | 
				
			|||||||
      ui_vp_chat_arrow->combo_resize(design_ini_result.width,
 | 
					      ui_vp_chat_arrow->combo_resize(design_ini_result.width,
 | 
				
			||||||
                                      design_ini_result.height);
 | 
					                                      design_ini_result.height);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pos_size_type default_width = ao_app->get_element_dimensions(
 | 
					    pos_size_type default_width = ao_app->get_element_dimensions(
 | 
				
			||||||
        "showname", "courtroom_design.ini", customchar);
 | 
					        "showname", "courtroom_design.ini", customchar);
 | 
				
			||||||
@ -2719,7 +2724,7 @@ void Courtroom::handle_ic_speaking()
 | 
				
			|||||||
      filename = "prosecution_speedlines";
 | 
					      filename = "prosecution_speedlines";
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
      filename = "defense_speedlines";
 | 
					      filename = "defense_speedlines";
 | 
				
			||||||
    ui_vp_speedlines->load_image(filename, m_chatmessage[CHAR_NAME]);
 | 
					    ui_vp_speedlines->load_image(filename, m_chatmessage[CHAR_NAME], ao_app->get_char_shouts(m_chatmessage[CHAR_NAME]));
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Check if this is a talking color (white text, etc.)
 | 
					  // Check if this is a talking color (white text, etc.)
 | 
				
			||||||
@ -3308,12 +3313,14 @@ void Courtroom::chat_tick()
 | 
				
			|||||||
      f_char = m_chatmessage[CHAR_NAME];
 | 
					      f_char = m_chatmessage[CHAR_NAME];
 | 
				
			||||||
      f_custom_theme = ao_app->get_chat(f_char);
 | 
					      f_custom_theme = ao_app->get_chat(f_char);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    ui_vp_chat_arrow->load_image("chat_arrow",f_custom_theme); // Chat stopped being processed, indicate that.
 | 
					    ui_vp_chat_arrow->transform_mode = ao_app->get_misc_scaling(f_custom_theme);
 | 
				
			||||||
 | 
					    ui_vp_chat_arrow->load_image("chat_arrow", f_custom_theme); // Chat stopped being processed, indicate that.
 | 
				
			||||||
    additive_previous =
 | 
					    additive_previous =
 | 
				
			||||||
        additive_previous +
 | 
					        additive_previous +
 | 
				
			||||||
        filter_ic_text(f_message, true, -1, m_chatmessage[TEXT_COLOR].toInt());
 | 
					        filter_ic_text(f_message, true, -1, m_chatmessage[TEXT_COLOR].toInt());
 | 
				
			||||||
	  QString f_message_filtered = filter_ic_text(f_message, true, -1, m_chatmessage[TEXT_COLOR].toInt());
 | 
						  QString f_message_filtered = filter_ic_text(f_message, true, -1, m_chatmessage[TEXT_COLOR].toInt());
 | 
				
			||||||
    for (int c = 0; c < max_colors; ++c) {
 | 
					    for (int c = 0; c < max_colors; ++c) {
 | 
				
			||||||
 | 
					      additive_previous = additive_previous.replace("$c" + QString::number(c), char_color_rgb_list.at(c).name(QColor::HexRgb));
 | 
				
			||||||
      f_message_filtered = f_message_filtered.replace("$c" + QString::number(c), char_color_rgb_list.at(c).name(QColor::HexRgb));
 | 
					      f_message_filtered = f_message_filtered.replace("$c" + QString::number(c), char_color_rgb_list.at(c).name(QColor::HexRgb));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    additive_previous = additive_previous + f_message_filtered;
 | 
					    additive_previous = additive_previous + f_message_filtered;
 | 
				
			||||||
@ -3448,6 +3455,7 @@ void Courtroom::chat_tick()
 | 
				
			|||||||
    // Do the colors, gradual showing, etc. in here
 | 
					    // Do the colors, gradual showing, etc. in here
 | 
				
			||||||
    QString f_message_filtered = filter_ic_text(f_message, true, tick_pos, m_chatmessage[TEXT_COLOR].toInt());
 | 
					    QString f_message_filtered = filter_ic_text(f_message, true, tick_pos, m_chatmessage[TEXT_COLOR].toInt());
 | 
				
			||||||
    for (int c = 0; c < max_colors; ++c) {
 | 
					    for (int c = 0; c < max_colors; ++c) {
 | 
				
			||||||
 | 
					      additive_previous = additive_previous.replace("$c" + QString::number(c), char_color_rgb_list.at(c).name(QColor::HexRgb));
 | 
				
			||||||
      f_message_filtered = f_message_filtered.replace("$c" + QString::number(c), char_color_rgb_list.at(c).name(QColor::HexRgb));
 | 
					      f_message_filtered = f_message_filtered.replace("$c" + QString::number(c), char_color_rgb_list.at(c).name(QColor::HexRgb));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    ui_vp_message->setHtml(additive_previous + f_message_filtered);
 | 
					    ui_vp_message->setHtml(additive_previous + f_message_filtered);
 | 
				
			||||||
@ -3772,6 +3780,7 @@ void Courtroom::handle_song(QStringList *p_contents)
 | 
				
			|||||||
void Courtroom::handle_wtce(QString p_wtce, int variant)
 | 
					void Courtroom::handle_wtce(QString p_wtce, int variant)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  QString sfx_file = "courtroom_sounds.ini";
 | 
					  QString sfx_file = "courtroom_sounds.ini";
 | 
				
			||||||
 | 
					  QString bg_misc = ao_app->read_design_ini("misc", ao_app->get_background_path("design.ini"));
 | 
				
			||||||
  QString sfx_name;
 | 
					  QString sfx_name;
 | 
				
			||||||
  QString filename;
 | 
					  QString filename;
 | 
				
			||||||
  ui_vp_wtce->set_static_duration(wtce_static_time);
 | 
					  ui_vp_wtce->set_static_duration(wtce_static_time);
 | 
				
			||||||
@ -3780,7 +3789,7 @@ void Courtroom::handle_wtce(QString p_wtce, int variant)
 | 
				
			|||||||
  if (p_wtce == "testimony1") {
 | 
					  if (p_wtce == "testimony1") {
 | 
				
			||||||
    sfx_name = "witness_testimony";
 | 
					    sfx_name = "witness_testimony";
 | 
				
			||||||
    filename = "witnesstestimony";
 | 
					    filename = "witnesstestimony";
 | 
				
			||||||
    ui_vp_testimony->load_image("testimony", "");
 | 
					    ui_vp_testimony->load_image("testimony", "", bg_misc);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  // cross examination
 | 
					  // cross examination
 | 
				
			||||||
  else if (p_wtce == "testimony2") {
 | 
					  else if (p_wtce == "testimony2") {
 | 
				
			||||||
@ -3802,7 +3811,6 @@ void Courtroom::handle_wtce(QString p_wtce, int variant)
 | 
				
			|||||||
      ui_vp_testimony->stop();
 | 
					      ui_vp_testimony->stop();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  QString bg_misc = ao_app->read_design_ini("misc", ao_app->get_background_path("design.ini"));
 | 
					 | 
				
			||||||
  sfx_player->play(ao_app->get_sfx(sfx_name, bg_misc));
 | 
					  sfx_player->play(ao_app->get_sfx(sfx_name, bg_misc));
 | 
				
			||||||
  ui_vp_wtce->load_image(filename, "", bg_misc);
 | 
					  ui_vp_wtce->load_image(filename, "", bg_misc);
 | 
				
			||||||
  ui_vp_wtce->set_play_once(true);
 | 
					  ui_vp_wtce->set_play_once(true);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user