aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Skoland <davidskoland@gmail.com>2017-02-15 15:32:20 +0100
committerDavid Skoland <davidskoland@gmail.com>2017-02-15 15:32:20 +0100
commitbe017b727831826257ea8d4c34bd8d33138cd5c0 (patch)
treed50c3b59f580142540ce54eb1286c6782ad304bc
parentf7db8fa64aae47f2945e0d3c9344f6fac4534b57 (diff)
fixed all known bugs + improved preanims(probably)
-rw-r--r--Attorney_Online_remake.pro2
-rw-r--r--aoapplication.h3
-rw-r--r--aoblipplayer.cpp2
-rw-r--r--aocharmovie.cpp20
-rw-r--r--aocharmovie.h4
-rw-r--r--aoimage.cpp5
-rw-r--r--courtroom.cpp45
-rw-r--r--courtroom.h1
-rw-r--r--text_file_functions.cpp9
9 files changed, 66 insertions, 25 deletions
diff --git a/Attorney_Online_remake.pro b/Attorney_Online_remake.pro
index 3e701283..a102252a 100644
--- a/Attorney_Online_remake.pro
+++ b/Attorney_Online_remake.pro
@@ -13,7 +13,7 @@ RC_ICONS = logo.ico
TARGET = Attorney_Online_remake
TEMPLATE = app
-VERSION = 2.1.3.0
+VERSION = 2.1.4.0
SOURCES += main.cpp\
lobby.cpp \
diff --git a/aoapplication.h b/aoapplication.h
index 4db6e454..2f06970d 100644
--- a/aoapplication.h
+++ b/aoapplication.h
@@ -103,6 +103,7 @@ public:
QString get_showname(QString p_char);
QString get_chat(QString p_char);
int get_preanim_duration(QString p_char, QString p_emote);
+ int get_ao2_preanim_duration(QString p_char, QString p_emote);
int get_text_delay(QString p_char, QString p_emote);
QString get_char_name(QString p_char);
int get_emote_number(QString p_char);
@@ -117,7 +118,7 @@ public:
private:
const int RELEASE = 2;
const int MAJOR_VERSION = 1;
- const int MINOR_VERSION = 3;
+ const int MINOR_VERSION = 4;
QString user_theme = "default";
diff --git a/aoblipplayer.cpp b/aoblipplayer.cpp
index 27e73a33..9c6a0b11 100644
--- a/aoblipplayer.cpp
+++ b/aoblipplayer.cpp
@@ -12,7 +12,7 @@ AOBlipPlayer::AOBlipPlayer(QWidget *parent, AOApplication *p_ao_app)
void AOBlipPlayer::set_blips(QString p_sfx)
{
- QString f_path = ao_app->get_sounds_path() + p_sfx;
+ QString f_path = ao_app->get_sounds_path() + p_sfx.toLower();
for (int n_stream = 0 ; n_stream < 5 ; ++n_stream)
{
diff --git a/aocharmovie.cpp b/aocharmovie.cpp
index db584fa8..f4aac9ca 100644
--- a/aocharmovie.cpp
+++ b/aocharmovie.cpp
@@ -19,7 +19,8 @@ AOCharMovie::AOCharMovie(QWidget *p_parent, AOApplication *p_ao_app) : QLabel(p_
this->setMovie(m_movie);
connect(m_movie, SIGNAL(frameChanged(int)), this, SLOT(frame_change(int)));
- connect(preanim_timer, SIGNAL(timeout()), this, SLOT(preanim_done()));
+ connect(m_movie, SIGNAL(finished()), this, SLOT(movie_done()));
+ connect(preanim_timer, SIGNAL(timeout()), this, SLOT(timer_done()));
}
void AOCharMovie::play(QString p_char, QString p_emote, QString emote_prefix)
@@ -63,8 +64,15 @@ void AOCharMovie::play(QString p_char, QString p_emote, QString emote_prefix)
void AOCharMovie::play_pre(QString p_char, QString p_emote, int duration)
{
+ if (duration == 0)
+ play_once = true;
+
+ else
+ {
+ play_once = false;
+ preanim_timer->start(duration);
+ }
play(p_char, p_emote, "");
- preanim_timer->start(duration);
}
void AOCharMovie::play_talking(QString p_char, QString p_emote)
@@ -95,9 +103,15 @@ void AOCharMovie::frame_change(int n_frame)
{
if (m_flipped && flipped_movie.size() > n_frame)
this->setPixmap(QPixmap::fromImage(flipped_movie.at(n_frame)));
+
+ if (m_movie->frameCount() - 1 == n_frame && play_once)
+ {
+ delay(m_movie->nextFrameDelay());
+ done();
+ }
}
-void AOCharMovie::preanim_done()
+void AOCharMovie::timer_done()
{
done();
}
diff --git a/aocharmovie.h b/aocharmovie.h
index bd9acd68..2f9cbbcb 100644
--- a/aocharmovie.h
+++ b/aocharmovie.h
@@ -34,12 +34,14 @@ private:
bool m_flipped = false;
+ bool play_once = true;
+
signals:
void done();
private slots:
void frame_change(int n_frame);
- void preanim_done();
+ void timer_done();
};
#endif // AOCHARMOVIE_H
diff --git a/aoimage.cpp b/aoimage.cpp
index a623332a..f523e4ea 100644
--- a/aoimage.cpp
+++ b/aoimage.cpp
@@ -50,5 +50,8 @@ void AOImage::set_scaled_image(QString p_image)
QPixmap f_pixmap(final_image_path);
- this->setPixmap(f_pixmap.scaled(this->width(), this->height()));
+ qDebug() << "aoimage width" << this->width();
+ qDebug() << "aoimage height" << this->height();
+
+ this->setPixmap(f_pixmap.scaled(this->width(), this->height(), Qt::IgnoreAspectRatio));
}
diff --git a/courtroom.cpp b/courtroom.cpp
index 1b48b475..942fbe8e 100644
--- a/courtroom.cpp
+++ b/courtroom.cpp
@@ -43,6 +43,8 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
music_player->set_volume(0);
sfx_player = new AOSfxPlayer(this, ao_app);
sfx_player->set_volume(0);
+ objection_player = new AOSfxPlayer(this, ao_app);
+ sfx_player->set_volume(0);
blip_player = new AOBlipPlayer(this, ao_app);
blip_player->set_volume(0);
@@ -57,17 +59,18 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
ui_vp_player_char = new AOCharMovie(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_chatbox = new AOImage(ui_viewport, ao_app);
+ 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);
+ ui_vp_objection = new AOMovie(ui_viewport, ao_app);
+
+ ui_vp_chatbox = new AOImage(this, ao_app);
ui_vp_showname = new QLabel(ui_vp_chatbox);
ui_vp_message = new QPlainTextEdit(ui_vp_chatbox);
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);
- ui_vp_objection = new AOMovie(ui_viewport, ao_app);
ui_ic_chatlog = new QPlainTextEdit(this);
ui_ic_chatlog->setReadOnly(true);
@@ -378,6 +381,7 @@ void Courtroom::set_widgets()
"color: white;");
set_size_and_pos(ui_vp_message, "message");
+ ui_vp_message->setTextInteractionFlags(Qt::NoTextInteraction);
#if (defined (_WIN32) || defined (_WIN64))
ui_vp_message->setFont(pt_10);
#else
@@ -408,14 +412,14 @@ void Courtroom::set_widgets()
#else
ui_ic_chatlog->setFont(pt_9);
#endif
- ui_ic_chatlog->setStyleSheet("background-color: rgba(0, 0, 0, 0);"
- "color: white;");
+ ui_ic_chatlog->setStyleSheet("QPlainTextEdit{ background-color: rgba(0, 0, 0, 0);"
+ "color: white; }");
set_size_and_pos(ui_ms_chatlog, "ms_chatlog");
- ui_ms_chatlog->setStyleSheet("background-color: rgba(0, 0, 0, 0);");
+ ui_ms_chatlog->setStyleSheet("QPlainTextEdit{ background-color: rgba(0, 0, 0, 0); }");
set_size_and_pos(ui_server_chatlog, "server_chatlog");
- ui_server_chatlog->setStyleSheet("background-color: rgba(0, 0, 0, 0);");
+ ui_server_chatlog->setStyleSheet("QPlainTextEdit{ background-color: rgba(0, 0, 0, 0); }");
set_size_and_pos(ui_mute_list, "mute_list");
ui_mute_list->hide();
@@ -601,6 +605,7 @@ void Courtroom::done_received()
music_player->set_volume(0);
sfx_player->set_volume(0);
+ objection_player->set_volume(0);
blip_player->set_volume(0);
set_char_select_page();
@@ -747,6 +752,7 @@ void Courtroom::enter_courtroom(int p_cid)
music_player->set_volume(ui_music_slider->value());
sfx_player->set_volume(ui_sfx_slider->value());
+ objection_player->set_volume(ui_sfx_slider->value());
blip_player->set_volume(ui_blip_slider->value());
testimony_in_progress = false;
@@ -954,7 +960,7 @@ void Courtroom::handle_chatmessage(QStringList *p_contents)
if (mute_map.value(m_chatmessage[CHAR_NAME]))
return;
- QString f_showname = ao_app->get_showname(m_chatmessage[CHAR_NAME]);
+ QString f_showname = ao_app->get_showname(char_list.at(m_chatmessage[CHAR_ID].toInt()).name);
QString f_message = f_showname + ": " + m_chatmessage[MESSAGE] + '\n';
@@ -992,20 +998,20 @@ void Courtroom::handle_chatmessage(QStringList *p_contents)
{
case 1:
ui_vp_objection->play("holdit");
- sfx_player->play("holdit.wav", m_chatmessage[CHAR_NAME]);
+ objection_player->play("holdit.wav", m_chatmessage[CHAR_NAME]);
break;
case 2:
ui_vp_objection->play("objection");
- sfx_player->play("objection.wav", m_chatmessage[CHAR_NAME]);
+ objection_player->play("objection.wav", m_chatmessage[CHAR_NAME]);
break;
case 3:
ui_vp_objection->play("takethat");
- sfx_player->play("takethat.wav", m_chatmessage[CHAR_NAME]);
+ objection_player->play("takethat.wav", m_chatmessage[CHAR_NAME]);
break;
//case 4 is AO2 only
case 4:
ui_vp_objection->play("custom", m_chatmessage[CHAR_NAME]);
- sfx_player->play("custom.wav", m_chatmessage[CHAR_NAME]);
+ objection_player->play("custom.wav", m_chatmessage[CHAR_NAME]);
break;
default:
qDebug() << "W: Logic error in objection switch statement!";
@@ -1030,7 +1036,7 @@ void Courtroom::handle_chatmessage_2()
ui_vp_speedlines->stop();
ui_vp_player_char->stop();
- QString f_showname = ao_app->get_showname(m_chatmessage[CHAR_NAME]);
+ QString f_showname = ao_app->get_showname(char_list.at(m_chatmessage[CHAR_ID].toInt()).name);
ui_vp_showname->setText(f_showname);
@@ -1157,14 +1163,15 @@ void Courtroom::play_preanim()
QString f_char = m_chatmessage[CHAR_NAME];
QString f_preanim = m_chatmessage[PRE_EMOTE];
- if (!file_exists(ao_app->get_character_path(f_char) + ".gif"))
+ if (!file_exists(ao_app->get_character_path(f_char) + f_preanim.toLower() + ".gif"))
{
preanim_done();
+ qDebug() << "could not find " + ao_app->get_character_path(f_char) + f_preanim + ".gif";
return;
}
//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 preanim_duration = ao_app->get_ao2_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;
@@ -1720,6 +1727,7 @@ void Courtroom::on_music_slider_moved(int p_value)
void Courtroom::on_sfx_slider_moved(int p_value)
{
sfx_player->set_volume(p_value);
+ objection_player->set_volume(p_value);
ui_ic_chat_message->setFocus();
}
@@ -1753,6 +1761,7 @@ void Courtroom::on_change_character_clicked()
{
music_player->set_volume(0);
sfx_player->set_volume(0);
+ sfx_player->set_volume(0);
blip_player->set_volume(0);
ui_char_select_background->show();
@@ -1862,4 +1871,6 @@ Courtroom::~Courtroom()
{
delete music_player;
delete sfx_player;
+ delete objection_player;
+ delete blip_player;
}
diff --git a/courtroom.h b/courtroom.h
index 5d6b0cdd..4622ee0c 100644
--- a/courtroom.h
+++ b/courtroom.h
@@ -190,6 +190,7 @@ private:
AOMusicPlayer *music_player;
AOSfxPlayer *sfx_player;
+ AOSfxPlayer *objection_player;
AOBlipPlayer *blip_player;
AOSfxPlayer *modcall_player;
diff --git a/text_file_functions.cpp b/text_file_functions.cpp
index 0812dedd..bc8490da 100644
--- a/text_file_functions.cpp
+++ b/text_file_functions.cpp
@@ -247,6 +247,15 @@ int AOApplication::get_preanim_duration(QString p_char, QString p_emote)
else return f_result.toInt();
}
+int AOApplication::get_ao2_preanim_duration(QString p_char, QString p_emote)
+{
+ QString f_result = read_char_ini(p_char, "%" + p_emote, "[Time]", "[Emotions]");
+
+ if (f_result == "")
+ return 0;
+ else return f_result.toInt();
+}
+
int AOApplication::get_emote_number(QString p_char)
{
QString f_result = read_char_ini(p_char, "number", "[Emotions]", "[SoundN]");