diff --git a/Attorney_Online_remake.pro b/Attorney_Online_remake.pro index cc9579a4f..35c7aba48 100644 --- a/Attorney_Online_remake.pro +++ b/Attorney_Online_remake.pro @@ -88,7 +88,7 @@ HEADERS += lobby.h \ # in the same way as BASS. Discord RPC uses CMake, which does not play nicely with # QMake, so this step must be manual. unix:LIBS += -L$$PWD -lbass -ldiscord-rpc -win32:LIBS += -L$$PWD "$$PWD/bass.dll" -ldiscord-rpc #"$$PWD/discord-rpc.dll" +win32:LIBS += -L$$PWD "$$PWD/bass.lib" -ldiscord-rpc #"$$PWD/discord-rpc.dll" android:LIBS += -L$$PWD\android\libs\armeabi-v7a\ -lbass CONFIG += c++11 diff --git a/aoapplication.h b/aoapplication.h index 2a5c43698..0c9458229 100644 --- a/aoapplication.h +++ b/aoapplication.h @@ -150,6 +150,9 @@ class AOApplication : public QApplication //Returns the value of font_size with p_identifier from p_file int get_font_size(QString p_identifier, QString p_file); + //Returns the name of the font with p_identifier from p_file + QString get_font_name(QString p_identifier, QString p_file); + //Returns the color with p_identifier from p_file QColor get_color(QString p_identifier, QString p_file); diff --git a/aotextarea.cpp b/aotextarea.cpp index 40cc31480..38e293ce3 100644 --- a/aotextarea.cpp +++ b/aotextarea.cpp @@ -25,6 +25,8 @@ void AOTextArea::append_chatmessage(QString p_name, QString p_message) p_message += " "; QString result = p_message.toHtmlEscaped().replace("\n", "
").replace(omnis_dank_url_regex, "\\1" ); + qDebug() << "STRING IS: " << result; + this->insertHtml(result); this->auto_scroll(old_cursor, old_scrollbar_value, is_scrolled_down); diff --git a/courtroom.cpp b/courtroom.cpp index ca94f4349..29412fe3c 100644 --- a/courtroom.cpp +++ b/courtroom.cpp @@ -13,6 +13,7 @@ #include #include #include +#include Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() { @@ -66,6 +67,16 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() ui_vp_desk = new AOScene(ui_viewport, ao_app); ui_vp_legacy_desk = new AOScene(ui_viewport, ao_app); + ui_vp_music_display_a = new AOImage(this, ao_app); + ui_vp_music_display_b = new AOImage(this, ao_app); + ui_vp_music_area = new QWidget(ui_vp_music_display_a); + ui_vp_music_name = new QTextEdit(ui_vp_music_area); + ui_vp_music_name->setText("hewwo OwO"); + ui_vp_music_name->setFrameStyle(QFrame::NoFrame); + ui_vp_music_name->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + ui_vp_music_name->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + ui_vp_music_name->setReadOnly(true); + ui_vp_evidence_display = new AOEvidenceDisplay(this, ao_app); ui_vp_chatbox = new AOImage(this, ao_app); @@ -391,6 +402,18 @@ void Courtroom::set_widgets() set_size_and_pos(ui_vp_chatbox, "chatbox"); } + set_size_and_pos(ui_vp_music_area, "music_area"); + ui_vp_music_area->show(); + set_size_and_pos(ui_vp_music_name, "music_name"); + + set_size_and_pos(ui_vp_music_display_a, "music_display_a"); + ui_vp_music_display_a->set_image("music_display_a.png"); + ui_vp_music_display_a->show(); + + set_size_and_pos(ui_vp_music_display_b, "music_display_b"); + ui_vp_music_display_b->set_image("music_display_b.png"); + ui_vp_music_display_b->show(); + ui_ic_chat_message->setStyleSheet("QLineEdit{background-color: rgba(100, 100, 100, 255);}"); ui_vp_chatbox->set_image("chatmed.png"); @@ -541,6 +564,8 @@ void Courtroom::set_widgets() ui_char_select_right->set_image("arrow_right.png"); set_size_and_pos(ui_spectator, "spectator"); + + handle_music_anim(ui_vp_music_name, "music_name", "music_area"); } void Courtroom::set_fonts() @@ -551,6 +576,7 @@ void Courtroom::set_fonts() set_font(ui_ms_chatlog, "ms_chatlog"); set_font(ui_server_chatlog, "server_chatlog"); set_font(ui_music_list, "music_list"); + set_font(ui_vp_music_name, "music_name"); } void Courtroom::set_font(QWidget *widget, QString p_identifier) @@ -559,19 +585,47 @@ void Courtroom::set_font(QWidget *widget, QString p_identifier) int f_weight = ao_app->get_font_size(p_identifier, design_file); QString class_name = widget->metaObject()->className(); - widget->setFont(QFont("Sans", f_weight)); + QString font_name = ao_app->get_font_name("font_" + p_identifier, design_file); + + widget->setFont(QFont(font_name, f_weight)); QColor f_color = ao_app->get_color(p_identifier + "_color", design_file); + int bold = ao_app->get_font_size(p_identifier + "_bold", design_file); // is the font bold or not? + + QString is_bold = ""; + if(bold == 1) is_bold = "bold"; + QString style_sheet_string = class_name + " { background-color: rgba(0, 0, 0, 0);\n" + "color: rgba(" + QString::number(f_color.red()) + ", " + QString::number(f_color.green()) + ", " + - QString::number(f_color.blue()) + ", 255); }"; + QString::number(f_color.blue()) + ", 255);\n" + "font: " + is_bold + "; }"; widget->setStyleSheet(style_sheet_string); } +void Courtroom::handle_music_anim(QWidget *p_widget, QString p_identifier_a, QString p_identifier_b) +{ + QString file_a = "courtroom_design.ini"; + QString file_b = "courtroom_fonts.ini"; + pos_size_type res_a = ao_app->get_element_dimensions(p_identifier_a, file_a); + pos_size_type res_b = ao_app->get_element_dimensions(p_identifier_b, file_a); + int speed = ao_app->get_font_size(p_identifier_a + "_speed", file_b); + int nchar = ui_vp_music_name->toPlainText().size(); + + int time = nchar/speed*1000; + + QPropertyAnimation *animation = new QPropertyAnimation(p_widget, "geometry"); + animation->setLoopCount(-1); + animation->setDuration(time); + animation->setStartValue(QRect(-res_a.width + res_a.x, res_a.y, res_a.width, res_a.height)); + animation->setEndValue(QRect(res_b.width + res_a.x, res_a.y, res_a.width, res_a.height)); + + animation->start(); +} + void Courtroom::set_window_title(QString p_title) { this->setWindowTitle(p_title); @@ -923,6 +977,7 @@ void Courtroom::handle_chatmessage(QStringList *p_contents) for (int n_string = 0 ; n_string < chatmessage_size ; ++n_string) { m_chatmessage[n_string] = p_contents->at(n_string); +// qDebug() << "m_chatmessage[" << n_string << "] = " << m_chatmessage[n_string]; } int f_char_id = m_chatmessage[CHAR_ID].toInt(); @@ -1156,7 +1211,7 @@ void Courtroom::append_ic_text(QString p_text, QString p_name) normal.setFontWeight(QFont::Normal); const QTextCursor old_cursor = ui_ic_chatlog->textCursor(); const int old_scrollbar_value = ui_ic_chatlog->verticalScrollBar()->value(); - const bool is_scrolled_up = old_scrollbar_value == ui_ic_chatlog->verticalScrollBar()->minimum(); + const bool is_scrolled_up = old_scrollbar_value == ui_ic_chatlog->verticalScrollBar()->maximum(); ui_ic_chatlog->moveCursor(QTextCursor::Start); @@ -1173,7 +1228,7 @@ void Courtroom::append_ic_text(QString p_text, QString p_name) { // The user hasn't selected any text and the scrollbar is at the top: scroll to the top. ui_ic_chatlog->moveCursor(QTextCursor::Start); - ui_ic_chatlog->verticalScrollBar()->setValue(ui_ic_chatlog->verticalScrollBar()->minimum()); + ui_ic_chatlog->verticalScrollBar()->setValue(ui_ic_chatlog->verticalScrollBar()->maximum()); } } @@ -1535,6 +1590,11 @@ void Courtroom::handle_song(QStringList *p_contents) music_player->play(f_song); } } + + int pos = f_song.lastIndexOf(QChar('.')); + QString r_song = f_song.left(pos); + + ui_vp_music_name->setText(r_song); } void Courtroom::handle_wtce(QString p_wtce) diff --git a/courtroom.h b/courtroom.h index 85554a0e8..c4e679681 100644 --- a/courtroom.h +++ b/courtroom.h @@ -31,6 +31,7 @@ #include #include #include +#include class AOApplication; @@ -122,6 +123,9 @@ class Courtroom : public QMainWindow //takes in a list where the first element is the song name and the second is the char id of who played it void handle_song(QStringList *p_contents); + //animates music text + void handle_music_anim(QWidget *p_widget, QString p_identifier_a, QString p_identifier_b); + void play_preanim(); //plays the witness testimony or cross examination animation based on argument @@ -276,6 +280,11 @@ class Courtroom : public QMainWindow AOMovie *ui_vp_wtce; AOMovie *ui_vp_objection; + AOImage *ui_vp_music_display_a; + AOImage *ui_vp_music_display_b; + QTextEdit *ui_vp_music_name; + QWidget *ui_vp_music_area; + QTextEdit *ui_ic_chatlog; AOTextArea *ui_ms_chatlog; diff --git a/lobby.cpp b/lobby.cpp index 13ef55080..65104889e 100644 --- a/lobby.cpp +++ b/lobby.cpp @@ -12,7 +12,7 @@ Lobby::Lobby(AOApplication *p_ao_app) : QMainWindow() { ao_app = p_ao_app; - this->setWindowTitle("Attorney Online 2"); + this->setWindowTitle("Danganronpa Online"); ui_background = new AOImage(this, ao_app); ui_public_servers = new AOButton(this, ao_app); diff --git a/logo.ico b/logo.ico index b40e7866a..db9041a01 100644 Binary files a/logo.ico and b/logo.ico differ diff --git a/logo.png b/logo.png index f53fe30cf..824faaa92 100644 Binary files a/logo.png and b/logo.png differ diff --git a/packet_distribution.cpp b/packet_distribution.cpp index 3908ffa18..52ba92134 100644 --- a/packet_distribution.cpp +++ b/packet_distribution.cpp @@ -224,7 +224,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) courtroom_loaded = false; - QString window_title = "Attorney Online 2"; + QString window_title = "Danganronpa Online"; int selected_server = w_lobby->get_selected_server(); QString server_address = "", server_name = ""; diff --git a/text_file_functions.cpp b/text_file_functions.cpp index 90b10f53a..939c7d3d8 100644 --- a/text_file_functions.cpp +++ b/text_file_functions.cpp @@ -314,6 +314,26 @@ QColor AOApplication::get_color(QString p_identifier, QString p_file) return return_color; } +QString AOApplication::get_font_name(QString p_identifier, QString p_file) +{ + QString design_ini_path = get_theme_path() + p_file; + QString default_path = get_default_theme_path() + p_file; + QString f_result = read_design_ini(p_identifier, design_ini_path); + + if(f_result == "") + { + f_result = read_design_ini(p_identifier, default_path); + + if(f_result == "") + { + qDebug() << "Failure retreiving font name"; + return f_result; + } + } + + return f_result; +} + QString AOApplication::get_sfx(QString p_identifier) { QString design_ini_path = get_theme_path() + "courtroom_sounds.ini";