From 3c0cedbe922c9fcacd0d171423f83e375f66e178 Mon Sep 17 00:00:00 2001 From: iamgoofball Date: Fri, 18 Jan 2019 19:08:56 -0800 Subject: [PATCH 01/46] Add screenshake, frame-specific effects, looping SFX, and clientside music looping Committed by patch since Goof is currently banned on GitHub for no good reason. --- Attorney_Online.pro | 2 +- base/themes/default/courtroom_design.ini | 3 + base/themes/default/screenshake.png | Bin 0 -> 3507 bytes base/themes/default/screenshake_pressed.png | Bin 0 -> 3324 bytes include/aoapplication.h | 29 +- include/aocharmovie.h | 28 +- include/aomusicplayer.h | 18 +- include/aooptionsdialog.h | 4 + include/aosfxplayer.h | 10 +- include/courtroom.h | 23 +- include/datatypes.h | 7 +- src/aocharmovie.cpp | 294 +++++++++++--------- src/aomusicplayer.cpp | 44 ++- src/aooptionsdialog.cpp | 25 ++ src/aosfxplayer.cpp | 31 ++- src/courtroom.cpp | 271 +++++++++++++++++- src/packet_distribution.cpp | 3 + src/text_file_functions.cpp | 48 ++++ 18 files changed, 669 insertions(+), 171 deletions(-) create mode 100644 base/themes/default/screenshake.png create mode 100644 base/themes/default/screenshake_pressed.png diff --git a/Attorney_Online.pro b/Attorney_Online.pro index 39366c0..73d3534 100644 --- a/Attorney_Online.pro +++ b/Attorney_Online.pro @@ -11,7 +11,7 @@ OBJECTS_DIR = $$PWD/build MOC_DIR = $$PWD/build SOURCES += $$files($$PWD/src/*.cpp) -HEADERS += $$files($$PWD/include/*.h) +HEADERS += $$files($$PWD/include/*.h) $$PWD/include/aomusicplayer.h $$PWD/include/aosfxplayer.h LIBS += -L$$PWD/lib -lbass -ldiscord-rpc CONFIG += c++11 diff --git a/base/themes/default/courtroom_design.ini b/base/themes/default/courtroom_design.ini index 960d6e4..fe8fadf 100644 --- a/base/themes/default/courtroom_design.ini +++ b/base/themes/default/courtroom_design.ini @@ -132,6 +132,9 @@ call_mod = 104, 637, 64, 23 ; Mute button mute_button = 150, 515, 42, 42 +; Screenshake +screenshake = 51, 515, 42, 42 + ; Where the Mute list pops up when you click Mute mute_list = 280, 469, 210, 198 diff --git a/base/themes/default/screenshake.png b/base/themes/default/screenshake.png new file mode 100644 index 0000000000000000000000000000000000000000..5b71e3bc5b53454f483b7dec9bafc39ac9da3427 GIT binary patch literal 3507 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 xPs#eJ@sjuKkJKHNl+6k{Q-m3dsZ@*mIXZOQ-u literal 0 HcmV?d00001 diff --git a/base/themes/default/screenshake_pressed.png b/base/themes/default/screenshake_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..43e01c85f2c4098af8c7799c00d40e90c3260adf GIT binary patch literal 3324 zcmb_f2~-nV77aEkg4zg(925!BcCVzelQIDzVF{XmfmT}FDpeJTB&nE%O%w-E!3|kl zK+r)%#08xO#to1WZCu9%5p6{f6c@w|1vflXVQZaZJDxt1bE@iB{rB&?@BRD!J4p_Z z`V6ylv?P&8!^FNK8S$KAx-13}_cK-JLWsu@t?w^-63NQebeWN|vK>gI!C}gvU_-EE z7KGqxDvaWCj2flZ64oRV-#tnTBjK2VEXP8X8Uf|`iIWtv5*1M9vL&EIE5yQ-zA-v1 zFh&}L#DpU}l;ZA2=0`yUfEqKvjM?)62y z2`FI(gBGIEA|oTIkxVMC3#HL{JRS{X&=?GWumJSY8Uq{!X!PUy5JZ?B(J8eCC9WZx z5MeoPGzcgJ)1DC2+J0D#zBf%o!e~*jmPV(7rjWV~QKa8aYt*T_oudd1Q(>xT9qSGO^>r~w5|U#SsGI4|;4Srhq|~E5M)=kQkT60(fi=4^UuCHp^9kFxgB+9~*z2lBh{o^*O4E z6-pqoIZPgmuoZwS9b*C*%whmMCY?aUSRjWd=b;FLZc_dqp8HTdi1_rxrt5nv%M%Xm z9jTOVUnk9>a~K%HMFAF@%?3aPiw(dWItCytkS%A+Q8~;(`7~2e5fJ2_Q4cKb+y1+y z4*4oge4=|<1Y%43`H;KS4Z(=1Y6TR;Bv%Zj^nO-;Ww*X7FTLv{!!QE$8yfEMuE!OI zNLYt?gc3XZJ!L}sGyZxw;@j*o4hn)i1qZ+o4%2i@vH&^EWdaN?OF>8#WpP~DebIl( zzPGGE2<)%GzsSBfIY=0+3B`y;K%@Nic)qW8dWe2Cp3jeo|7$$mYVDC4?Y~vnJ@;9= z=#w7t`TZlqH+7fqio$tw_sOr_6jy4fzYR(l^|XAJvxOZ3 zj;dj8ejf)rv}C_~o~aM_LR14mK`mcS-#NutR(BOdV8!}ire}C_uwt7lv#j$ z$EcDOHO6H1?cgn5$L9amUY2WUZJrPv8+-A_jp=t!x;HkGXZTqNLCLwMrU8Z5$E2sH z+pRluFNu@a!9T1XT?Ot9TEbt}5l=4JmYvC+UUgJ)xcrP;v5#t&MT5e0LsUUY4O{bf5QZW~%P!{T2pEjyzY zt`CAF*0Geja3L>i{|43U1$D{Zd1IWMUOxFb_1*oS5*ufwkzm&{I78Nz@c3N%#Dg!p zK6HjO*VfkFxcO_vgHwiV@M%%=)}3*x4e9MO!?O5+k=*PHKHIl#Kbe&Ax^%(}oy$gR zIX}9jOFTI9NRz!_L3wlKjk>zvMT@2rrmYwgAh& zk@V@^{U0-CMnAiA>`ZgD`{wiIaPkbly<^6t#-&&Nb7bc;Al3Kg zxVCYLjiSJ77e3~+Gnveli;c#dRYCSOjM2PyTd^b|=M?8mz1n^h?boB*ye&M+7Z%70 z4Yjwz52bET^Bo_bk>;1b_W9rfn zpo?0*`YIGt=us*QjeG9YKwC6=w3x(O5@@s9Qb4)Fa#V_0=h07X&UcQw&1CRuD33oZ zps0g)zm4)DoDFm)~9%>rjye%tK0b-Q&Os{Uf6n5b8}^hxl1yni*bC7D#C1XX|7|F z2ib*+iz?<#Y&LRY6LNyo030Ge7zVS(^uxY8)g1Qhh_S%ut zufBP-toH8UAIDmoyQGZm@-97oHLFu_Sp7rd>eiUk&E;JF{-Vx!Yx&#PyIXB)`0rw4 z%=gtg?j_Z%ADWL_Ps)Gqv;0GP%#P~Qr_H(egvp!viicFDVEf;XE;}o|$F3_nlU#i; zFx7o8t>aYT;wOXajL9MjQA5*cRqICGR#jZIO|HBqiyzIUng#5yeLv_L=x}yd+Y5e* z?%2ia*X@Y%w6bEpU6GVAU;+NoB_b;7EjB*(a{HvsenfSTw{fviTEAZITxaA#kmK}o zxhWMx8agL$z0llJW9wJ=vWyxx{G-3&&fDkK#xXv2mIGDGN+O@d*<6~7RWD5(zUh*} zi#V?q{r*Oh8&J74+q~q#?CPbWhpQa4E%`s&mQ#;FM)sRG>FOf #include #include +#include +#include "include/aosfxplayer.h" +#include "include/courtroom.h" + class AOApplication; - class AOCharMovie : public QLabel { Q_OBJECT @@ -22,25 +25,41 @@ public: void play_idle(QString p_char, QString p_emote); void set_flipped(bool p_flipped) {m_flipped = p_flipped;} - + void LoadImageWithStupidMethodForFlipSupport(QImage image); void stop(); void move(int ax, int ay); - void combo_resize(int w, int h); + void play_frame_sfx(); + void sfx_two_network_boogaloo(); + void screenshake_two_network_boogaloo(); + void realization_two_network_boogaloo(); + + AOSfxPlayer *frame_specific_sfx_player; + Courtroom *mycourtroom; + QString frame_sfx_hellstring = ""; + QString frame_screenshake_hellstring = ""; + QString frame_realization_hellstring = ""; + bool use_networked_framehell = false; private: AOApplication *ao_app; QMovie *m_movie; QVector movie_frames; QTimer *preanim_timer; + QTimer *ticker; + QString last_path; + QString current_emote; + QString current_char; const int time_mod = 62; // These are the X and Y values before they are fixed based on the sprite's width. int x = 0; int y = 0; + int default_w; + int default_h; bool m_flipped = false; @@ -50,8 +69,7 @@ signals: void done(); private slots: - void frame_change(int n_frame); void timer_done(); + void movie_ticker(); }; - #endif // AOCHARMOVIE_H diff --git a/include/aomusicplayer.h b/include/aomusicplayer.h index 560a7f9..54f3b5f 100644 --- a/include/aomusicplayer.h +++ b/include/aomusicplayer.h @@ -7,22 +7,32 @@ #include #include #include +#include +#include -class AOMusicPlayer +class AOMusicPlayer : public QObject { + Q_OBJECT public: AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app); - ~AOMusicPlayer(); - + virtual ~AOMusicPlayer(); void play(QString p_song); void set_volume(int p_value); + void kill_loop(); + QString get_path(); + private: QWidget *m_parent; AOApplication *ao_app; - + QTimer *music_loop_timer; int m_volume = 0; + QString f_path; + HSTREAM m_stream; + +private slots: + void restart_loop(); }; #endif // AOMUSICPLAYER_H diff --git a/include/aooptionsdialog.h b/include/aooptionsdialog.h index a65e3f5..03b1e71 100644 --- a/include/aooptionsdialog.h +++ b/include/aooptionsdialog.h @@ -80,6 +80,10 @@ private: QLabel *ui_bliprate_lbl; QCheckBox *ui_blank_blips_cb; QLabel *ui_blank_blips_lbl; + QLabel *ui_loopsfx_lbl; + QCheckBox *ui_loopsfx_cb; + QLabel *ui_objectmusic_lbl; + QCheckBox *ui_objectmusic_cb; QDialogButtonBox *ui_settings_buttons; QWidget *ui_casing_tab; diff --git a/include/aosfxplayer.h b/include/aosfxplayer.h index 30cbe9d..5c6f108 100644 --- a/include/aosfxplayer.h +++ b/include/aosfxplayer.h @@ -7,22 +7,28 @@ #include #include #include +#include -class AOSfxPlayer +class AOSfxPlayer : public QObject { + Q_OBJECT public: AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app); void play(QString p_sfx, QString p_char = "", QString shout = ""); void stop(); void set_volume(int p_volume); - + void setLooping(bool is_looping); private: QWidget *m_parent; AOApplication *ao_app; + QTimer *sfx_loop_timer; int m_volume = 0; + bool looping_sfx = false; HSTREAM m_stream; +private slots: + void restart_loop(); }; #endif // AOSFXPLAYER_H diff --git a/include/courtroom.h b/include/courtroom.h index ec9f9ef..3f93e4c 100644 --- a/include/courtroom.h +++ b/include/courtroom.h @@ -25,6 +25,7 @@ #include "datatypes.h" #include "debug_functions.h" #include "chatlogpiece.h" +#include "aocharmovie.h" #include #include @@ -48,11 +49,15 @@ #include #include #include +#include +#include +#include +#include #include class AOApplication; - +class AOCharMovie; class Courtroom : public QMainWindow { Q_OBJECT @@ -63,7 +68,6 @@ public: void append_evidence(evi_type p_evi){evidence_list.append(p_evi);} void append_music(QString f_music){music_list.append(f_music);} void append_area(QString f_area){area_list.append(f_area);} - void fix_last_area() { if (area_list.size() > 0) @@ -210,6 +214,8 @@ public: void announce_case(QString title, bool def, bool pro, bool jud, bool jur, bool steno); void check_connection_received(); + void doScreenShake(); + void doRealization(); ~Courtroom(); @@ -227,7 +233,10 @@ private: bool first_message_sent = false; int maximumMessages = 0; - + QPropertyAnimation *screenshake_animation; + QPropertyAnimation *chatbox_screenshake_animation; + QParallelAnimationGroup *screenshake_group; + QImageReader *frame_emote_checker; // This is for inline message-colouring. enum INLINE_COLOURS { @@ -318,7 +327,7 @@ private: //every time point in char.inis times this equals the final time const int time_mod = 40; - static const int chatmessage_size = 23; + static const int chatmessage_size = 28; QString m_chatmessage[chatmessage_size]; bool chatmessage_is_empty = false; @@ -352,6 +361,7 @@ private: int objection_state = 0; int realization_state = 0; + int screenshake_state = 0; int text_color = 0; bool is_presenting_evidence = false; @@ -390,6 +400,9 @@ private: AOMusicPlayer *music_player; AOSfxPlayer *sfx_player; + AOSfxPlayer *misc_sfx_player; + AOSfxPlayer *frame_emote_sfx_player; + AOSfxPlayer *pair_frame_emote_sfx_player; AOSfxPlayer *objection_player; AOBlipPlayer *blip_player; @@ -478,6 +491,7 @@ private: AOButton *ui_custom_objection; AOButton *ui_realization; + AOButton *ui_screenshake; AOButton *ui_mute; AOButton *ui_defense_plus; @@ -605,6 +619,7 @@ private slots: void on_custom_objection_clicked(); void on_realization_clicked(); + void on_screenshake_clicked(); void on_mute_clicked(); void on_pair_clicked(); diff --git a/include/datatypes.h b/include/datatypes.h index aaa5de5..1b76f72 100644 --- a/include/datatypes.h +++ b/include/datatypes.h @@ -100,7 +100,12 @@ enum CHAT_MESSAGE SELF_OFFSET, OTHER_OFFSET, OTHER_FLIP, - NONINTERRUPTING_PRE + NONINTERRUPTING_PRE, + LOOPING_SFX, + SCREENSHAKE, + FRAME_SCREENSHAKE, + FRAME_REALIZATION, + FRAME_SFX }; enum COLOR diff --git a/src/aocharmovie.cpp b/src/aocharmovie.cpp index 5748723..a5beefb 100644 --- a/src/aocharmovie.cpp +++ b/src/aocharmovie.cpp @@ -7,25 +7,26 @@ AOCharMovie::AOCharMovie(QWidget *p_parent, AOApplication *p_ao_app) : QLabel(p_parent) { ao_app = p_ao_app; - m_movie = new QMovie(this); - preanim_timer = new QTimer(this); + ticker = new QTimer(this); preanim_timer->setSingleShot(true); - - connect(m_movie, SIGNAL(frameChanged(int)), this, SLOT(frame_change(int))); + ticker->setSingleShot(true); + connect(ticker, SIGNAL(timeout()), this, SLOT(movie_ticker())); connect(preanim_timer, SIGNAL(timeout()), this, SLOT(timer_done())); + this->setUpdatesEnabled(true); } void AOCharMovie::play(QString p_char, QString p_emote, QString emote_prefix) { QString original_path = ao_app->get_character_path(p_char, emote_prefix + p_emote + ".gif"); - QString alt_path = ao_app->get_character_path(p_char, p_emote + ".png"); + QString alt_path = ao_app->get_character_path(p_char, emote_prefix + p_emote + ".png"); QString apng_path = ao_app->get_character_path(p_char, emote_prefix + p_emote + ".apng"); QString placeholder_path = ao_app->get_theme_path("placeholder.gif"); QString placeholder_default_path = ao_app->get_default_theme_path("placeholder.gif"); QString gif_path; - + current_emote = emote_prefix + p_emote; + current_char = p_char; if (file_exists(apng_path)) gif_path = apng_path; else if (file_exists(original_path)) @@ -36,138 +37,128 @@ void AOCharMovie::play(QString p_char, QString p_emote, QString emote_prefix) gif_path = placeholder_path; else gif_path = placeholder_default_path; - - m_movie->stop(); - m_movie->setFileName(gif_path); - - QImageReader *reader = new QImageReader(gif_path); - - movie_frames.clear(); - QImage f_image = reader->read(); - while (!f_image.isNull()) - { - if (m_flipped) - movie_frames.append(f_image.mirrored(true, false)); - else - movie_frames.append(f_image); - f_image = reader->read(); - } - - delete reader; - - this->show(); - m_movie->start(); -} - -void AOCharMovie::play_pre(QString p_char, QString p_emote, int duration) -{ - QString gif_path = ao_app->get_character_path(p_char, p_emote); - + delete m_movie; + m_movie = new QMovie(this); m_movie->stop(); this->clear(); m_movie->setFileName(gif_path); m_movie->jumpToFrame(0); + this->LoadImageWithStupidMethodForFlipSupport(m_movie->currentImage()); + qDebug() << "playing file path: " << gif_path; + this->show(); + this->play_frame_sfx(); + ticker->start(m_movie->nextFrameDelay()); +} - int full_duration = duration * time_mod; - int real_duration = 0; - - play_once = false; - - for (int n_frame = 0 ; n_frame < m_movie->frameCount() ; ++n_frame) +void AOCharMovie::play_frame_sfx() +{ + int current_frame = m_movie->currentFrameNumber(); + QString sfx_to_play = ao_app->get_frame_sfx_name(current_char, current_emote, current_frame); + QString screenshake_to_play = ao_app->get_screenshake_frame(current_char, current_emote, current_frame); + QString realization_to_play = ao_app->get_realization_frame(current_char, current_emote, current_frame); + if(sfx_to_play != "" && !use_networked_framehell) { - real_duration += m_movie->nextFrameDelay(); - m_movie->jumpToFrame(n_frame + 1); + frame_specific_sfx_player->play(ao_app->get_sfx_suffix(sfx_to_play)); } - -#ifdef DEBUG_GIF - qDebug() << "full_duration: " << full_duration; - qDebug() << "real_duration: " << real_duration; -#endif - - double percentage_modifier = 100.0; - - if (real_duration != 0 && duration != 0) + else if(use_networked_framehell) { - double modifier = full_duration / static_cast(real_duration); - percentage_modifier = 100 / modifier; - - if (percentage_modifier > 100.0) - percentage_modifier = 100.0; + this->sfx_two_network_boogaloo(); } - -#ifdef DEBUG_GIF - qDebug() << "% mod: " << percentage_modifier; -#endif - - if (full_duration == 0 || full_duration >= real_duration) + if(screenshake_to_play != "" && !use_networked_framehell) { - play_once = true; + mycourtroom->doScreenShake(); } - else + else if(use_networked_framehell) { - play_once = false; - preanim_timer->start(full_duration); + this->screenshake_two_network_boogaloo(); } - - - m_movie->setSpeed(static_cast(percentage_modifier)); - play(p_char, p_emote, ""); -} - -void AOCharMovie::play_talking(QString p_char, QString p_emote) -{ - QString gif_path = ao_app->get_character_path(p_char, "(b)" + p_emote); - - m_movie->stop(); - this->clear(); - m_movie->setFileName(gif_path); - - play_once = false; - m_movie->setSpeed(100); - play(p_char, p_emote, "(b)"); -} - -void AOCharMovie::play_idle(QString p_char, QString p_emote) -{ - QString gif_path = ao_app->get_character_path(p_char, "(a)" + p_emote); - - m_movie->stop(); - this->clear(); - m_movie->setFileName(gif_path); - - play_once = false; - m_movie->setSpeed(100); - play(p_char, p_emote, "(a)"); -} - -void AOCharMovie::stop() -{ - //for all intents and purposes, stopping is the same as hiding. at no point do we want a frozen gif to display - m_movie->stop(); - preanim_timer->stop(); - this->hide(); -} - -void AOCharMovie::combo_resize(int w, int h) -{ - QSize f_size(w, h); - this->resize(f_size); - m_movie->setScaledSize(f_size); -} - -void AOCharMovie::move(int ax, int ay) -{ - x = ax; - y = ay; - QLabel::move(x, y); -} - -void AOCharMovie::frame_change(int n_frame) -{ - - if (movie_frames.size() > n_frame) + if(realization_to_play != "" && !use_networked_framehell) { - QPixmap f_pixmap = QPixmap::fromImage(movie_frames.at(n_frame)); + mycourtroom->doRealization(); + } + else if(use_networked_framehell) + { + this->realization_two_network_boogaloo(); + } +} + +void AOCharMovie::realization_two_network_boogaloo() +{ + int current_frame = m_movie->currentFrameNumber(); + QStringList fucking_garbage = this->frame_realization_hellstring.split("^"); + for (int i = 0; i < fucking_garbage.length(); i++) { + QString fucking_christ = fucking_garbage.at(i); + QStringList extra_garbage = fucking_christ.split("|"); + if(extra_garbage.at(0) != current_emote){ + continue; + } + for (int ii = 1; ii < extra_garbage.length(); ii++) { + QString levels_of_garbage = extra_garbage.at(ii); + QStringList that_shouldnt_be_possible = levels_of_garbage.split("="); + if(that_shouldnt_be_possible.at(0).toInt() == current_frame && that_shouldnt_be_possible.at(1) != "") { + mycourtroom->doRealization(); + } + } + } +} + +void AOCharMovie::screenshake_two_network_boogaloo() +{ + int current_frame = m_movie->currentFrameNumber(); + QStringList fucking_garbage = this->frame_screenshake_hellstring.split("^"); + for (int i = 0; i < fucking_garbage.length(); i++) { + QString fucking_christ = fucking_garbage.at(i); + QStringList extra_garbage = fucking_christ.split("|"); + if(extra_garbage.at(0) != current_emote){ + continue; + } + for (int ii = 1; ii < extra_garbage.length(); ii++) { + QString levels_of_garbage = extra_garbage.at(ii); + QStringList that_shouldnt_be_possible = levels_of_garbage.split("="); + if(that_shouldnt_be_possible.at(0).toInt() == current_frame && that_shouldnt_be_possible.at(1) != "") { + mycourtroom->doScreenShake(); + } + } + } +} + +void AOCharMovie::sfx_two_network_boogaloo() +{ + int current_frame = m_movie->currentFrameNumber(); + QStringList fucking_garbage = this->frame_sfx_hellstring.split("^"); + for (int i = 0; i < fucking_garbage.length(); i++) { + QString fucking_christ = fucking_garbage.at(i); + QStringList extra_garbage = fucking_christ.split("|"); + if(extra_garbage.at(0) != current_emote){ + continue; + } + for (int ii = 1; ii < extra_garbage.length(); ii++) { + QString levels_of_garbage = extra_garbage.at(ii); + QStringList that_shouldnt_be_possible = levels_of_garbage.split("="); + if(that_shouldnt_be_possible.at(0).toInt() == current_frame && that_shouldnt_be_possible.at(1) != "") { + frame_specific_sfx_player->play(ao_app->get_sfx_suffix(that_shouldnt_be_possible.at(1))); + } + } + } +} + + +void AOCharMovie::movie_ticker() +{ + m_movie->jumpToNextFrame(); + this->LoadImageWithStupidMethodForFlipSupport(m_movie->currentImage()); // imagine if QT had sane stuff like "mirror on QMovie" or "resize the image on QT" or "interface with the current QMovie image" or anything else + // ps: fuck private functions/variables as a concept, freedom 2 do dangerous things 5ever + this->play_frame_sfx(); + ticker->start(m_movie->nextFrameDelay()); +} + +void AOCharMovie::LoadImageWithStupidMethodForFlipSupport(QImage image) +{ + QPixmap f_pixmap; + if(m_flipped) // imagine if QT wasn't handicapped harder than people who think MLP is good + f_pixmap = QPixmap::fromImage(image.mirrored(true, false)); + else + f_pixmap = QPixmap::fromImage(image); auto aspect_ratio = Qt::KeepAspectRatio; if (f_pixmap.size().width() > f_pixmap.size().height()) @@ -179,17 +170,62 @@ void AOCharMovie::frame_change(int n_frame) this->setPixmap(f_pixmap.scaled(this->width(), this->height(), aspect_ratio, Qt::FastTransformation)); QLabel::move(x + (this->width() - this->pixmap()->width())/2, y); - } +} - if (m_movie->frameCount() - 1 == n_frame && play_once) +void AOCharMovie::play_pre(QString p_char, QString p_emote, int duration) +{ + QString gif_path = ao_app->get_character_path(p_char, p_emote); + + m_movie->stop(); + m_movie->setFileName(gif_path); + m_movie->jumpToFrame(0); + int real_duration = 0; + for (int n_frame = 0 ; n_frame < m_movie->frameCount() ; ++n_frame) { - preanim_timer->start(m_movie->nextFrameDelay()); - m_movie->stop(); + qDebug() << "frame " << n_frame << " delay of " << m_movie->nextFrameDelay(); + real_duration += m_movie->nextFrameDelay(); + m_movie->jumpToFrame(n_frame + 1); } + play_once = true; + preanim_timer->start(real_duration); + play(p_char, p_emote, ""); +} + +void AOCharMovie::play_talking(QString p_char, QString p_emote) +{ + play_once = false; + play(p_char, p_emote, "(b)"); +} + +void AOCharMovie::play_idle(QString p_char, QString p_emote) +{ + play_once = false; + play(p_char, p_emote, "(a)"); +} + +void AOCharMovie::stop() +{ + //for all intents and purposes, stopping is the same as hiding. at no point do we want a frozen gif to display + m_movie->stop(); + preanim_timer->stop(); + frame_specific_sfx_player->stop(); + this->hide(); +} + +void AOCharMovie::combo_resize(int w, int h) +{ + QSize f_size(w, h); + this->resize(f_size); + m_movie->setScaledSize(this->size()); +} +void AOCharMovie::move(int ax, int ay) +{ + x = ax; + y = ay; + QLabel::move(x, y); } void AOCharMovie::timer_done() { - done(); } diff --git a/src/aomusicplayer.cpp b/src/aomusicplayer.cpp index 997d82d..a52603c 100644 --- a/src/aomusicplayer.cpp +++ b/src/aomusicplayer.cpp @@ -1,21 +1,25 @@ #include "aomusicplayer.h" -AOMusicPlayer::AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app) + +AOMusicPlayer::AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app): QObject() { m_parent = parent; ao_app = p_ao_app; + music_loop_timer = new QTimer(this); + music_loop_timer->setSingleShot(true); + connect(music_loop_timer, SIGNAL(timeout()), this, SLOT(restart_loop())); } AOMusicPlayer::~AOMusicPlayer() { - BASS_ChannelStop(m_stream); + kill_loop(); } void AOMusicPlayer::play(QString p_song) { BASS_ChannelStop(m_stream); - QString f_path = ao_app->get_music_path(p_song); + f_path = ao_app->get_music_path(p_song); m_stream = BASS_StreamCreateFile(FALSE, f_path.utf16(), 0, 0, BASS_STREAM_AUTOFREE | BASS_UNICODE | BASS_ASYNCFILE); @@ -24,6 +28,15 @@ void AOMusicPlayer::play(QString p_song) if (ao_app->get_audio_output_device() != "default") BASS_ChannelSetDevice(m_stream, BASS_GetDevice()); BASS_ChannelPlay(m_stream, false); + music_loop_timer->stop(); + QWORD len=BASS_ChannelGetLength(m_stream, BASS_POS_BYTE); // the length in bytes + double time=BASS_ChannelBytes2Seconds(m_stream, len); // the length in seconds + if(time > 0) + { + qDebug() << "Will loop in " << time << " seconds."; + music_loop_timer->start(time*1000); + } + } void AOMusicPlayer::set_volume(int p_value) @@ -32,3 +45,28 @@ void AOMusicPlayer::set_volume(int p_value) float volume = m_volume / 100.0f; BASS_ChannelSetAttribute(m_stream, BASS_ATTRIB_VOL, volume); } + +QString AOMusicPlayer::get_path() +{ + return f_path; +} + +void AOMusicPlayer::restart_loop() +{ + qDebug() << "Restarting Music"; + /* + m_stream = BASS_StreamCreateFile(FALSE, f_path.utf16(), 0, 0, BASS_STREAM_AUTOFREE | BASS_UNICODE | BASS_ASYNCFILE); + if (ao_app->get_audio_output_device() != "default") + BASS_ChannelSetDevice(m_stream, BASS_GetDevice());*/ + QWORD len=BASS_ChannelGetLength(m_stream, BASS_POS_BYTE); // the length in bytes + double time=BASS_ChannelBytes2Seconds(m_stream, len); // the length in seconds + music_loop_timer->start(time*1000); + BASS_ChannelPlay(m_stream, true); +} + +void AOMusicPlayer::kill_loop() +{ + music_loop_timer->stop(); + BASS_ChannelStop(m_stream); +} + diff --git a/src/aooptionsdialog.cpp b/src/aooptionsdialog.cpp index cd69c76..4d0e479 100644 --- a/src/aooptionsdialog.cpp +++ b/src/aooptionsdialog.cpp @@ -312,6 +312,29 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDi ui_audio_layout->setWidget(7, QFormLayout::FieldRole, ui_blank_blips_cb); + ui_loopsfx_lbl = new QLabel(ui_audio_widget); + ui_loopsfx_lbl->setText(tr("Enable Looping SFX:")); + ui_loopsfx_lbl->setToolTip(tr("If true, the game will allow looping sound effects to play on preanimations.")); + + ui_audio_layout->setWidget(8, QFormLayout::LabelRole, ui_loopsfx_lbl); + + ui_loopsfx_cb = new QCheckBox(ui_audio_widget); + ui_loopsfx_cb->setChecked(p_ao_app->get_looping_sfx()); + + ui_audio_layout->setWidget(8, QFormLayout::FieldRole, ui_loopsfx_cb); + + + ui_objectmusic_lbl = new QLabel(ui_audio_widget); + ui_objectmusic_lbl->setText(tr("Kill Music On Objection:")); + ui_objectmusic_lbl->setToolTip(tr("If true, the game will stop music when someone objects, like in the actual games.")); + + ui_audio_layout->setWidget(9, QFormLayout::LabelRole, ui_objectmusic_lbl); + + ui_objectmusic_cb = new QCheckBox(ui_audio_widget); + ui_objectmusic_cb->setChecked(p_ao_app->get_objectmusic()); + + ui_audio_layout->setWidget(9, QFormLayout::FieldRole, ui_objectmusic_cb); + // The casing tab! ui_casing_tab = new QWidget(); ui_settings_tabs->addTab(ui_casing_tab, tr("Casing")); @@ -483,6 +506,8 @@ void AOOptionsDialog::save_pressed() configini->setValue("default_blip", ui_blips_volume_spinbox->value()); configini->setValue("blip_rate", ui_bliprate_spinbox->value()); configini->setValue("blank_blip", ui_blank_blips_cb->isChecked()); + configini->setValue("looping_sfx", ui_loopsfx_cb->isChecked()); + configini->setValue("kill_music_on_object", ui_objectmusic_cb->isChecked()); configini->setValue("casing_enabled", ui_casing_enabled_cb->isChecked()); configini->setValue("casing_defence_enabled", ui_casing_def_cb->isChecked()); diff --git a/src/aosfxplayer.cpp b/src/aosfxplayer.cpp index 7fe7987..e219c03 100644 --- a/src/aosfxplayer.cpp +++ b/src/aosfxplayer.cpp @@ -1,10 +1,13 @@ #include "aosfxplayer.h" #include "file_functions.h" -AOSfxPlayer::AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app) +AOSfxPlayer::AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app): QObject() { m_parent = parent; ao_app = p_ao_app; + sfx_loop_timer = new QTimer(this); + sfx_loop_timer->setSingleShot(true); + connect(sfx_loop_timer, SIGNAL(timeout()), this, SLOT(restart_loop())); } void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout) @@ -28,7 +31,7 @@ void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout) f_path = misc_path; else f_path = sound_path; - + BASS_ChannelStop(m_stream); m_stream = BASS_StreamCreateFile(FALSE, f_path.utf16(), 0, 0, BASS_STREAM_AUTOFREE | BASS_UNICODE | BASS_ASYNCFILE); set_volume(m_volume); @@ -36,11 +39,35 @@ void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout) if (ao_app->get_audio_output_device() != "default") BASS_ChannelSetDevice(m_stream, BASS_GetDevice()); BASS_ChannelPlay(m_stream, false); + sfx_loop_timer->stop(); + QWORD len=BASS_ChannelGetLength(m_stream, BASS_POS_BYTE); // the length in bytes + double time=BASS_ChannelBytes2Seconds(m_stream, len); // the length in seconds + if(time > 0 && looping_sfx && ao_app->get_looping_sfx()) + { + sfx_loop_timer->start(time*1000); + } +} + +void AOSfxPlayer::setLooping(bool is_looping) +{ + this->looping_sfx = is_looping; } void AOSfxPlayer::stop() { BASS_ChannelStop(m_stream); + sfx_loop_timer->stop(); +} + +void AOSfxPlayer::restart_loop() +{ + if(ao_app->get_looping_sfx() && looping_sfx) + { + QWORD len=BASS_ChannelGetLength(m_stream, BASS_POS_BYTE); // the length in bytes + double time=BASS_ChannelBytes2Seconds(m_stream, len); // the length in seconds + sfx_loop_timer->start(time*1000); + BASS_ChannelPlay(m_stream, true); + } } void AOSfxPlayer::set_volume(int p_value) diff --git a/src/courtroom.cpp b/src/courtroom.cpp index be7629b..ab387da 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -56,7 +56,13 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() sfx_player = new AOSfxPlayer(this, ao_app); sfx_player->set_volume(0); objection_player = new AOSfxPlayer(this, ao_app); - sfx_player->set_volume(0); + objection_player->set_volume(0); + misc_sfx_player = new AOSfxPlayer(this, ao_app); + misc_sfx_player->set_volume(0); + frame_emote_sfx_player = new AOSfxPlayer(this, ao_app); + frame_emote_sfx_player->set_volume(0); + pair_frame_emote_sfx_player = new AOSfxPlayer(this, ao_app); // todo: recode pair // todo: recode fucking everything + pair_frame_emote_sfx_player->set_volume(0); blip_player = new AOBlipPlayer(this, ao_app); blip_player->set_volume(0); @@ -70,7 +76,11 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() ui_vp_speedlines = new AOMovie(ui_viewport, ao_app); ui_vp_speedlines->set_play_once(false); ui_vp_player_char = new AOCharMovie(ui_viewport, ao_app); + ui_vp_player_char->frame_specific_sfx_player = frame_emote_sfx_player; + ui_vp_player_char->mycourtroom = this; ui_vp_sideplayer_char = new AOCharMovie(ui_viewport, ao_app); + ui_vp_sideplayer_char->frame_specific_sfx_player = pair_frame_emote_sfx_player; + ui_vp_sideplayer_char->mycourtroom = this; ui_vp_sideplayer_char->hide(); ui_vp_desk = new AOScene(ui_viewport, ao_app); ui_vp_legacy_desk = new AOScene(ui_viewport, ao_app); @@ -200,6 +210,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() ui_custom_objection = new AOButton(this, ao_app); ui_realization = new AOButton(this, ao_app); + ui_screenshake = new AOButton(this, ao_app); ui_mute = new AOButton(this, ao_app); ui_defense_plus = new AOButton(this, ao_app); @@ -284,7 +295,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() connect(ui_custom_objection, SIGNAL(clicked()), this, SLOT(on_custom_objection_clicked())); connect(ui_realization, SIGNAL(clicked()), this, SLOT(on_realization_clicked())); - + connect(ui_screenshake, SIGNAL(clicked()), this, SLOT(on_screenshake_clicked())); connect(ui_mute, SIGNAL(clicked()), this, SLOT(on_mute_clicked())); connect(ui_defense_minus, SIGNAL(clicked()), this, SLOT(on_defense_minus_clicked())); @@ -622,6 +633,9 @@ void Courtroom::set_widgets() set_size_and_pos(ui_realization, "realization"); ui_realization->set_image("realization.png"); + set_size_and_pos(ui_screenshake, "screenshake"); + ui_screenshake->set_image("screenshake.png"); + set_size_and_pos(ui_mute, "mute_button"); ui_mute->set_image("mute.png"); @@ -909,6 +923,9 @@ 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()); + misc_sfx_player->set_volume(ui_sfx_slider->value()); + frame_emote_sfx_player->set_volume(ui_sfx_slider->value()); + pair_frame_emote_sfx_player->set_volume(ui_sfx_slider->value()); blip_player->set_volume(ui_blip_slider->value()); testimony_in_progress = false; @@ -1227,7 +1244,126 @@ void Courtroom::on_chat_return_pressed() packet_contents.append("0"); } } + // If the server we're on supports Looping SFX and Screenshake, use it if the emote uses it. + if (ao_app->looping_sfx_support_enabled) + { + packet_contents.append(ao_app->get_sfx_looping(current_char, current_emote)); + qDebug() << "Are we looping this? " << ao_app->get_sfx_looping(current_char, current_emote); + packet_contents.append(QString::number(screenshake_state)); + qDebug() << "Are we screen shaking this one? " << screenshake_state; + QString frame_screenshake = ""; + QString frame_realization = ""; + QString frame_sfx = ""; + + QString preemote_sfx = ""; + QString preemote_shake = ""; + QString preemote_flash = ""; + + QString talkemote_sfx = ""; + QString talkemote_shake = ""; + QString talkemote_flash = ""; + + QString idleemote_sfx = ""; + QString idleemote_shake = ""; + QString idleemote_flash = ""; + + QString preemote = ao_app->get_image_suffix(ao_app->get_character_path(current_char, ao_app->get_pre_emote(current_char, current_emote))); + QString talkemote_to_check = ao_app->get_image_suffix(ao_app->get_character_path(current_char, "(b)" + ao_app->get_emote(current_char, current_emote))); + QString idleemote_to_check = ao_app->get_image_suffix(ao_app->get_character_path(current_char, "(a)" + ao_app->get_emote(current_char, current_emote))); + frame_emote_checker = new QImageReader(preemote); + preemote_sfx += ao_app->get_pre_emote(current_char, current_emote); + preemote_shake += ao_app->get_pre_emote(current_char, current_emote); + preemote_flash += ao_app->get_pre_emote(current_char, current_emote); + for (int i = 0; i < frame_emote_checker->imageCount(); i++) { + QString sfx_to_play = ao_app->get_frame_sfx_name(current_char, ao_app->get_pre_emote(current_char, current_emote), i); + QString screenshake_to_play = ao_app->get_screenshake_frame(current_char, ao_app->get_pre_emote(current_char, current_emote), i); + QString realization_to_play = ao_app->get_realization_frame(current_char, ao_app->get_pre_emote(current_char, current_emote), i); + if(sfx_to_play != "") + { + preemote_sfx += "|" + QString::number(i) + "=" + sfx_to_play; + } + if(screenshake_to_play != "") + { + preemote_shake += "|" + QString::number(i) + "=" + screenshake_to_play; + } + if(realization_to_play != "") + { + preemote_flash += "|" + QString::number(i) + "=" + realization_to_play; + } + } + preemote_sfx += "^"; + preemote_shake += "^"; + preemote_flash += "^"; + delete frame_emote_checker; + talkemote_sfx += "(b)" + ao_app->get_emote(current_char, current_emote); + talkemote_shake += "(b)" + ao_app->get_emote(current_char, current_emote); + talkemote_flash += "(b)" + ao_app->get_emote(current_char, current_emote); + frame_emote_checker = new QImageReader(talkemote_to_check); + for (int i = 0; i < frame_emote_checker->imageCount(); i++) { + QString sfx_to_play = ao_app->get_frame_sfx_name(current_char, "(b)" + ao_app->get_emote(current_char, current_emote), i); + QString screenshake_to_play = ao_app->get_screenshake_frame(current_char, "(b)" + ao_app->get_emote(current_char, current_emote), i); + QString realization_to_play = ao_app->get_realization_frame(current_char, "(b)" + ao_app->get_emote(current_char, current_emote), i); + if(sfx_to_play != "") + { + talkemote_sfx += "|" + QString::number(i) + "=" + sfx_to_play; + } + if(screenshake_to_play != "") + { + talkemote_shake += "|" + QString::number(i) + "=" + screenshake_to_play; + } + if(realization_to_play != "") + { + talkemote_flash += "|" + QString::number(i) + "=" + realization_to_play; + } + } + talkemote_sfx += "^"; + talkemote_shake += "^"; + talkemote_flash += "^"; + delete frame_emote_checker; + idleemote_sfx += "(a)" + ao_app->get_emote(current_char, current_emote); + idleemote_shake += "(a)" + ao_app->get_emote(current_char, current_emote); + idleemote_flash += "(a)" + ao_app->get_emote(current_char, current_emote); + frame_emote_checker = new QImageReader(idleemote_to_check); + for (int i = 0; i < frame_emote_checker->imageCount(); i++) { + QString sfx_to_play = ao_app->get_frame_sfx_name(current_char, "(a)" + ao_app->get_emote(current_char, current_emote), i); + QString screenshake_to_play = ao_app->get_screenshake_frame(current_char, "(a)" + ao_app->get_emote(current_char, current_emote), i); + QString realization_to_play = ao_app->get_realization_frame(current_char, "(a)" + ao_app->get_emote(current_char, current_emote), i); + if(sfx_to_play != "") + { + idleemote_sfx += "|" + QString::number(i) + "=" + sfx_to_play; + } + if(screenshake_to_play != "") + { + idleemote_shake += "|" + QString::number(i) + "=" + screenshake_to_play; + } + if(realization_to_play != "") + { + idleemote_flash += "|" + QString::number(i) + "=" + realization_to_play; + } + } + delete frame_emote_checker; + + frame_screenshake += preemote_shake; + frame_screenshake += talkemote_shake; + frame_screenshake += idleemote_shake; + + frame_realization += preemote_flash; + frame_realization += talkemote_flash; + frame_realization += idleemote_flash; + + frame_sfx += preemote_sfx; + frame_sfx += talkemote_sfx; + frame_sfx += idleemote_sfx; + qDebug() << "Final strings:"; + qDebug() << frame_screenshake; + qDebug() << frame_realization; + qDebug() << frame_sfx; + + packet_contents.append(frame_screenshake); + packet_contents.append(frame_realization); + packet_contents.append(frame_sfx); + } ao_app->send_server_packet(new AOPacket("MS", packet_contents)); } @@ -1296,6 +1432,7 @@ void Courtroom::handle_chatmessage(QStringList *p_contents) ui_ic_chat_message->clear(); objection_state = 0; realization_state = 0; + screenshake_state = 0; is_presenting_evidence = false; ui_pre->setChecked(false); ui_hold_it->set_image("holdit.png"); @@ -1303,6 +1440,7 @@ void Courtroom::handle_chatmessage(QStringList *p_contents) ui_take_that->set_image("takethat.png"); ui_custom_objection->set_image("custom.png"); ui_realization->set_image("realization.png"); + ui_screenshake->set_image("screenshake.png"); ui_evidence_present->set_image("present_disabled.png"); } @@ -1334,6 +1472,8 @@ void Courtroom::handle_chatmessage(QStringList *p_contents) case 2: ui_vp_objection->play("objection", f_char, f_custom_theme); objection_player->play("objection.wav", f_char, f_custom_theme); + if(ao_app->get_objectmusic()) + music_player->kill_loop(); break; case 3: ui_vp_objection->play("takethat", f_char, f_custom_theme); @@ -1366,7 +1506,10 @@ void Courtroom::handle_chatmessage_2() { ui_vp_speedlines->stop(); ui_vp_player_char->stop(); - + ui_vp_player_char->frame_sfx_hellstring = m_chatmessage[FRAME_SFX]; + ui_vp_player_char->frame_realization_hellstring = m_chatmessage[FRAME_REALIZATION]; + ui_vp_player_char->frame_screenshake_hellstring = m_chatmessage[FRAME_SCREENSHAKE]; + ui_vp_player_char->use_networked_framehell = true; if (m_chatmessage[SHOWNAME].isEmpty() || !ui_showname_enable->isChecked()) { QString real_name = char_list.at(m_chatmessage[CHAR_ID].toInt()).name; @@ -1548,6 +1691,7 @@ void Courtroom::handle_chatmessage_2() ui_vp_sideplayer_char->set_flipped(true); else ui_vp_sideplayer_char->set_flipped(false); + ui_vp_sideplayer_char->use_networked_framehell = false; ui_vp_sideplayer_char->play_idle(m_chatmessage[OTHER_NAME], m_chatmessage[OTHER_EMOTE]); } else @@ -1555,13 +1699,17 @@ void Courtroom::handle_chatmessage_2() // If the server understands other characters, but there // really is no second character, hide 'em, and center the first. ui_vp_sideplayer_char->hide(); + ui_vp_sideplayer_char->stop(); ui_vp_sideplayer_char->move(0,0); ui_vp_player_char->move(0,0); } } } - + if (m_chatmessage[SCREENSHAKE] == "1") + { + this->doScreenShake(); + } switch (emote_mod) { case 1: case 2: case 6: @@ -1578,6 +1726,53 @@ void Courtroom::handle_chatmessage_2() } } +void Courtroom::doScreenShake() +{ + screenshake_group = new QParallelAnimationGroup; + screenshake_animation = new QPropertyAnimation(ui_viewport, "pos", this); + chatbox_screenshake_animation = new QPropertyAnimation(ui_vp_chatbox, "pos", this); + int screen_x = ui_viewport->x(); + int screen_y = ui_viewport->y(); + QPoint pos_default = QPoint(screen_x, screen_y); + QPoint pos1 = QPoint(screen_x + 3, screen_y + -5); + QPoint pos2 = QPoint(screen_x + 3, screen_y + -5); + QPoint pos3 = QPoint(screen_x + -3, screen_y + 5); + QPoint pos4 = QPoint(screen_x + 3, screen_y + -5); + QPoint pos5 = QPoint(screen_x + -3,screen_y + -5); + + int chatbox_x = ui_vp_chatbox->x(); + int chatbox_y = ui_vp_chatbox->y(); + QPoint chatbox_pos_default = QPoint(chatbox_x, chatbox_y); + QPoint chatbox_pos1 = QPoint(chatbox_x + 3, chatbox_y + -5); + QPoint chatbox_pos2 = QPoint(chatbox_x + 3, chatbox_y + -5); + QPoint chatbox_pos3 = QPoint(chatbox_x + -3, chatbox_y + 5); + QPoint chatbox_pos4 = QPoint(chatbox_x + 3, chatbox_y + -5); + QPoint chatbox_pos5 = QPoint(chatbox_x + -3,chatbox_y + -5); + + screenshake_animation->setDuration(200); + screenshake_animation->setKeyValueAt(0, pos_default); + screenshake_animation->setKeyValueAt(0.1, pos1); + screenshake_animation->setKeyValueAt(0.3, pos2); + screenshake_animation->setKeyValueAt(0.5, pos3); + screenshake_animation->setKeyValueAt(0.7, pos4); + screenshake_animation->setKeyValueAt(0.9, pos5); + screenshake_animation->setEndValue(pos_default); + screenshake_animation->setEasingCurve(QEasingCurve::Linear); + chatbox_screenshake_animation->setDuration(200); + chatbox_screenshake_animation->setKeyValueAt(0, chatbox_pos_default); + chatbox_screenshake_animation->setKeyValueAt(0.1, chatbox_pos3); + chatbox_screenshake_animation->setKeyValueAt(0.3, chatbox_pos5); + chatbox_screenshake_animation->setKeyValueAt(0.5, chatbox_pos2); + chatbox_screenshake_animation->setKeyValueAt(0.7, chatbox_pos1); + chatbox_screenshake_animation->setKeyValueAt(0.9, chatbox_pos4); + chatbox_screenshake_animation->setEndValue(chatbox_pos_default); + chatbox_screenshake_animation->setEasingCurve(QEasingCurve::Linear); + + screenshake_group->addAnimation(screenshake_animation); + screenshake_group->addAnimation(chatbox_screenshake_animation); + screenshake_group->start(QAbstractAnimation::DeletionPolicy::DeleteWhenStopped); +} + void Courtroom::handle_chatmessage_3() { start_chat_ticking(); @@ -1709,6 +1904,17 @@ QString Courtroom::filter_ic_text(QString p_text) p_text.remove(trick_check_pos,1); } + else if (f_character == "$" and !ic_next_is_not_special) + { + p_text.remove(trick_check_pos,1); + } + + else if (f_character == "@" and !ic_next_is_not_special) + { + p_text.remove(trick_check_pos,1); + } + + // Orange inline colourisation. else if (f_character == "|" and !ic_next_is_not_special) { @@ -1919,14 +2125,14 @@ void Courtroom::play_preanim(bool noninterrupting) int ao2_duration = ao_app->get_ao2_preanim_duration(f_char, f_preanim); int text_delay = ao_app->get_text_delay(f_char, f_preanim) * time_mod; int sfx_delay = m_chatmessage[SFX_DELAY].toInt() * 60; - + bool looping_sfx = m_chatmessage[LOOPING_SFX] == "1"; int preanim_duration; if (ao2_duration < 0) preanim_duration = ao_app->get_preanim_duration(f_char, f_preanim); else preanim_duration = ao2_duration; - + sfx_player->setLooping(looping_sfx); sfx_delay_timer->start(sfx_delay); QString anim_to_find = ao_app->get_image_suffix(ao_app->get_character_path(f_char, f_preanim)); if (!file_exists(anim_to_find) || @@ -1942,7 +2148,6 @@ void Courtroom::play_preanim(bool noninterrupting) } ui_vp_player_char->play_pre(f_char, f_preanim, preanim_duration); - if (noninterrupting) anim_state = 4; else @@ -1966,6 +2171,13 @@ void Courtroom::realization_done() ui_vp_realization->hide(); } +void Courtroom::doRealization() +{ + realization_timer->start(60); + ui_vp_realization->show(); + +} + 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 @@ -1974,11 +2186,9 @@ void Courtroom::start_chat_ticking() if (m_chatmessage[REALIZATION] == "1") { - realization_timer->start(60); - ui_vp_realization->show(); - sfx_player->play(ao_app->get_custom_realization(m_chatmessage[CHAR_NAME])); + this->doRealization(); + misc_sfx_player->play(ao_app->get_custom_realization(m_chatmessage[CHAR_NAME])); } - ui_vp_message->clear(); set_text_color(); rainbow_counter = 0; @@ -2076,6 +2286,18 @@ void Courtroom::chat_tick() formatting_char = true; } + else if (f_character == "@" and !next_character_is_not_special) + { + this->doScreenShake(); + formatting_char = true; + } + + else if (f_character == "$" and !next_character_is_not_special) + { + this->doRealization(); + formatting_char = true; + } + // Orange inline colourisation. else if (f_character == "|" and !next_character_is_not_special) { @@ -2541,7 +2763,7 @@ void Courtroom::handle_wtce(QString p_wtce, int variant) //witness testimony if (p_wtce == "testimony1") { - sfx_player->play(ao_app->get_sfx("witness_testimony")); + misc_sfx_player->play(ao_app->get_sfx("witness_testimony")); ui_vp_wtce->play("witnesstestimony"); testimony_in_progress = true; show_testimony(); @@ -2549,7 +2771,7 @@ void Courtroom::handle_wtce(QString p_wtce, int variant) //cross examination else if (p_wtce == "testimony2") { - sfx_player->play(ao_app->get_sfx("cross_examination")); + misc_sfx_player->play(ao_app->get_sfx("cross_examination")); ui_vp_wtce->play("crossexamination"); testimony_in_progress = false; } @@ -2557,12 +2779,12 @@ void Courtroom::handle_wtce(QString p_wtce, int variant) { if (variant == 0) { - sfx_player->play(ao_app->get_sfx("not_guilty")); + misc_sfx_player->play(ao_app->get_sfx("not_guilty")); ui_vp_wtce->play("notguilty"); testimony_in_progress = false; } else if (variant == 1) { - sfx_player->play(ao_app->get_sfx("guilty")); + misc_sfx_player->play(ao_app->get_sfx("guilty")); ui_vp_wtce->play("guilty"); testimony_in_progress = false; } @@ -3140,6 +3362,22 @@ void Courtroom::on_realization_clicked() ui_ic_chat_message->setFocus(); } +void Courtroom::on_screenshake_clicked() +{ + if (screenshake_state == 0) + { + screenshake_state = 1; + ui_screenshake->set_image("screenshake_pressed.png"); + } + else + { + screenshake_state = 0; + ui_screenshake->set_image("screenshake.png"); + } + + ui_ic_chat_message->setFocus(); +} + void Courtroom::on_mute_clicked() { if (ui_mute_list->isHidden()) @@ -3223,6 +3461,9 @@ void Courtroom::on_sfx_slider_moved(int p_value) { sfx_player->set_volume(p_value); objection_player->set_volume(p_value); + misc_sfx_player->set_volume(p_value); + frame_emote_sfx_player->set_volume(p_value); + pair_frame_emote_sfx_player->set_volume(p_value); ui_ic_chat_message->setFocus(); } diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index 68d2fb9..f8adb12 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -151,6 +151,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) arup_enabled = false; casing_alerts_enabled = false; modcall_reason_enabled = false; + looping_sfx_support_enabled = false; //workaround for tsuserver4 if (f_contents.at(0) == "NOENCRYPT") @@ -209,6 +210,8 @@ void AOApplication::server_packet_received(AOPacket *p_packet) casing_alerts_enabled = true; if (f_packet.contains("modcall_reason",Qt::CaseInsensitive)) modcall_reason_enabled = true; + if (f_packet.contains("looping_sfx",Qt::CaseInsensitive)) + looping_sfx_support_enabled = true; w_lobby->enable_connect_button(); } diff --git a/src/text_file_functions.cpp b/src/text_file_functions.cpp index 1e920d7..e8cfeba 100644 --- a/src/text_file_functions.cpp +++ b/src/text_file_functions.cpp @@ -555,6 +555,42 @@ QString AOApplication::get_sfx_name(QString p_char, int p_emote) else return f_result; } +QString AOApplication::get_sfx_looping(QString p_char, int p_emote) +{ + QString f_result = read_char_ini(p_char, QString::number(p_emote + 1), "SoundL"); + + if (f_result == "") + return "0"; + else return f_result; +} + +QString AOApplication::get_frame_sfx_name(QString p_char, QString p_emote, int n_frame) +{ + QString f_result = read_char_ini(p_char, QString::number(n_frame), p_emote.append("_FrameSFX")); + if (f_result == "") + return ""; + else return f_result; +} + +QString AOApplication::get_screenshake_frame(QString p_char, QString p_emote, int n_frame) +{ + QString f_result = read_char_ini(p_char, QString::number(n_frame), p_emote.append("_FrameScreenshake")); + if (f_result == "") + return ""; + else return f_result; +} + + +QString AOApplication::get_realization_frame(QString p_char, QString p_emote, int n_frame) +{ + QString f_result = read_char_ini(p_char, QString::number(n_frame), p_emote.append("_FrameRealization")); + if (f_result == "") + return ""; + else return f_result; +} + + + int AOApplication::get_sfx_delay(QString p_char, int p_emote) { QString f_result = read_char_ini(p_char, QString::number(p_emote + 1), "SoundT"); @@ -588,6 +624,18 @@ bool AOApplication::get_blank_blip() return result.startsWith("true"); } +bool AOApplication::get_looping_sfx() +{ + QString result = configini->value("looping_sfx", "true").value(); + return result.startsWith("true"); +} + +bool AOApplication::get_objectmusic() +{ + QString result = configini->value("kill_music_on_object", "true").value(); + return result.startsWith("true"); +} + bool AOApplication::is_discord_enabled() { QString result = configini->value("discord", "true").value(); From 248444307ff7cbe87ec4fe4024073cddb999dabc Mon Sep 17 00:00:00 2001 From: iamgoofball Date: Fri, 18 Jan 2019 22:05:21 -0800 Subject: [PATCH 02/46] Fix bug with simultaneous shakes --- include/aoapplication.h | 2 +- include/courtroom.h | 2 +- src/courtroom.cpp | 26 ++++++++++++++++++++++---- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/include/aoapplication.h b/include/aoapplication.h index cff0afb..2ae1655 100644 --- a/include/aoapplication.h +++ b/include/aoapplication.h @@ -319,7 +319,7 @@ public: private: const int RELEASE = 2; const int MAJOR_VERSION = 7; - const int MINOR_VERSION = 0; + const int MINOR_VERSION = 1; QString current_theme = "default"; diff --git a/include/courtroom.h b/include/courtroom.h index 3f93e4c..7d2a551 100644 --- a/include/courtroom.h +++ b/include/courtroom.h @@ -124,7 +124,7 @@ public: //reads theme inis and sets size and pos based on the identifier void set_size_and_pos(QWidget *p_widget, QString p_identifier); - + QPoint get_theme_pos(QString p_identifier); //sets status as taken on character with cid n_char and places proper shading on charselect void set_taken(int n_char, bool p_taken); diff --git a/src/courtroom.cpp b/src/courtroom.cpp index ab387da..ce4ccf1 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -776,6 +776,24 @@ void Courtroom::set_size_and_pos(QWidget *p_widget, QString p_identifier) } } +QPoint Courtroom::get_theme_pos(QString p_identifier) +{ + QString filename = "courtroom_design.ini"; + + pos_size_type design_ini_result = ao_app->get_element_dimensions(p_identifier, filename); + + if (design_ini_result.width < 0 || design_ini_result.height < 0) + { + qDebug() << "W: could not find \"" << p_identifier << "\" in " << filename; + return QPoint(0,0); + } + else + { + return QPoint(design_ini_result.x, design_ini_result.y); + } +} + + void Courtroom::set_taken(int n_char, bool p_taken) { if (n_char >= char_list.size()) @@ -1731,8 +1749,8 @@ void Courtroom::doScreenShake() screenshake_group = new QParallelAnimationGroup; screenshake_animation = new QPropertyAnimation(ui_viewport, "pos", this); chatbox_screenshake_animation = new QPropertyAnimation(ui_vp_chatbox, "pos", this); - int screen_x = ui_viewport->x(); - int screen_y = ui_viewport->y(); + int screen_x = get_theme_pos("viewport").x(); + int screen_y = get_theme_pos("viewport").y(); QPoint pos_default = QPoint(screen_x, screen_y); QPoint pos1 = QPoint(screen_x + 3, screen_y + -5); QPoint pos2 = QPoint(screen_x + 3, screen_y + -5); @@ -1740,8 +1758,8 @@ void Courtroom::doScreenShake() QPoint pos4 = QPoint(screen_x + 3, screen_y + -5); QPoint pos5 = QPoint(screen_x + -3,screen_y + -5); - int chatbox_x = ui_vp_chatbox->x(); - int chatbox_y = ui_vp_chatbox->y(); + int chatbox_x = get_theme_pos("ao2_chatbox").x(); + int chatbox_y = get_theme_pos("ao2_chatbox").y(); QPoint chatbox_pos_default = QPoint(chatbox_x, chatbox_y); QPoint chatbox_pos1 = QPoint(chatbox_x + 3, chatbox_y + -5); QPoint chatbox_pos2 = QPoint(chatbox_x + 3, chatbox_y + -5); From c44832a707f655191e4337e3b3fc567ff02636eb Mon Sep 17 00:00:00 2001 From: iamgoofball Date: Sat, 19 Jan 2019 14:39:42 -0800 Subject: [PATCH 03/46] guard -> disable modcalls, bugfixes for guard button, etc. --- base/sounds/general/adminhelp.ogg | Bin 0 -> 17220 bytes base/themes/default/courtroom_design.ini | 2 +- base/themes/default/courtroom_sounds.ini | 2 +- src/courtroom.cpp | 15 ++++++++------- 4 files changed, 10 insertions(+), 9 deletions(-) create mode 100644 base/sounds/general/adminhelp.ogg diff --git a/base/sounds/general/adminhelp.ogg b/base/sounds/general/adminhelp.ogg new file mode 100644 index 0000000000000000000000000000000000000000..704c0fd6d20fa552c750f19f606847e2dff1beaf GIT binary patch literal 17220 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 literal 0 HcmV?d00001 diff --git a/base/themes/default/courtroom_design.ini b/base/themes/default/courtroom_design.ini index fe8fadf..f2dd2d7 100644 --- a/base/themes/default/courtroom_design.ini +++ b/base/themes/default/courtroom_design.ini @@ -107,7 +107,7 @@ pre = 5, 490, 80, 21 flip = 104, 490, 51, 21 ; Guard button -guard = 200, 560, 61, 21 +guard = 200, 580, 81, 21 pre_no_interrupt = 200, 490, 80, 21 diff --git a/base/themes/default/courtroom_sounds.ini b/base/themes/default/courtroom_sounds.ini index b24e2ce..050576e 100644 --- a/base/themes/default/courtroom_sounds.ini +++ b/base/themes/default/courtroom_sounds.ini @@ -3,6 +3,6 @@ witness_testimony = sfx-testimony2.wav cross_examination = sfx-testimony.wav evidence_present = sfx-evidenceshoop.wav word_call = sfx-gaspen-yeah!.wav -mod_call = sfx-gallery.wav +mod_call = adminhelp.ogg not_guilty = sfx-notguilty.wav guilty = sfx-guilty.wav \ No newline at end of file diff --git a/src/courtroom.cpp b/src/courtroom.cpp index ce4ccf1..da1b090 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -193,7 +193,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() ui_flip->setText("Flip"); ui_flip->hide(); ui_guard = new QCheckBox(this); - ui_guard->setText("Guard"); + ui_guard->setText("Disable Modcalls"); ui_guard->hide(); ui_casing = new QCheckBox(this); ui_casing->setChecked(ao_app->get_casing_enabled()); @@ -1085,6 +1085,12 @@ void Courtroom::append_server_chatmessage(QString p_name, QString p_message, QSt colour = ao_app->get_color("ooc_default_color", "courtroom_design.ini").name(); if (p_colour == "1") colour = ao_app->get_color("ooc_server_color", "courtroom_design.ini").name(); + qDebug() << p_message; + if(p_message == "Logged in as a moderator.") + { + ui_guard->show(); + append_server_chatmessage("CLIENT", "You were granted the Disable Modcalls button.", "1"); + } ui_server_chatlog->append_chatmessage(p_name, p_message, colour); } @@ -2855,7 +2861,7 @@ void Courtroom::toggle_judge_buttons(bool is_on) void Courtroom::mod_called(QString p_ip) { ui_server_chatlog->append(p_ip); - if (ui_guard->isChecked()) + if (!ui_guard->isChecked()) { modcall_player->play(ao_app->get_sfx("mod_call")); ao_app->alert(this); @@ -2897,11 +2903,6 @@ void Courtroom::on_ooc_return_pressed() toggle_judge_buttons(false); } } - else if (ooc_message.startsWith("/login")) - { - ui_guard->show(); - append_server_chatmessage("CLIENT", "You were granted the Guard button.", "1"); - } else if (ooc_message.startsWith("/rainbow") && ao_app->yellow_text_enabled && !rainbow_appended) { //ui_text_color->addItem("Rainbow"); From 10436992148e2342e6bd563d1acfb684f225aa30 Mon Sep 17 00:00:00 2001 From: iamgoofball Date: Sat, 19 Jan 2019 21:01:19 -0800 Subject: [PATCH 04/46] Suffix-independent Music, Mod Music List, looping bugfixes, easter eggs, etc. --- base/sounds/music/failed_login.opus | Bin 0 -> 396160 bytes include/aomusicplayer.h | 1 + include/courtroom.h | 10 +++---- src/aomusicplayer.cpp | 14 ++++++---- src/courtroom.cpp | 23 ++++++++++++++-- src/packet_distribution.cpp | 40 ++++++++++++---------------- src/path_functions.cpp | 23 +++++++++++++--- 7 files changed, 71 insertions(+), 40 deletions(-) create mode 100644 base/sounds/music/failed_login.opus diff --git a/base/sounds/music/failed_login.opus b/base/sounds/music/failed_login.opus new file mode 100644 index 0000000000000000000000000000000000000000..33532ee54fb3d4686b67bb8c05587916879761c0 GIT binary patch literal 396160 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 |niBBXC`Rp722;K@P}9a{G@I@c-s`6M-2=N- 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­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μDJV* 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 z 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

vY{EWse(*@2(A|HF=`;Gf?xtf#H_b1ZOC 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 X*DLP-_bW;u?(%)_wFv&dexv^ZT9FG> literal 0 HcmV?d00001 diff --git a/include/aomusicplayer.h b/include/aomusicplayer.h index 54f3b5f..24ea0c5 100644 --- a/include/aomusicplayer.h +++ b/include/aomusicplayer.h @@ -21,6 +21,7 @@ public: void kill_loop(); QString get_path(); + bool enable_looping = true; private: QWidget *m_parent; diff --git a/include/courtroom.h b/include/courtroom.h index 7d2a551..c76e4a1 100644 --- a/include/courtroom.h +++ b/include/courtroom.h @@ -68,14 +68,10 @@ public: void append_evidence(evi_type p_evi){evidence_list.append(p_evi);} void append_music(QString f_music){music_list.append(f_music);} void append_area(QString f_area){area_list.append(f_area);} - void fix_last_area() + void handle_failed_login(); + void reset_music_list() { - if (area_list.size() > 0) - { - QString malplaced = area_list.last(); - area_list.removeLast(); - append_music(malplaced); - } + music_list.clear(); } void arup_append(int players, QString status, QString cm, QString locked) diff --git a/src/aomusicplayer.cpp b/src/aomusicplayer.cpp index a52603c..2a35f0b 100644 --- a/src/aomusicplayer.cpp +++ b/src/aomusicplayer.cpp @@ -29,14 +29,18 @@ void AOMusicPlayer::play(QString p_song) BASS_ChannelSetDevice(m_stream, BASS_GetDevice()); BASS_ChannelPlay(m_stream, false); music_loop_timer->stop(); - QWORD len=BASS_ChannelGetLength(m_stream, BASS_POS_BYTE); // the length in bytes - double time=BASS_ChannelBytes2Seconds(m_stream, len); // the length in seconds - if(time > 0) + if(enable_looping) { - qDebug() << "Will loop in " << time << " seconds."; - music_loop_timer->start(time*1000); + QWORD len=BASS_ChannelGetLength(m_stream, BASS_POS_BYTE); // the length in bytes + double time=BASS_ChannelBytes2Seconds(m_stream, len); // the length in seconds + if(time > 0) + { + qDebug() << "Will loop in " << time << " seconds."; + music_loop_timer->start(time*1000); + } } + } void AOMusicPlayer::set_volume(int p_value) diff --git a/src/courtroom.cpp b/src/courtroom.cpp index da1b090..a097444 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -2761,9 +2761,22 @@ void Courtroom::handle_song(QStringList *p_contents) if (p_contents->length() > 2) { - str_show = p_contents->at(2); + if(p_contents->at(2) != "") + { + str_show = p_contents->at(2); + } + } + if (p_contents->length() > 3) + { + if(p_contents->at(3) != "-1") + { + music_player->enable_looping = false; + } + else + { + music_player->enable_looping = true; + } } - if (!mute_map.value(n_char)) { chatlogpiece* temp = new chatlogpiece(str_char, str_show, f_song, true); @@ -2780,6 +2793,12 @@ void Courtroom::handle_song(QStringList *p_contents) } } +void Courtroom::handle_failed_login() +{ + music_player->enable_looping = false; + music_player->play("failed_login"); +} + void Courtroom::handle_wtce(QString p_wtce, int variant) { QString sfx_file = "courtroom_sounds.ini"; diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index f8adb12..9ea2839 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -106,13 +106,6 @@ void AOApplication::ms_packet_received(AOPacket *p_packet) destruct_courtroom(); destruct_lobby(); } - else if (header == "DOOM") - { - call_notice("You have been exiled from AO." - "Have a nice day."); - destruct_courtroom(); - destruct_lobby(); - } end: @@ -398,16 +391,9 @@ void AOApplication::server_packet_received(AOPacket *p_packet) } else { - if (f_music.endsWith(".wav") || - f_music.endsWith(".mp3") || - f_music.endsWith(".mp4") || - f_music.endsWith(".ogg") || - f_music.endsWith(".opus")) + if (f_contents.at(n_element) == "===MUSIC START===.mp3") { musics_time = true; - areas--; - w_courtroom->fix_last_area(); - w_courtroom->append_music(f_music); } else { @@ -493,16 +479,9 @@ void AOApplication::server_packet_received(AOPacket *p_packet) } else { - if (f_contents.at(n_element).endsWith(".wav") || - f_contents.at(n_element).endsWith(".mp3") || - f_contents.at(n_element).endsWith(".mp4") || - f_contents.at(n_element).endsWith(".ogg") || - f_contents.at(n_element).endsWith(".opus")) + if (f_contents.at(n_element) == "===MUSIC START===.mp3") { musics_time = true; - w_courtroom->fix_last_area(); - w_courtroom->append_music(f_contents.at(n_element)); - areas--; } else { @@ -538,6 +517,16 @@ void AOApplication::server_packet_received(AOPacket *p_packet) destruct_lobby(); } + else if (header == "REFMUSIC") + { + if (courtroom_constructed) + w_courtroom->reset_music_list(); + for (int n_element = 0 ; n_element < f_contents.size() ; ++n_element) + { + w_courtroom->append_music(f_contents.at(n_element)); + } + w_courtroom->list_music(); + } else if (header == "BN") { if (f_contents.size() < 1) @@ -618,6 +607,11 @@ void AOApplication::server_packet_received(AOPacket *p_packet) } } } + else if (header == "FAILEDLOGIN") + { + if (courtroom_constructed) + w_courtroom->handle_failed_login(); + } else if (header == "IL") { if (courtroom_constructed && f_contents.size() > 0) diff --git a/src/path_functions.cpp b/src/path_functions.cpp index c51cfde..92ff765 100644 --- a/src/path_functions.cpp +++ b/src/path_functions.cpp @@ -94,11 +94,28 @@ QString AOApplication::get_sounds_path(QString p_file) QString AOApplication::get_music_path(QString p_song) { - QString path = get_base_path() + "sounds/music/" + p_song; + QString mp3_check = get_base_path() + "sounds/music/" + p_song + ".mp3"; + QString opus_check = get_base_path() + "sounds/music/" + p_song + ".opus"; + if (file_exists(opus_check)) + { + #ifndef CASE_SENSITIVE_FILESYSTEM + return get_base_path() + "sounds/music/" + p_song + ".opus"; + #else + return get_case_sensitive_path(get_base_path() + "sounds/music/" + p_song + ".opus"); + #endif + } + else if (file_exists(mp3_check)) + { + #ifndef CASE_SENSITIVE_FILESYSTEM + return get_base_path() + "sounds/music/" + p_song + ".mp3"; + #else + return get_case_sensitive_path(get_base_path() + "sounds/music/" + p_song + ".mp3"); + #endif + } #ifndef CASE_SENSITIVE_FILESYSTEM - return path; + return get_base_path() + "sounds/music/" + p_song + ".wav"; #else - return get_case_sensitive_path(path); + return get_case_sensitive_path(get_base_path() + "sounds/music/" + p_song + ".wav"); #endif } From debd386a7176327d481470621a7a3a65cd715f2e Mon Sep 17 00:00:00 2001 From: iamgoofball Date: Sun, 20 Jan 2019 21:06:21 -0800 Subject: [PATCH 05/46] Bugfixes and blip speeds --- include/courtroom.h | 2 +- src/aocharmovie.cpp | 31 +++++++++++++++++++++---------- src/text_file_functions.cpp | 6 +++--- 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/include/courtroom.h b/include/courtroom.h index c76e4a1..b746c6a 100644 --- a/include/courtroom.h +++ b/include/courtroom.h @@ -251,7 +251,7 @@ private: bool message_is_centered = false; int current_display_speed = 3; - int message_display_speed[7] = {30, 40, 50, 60, 75, 100, 120}; + int message_display_speed[7] = {10, 20, 30, 40, 50, 60, 75}; // This is for checking if the character should start talking again // when an inline blue text ends. diff --git a/src/aocharmovie.cpp b/src/aocharmovie.cpp index a5beefb..cbf9b79 100644 --- a/src/aocharmovie.cpp +++ b/src/aocharmovie.cpp @@ -13,7 +13,6 @@ AOCharMovie::AOCharMovie(QWidget *p_parent, AOApplication *p_ao_app) : QLabel(p_ preanim_timer->setSingleShot(true); ticker->setSingleShot(true); connect(ticker, SIGNAL(timeout()), this, SLOT(movie_ticker())); - connect(preanim_timer, SIGNAL(timeout()), this, SLOT(timer_done())); this->setUpdatesEnabled(true); } @@ -37,6 +36,7 @@ void AOCharMovie::play(QString p_char, QString p_emote, QString emote_prefix) gif_path = placeholder_path; else gif_path = placeholder_default_path; + last_path = gif_path; delete m_movie; m_movie = new QMovie(this); m_movie->stop(); @@ -145,10 +145,29 @@ void AOCharMovie::sfx_two_network_boogaloo() void AOCharMovie::movie_ticker() { - m_movie->jumpToNextFrame(); + if(m_movie->currentFrameNumber() == m_movie->frameCount() - 1) + { + delete m_movie; + m_movie = new QMovie(this); + m_movie->stop(); + this->clear(); + m_movie->setFileName(last_path); + m_movie->jumpToFrame(0); + if(play_once) + { + timer_done(); + } + } + else + { + m_movie->jumpToNextFrame(); + } this->LoadImageWithStupidMethodForFlipSupport(m_movie->currentImage()); // imagine if QT had sane stuff like "mirror on QMovie" or "resize the image on QT" or "interface with the current QMovie image" or anything else // ps: fuck private functions/variables as a concept, freedom 2 do dangerous things 5ever this->play_frame_sfx(); + qDebug() << "Current frame number: " << m_movie->currentFrameNumber(); + qDebug() << "Frames Left: " << m_movie->frameCount() - 1; + qDebug() << "Frame Delay: " << m_movie->nextFrameDelay(); ticker->start(m_movie->nextFrameDelay()); } @@ -180,14 +199,7 @@ void AOCharMovie::play_pre(QString p_char, QString p_emote, int duration) m_movie->setFileName(gif_path); m_movie->jumpToFrame(0); int real_duration = 0; - for (int n_frame = 0 ; n_frame < m_movie->frameCount() ; ++n_frame) - { - qDebug() << "frame " << n_frame << " delay of " << m_movie->nextFrameDelay(); - real_duration += m_movie->nextFrameDelay(); - m_movie->jumpToFrame(n_frame + 1); - } play_once = true; - preanim_timer->start(real_duration); play(p_char, p_emote, ""); } @@ -207,7 +219,6 @@ void AOCharMovie::stop() { //for all intents and purposes, stopping is the same as hiding. at no point do we want a frozen gif to display m_movie->stop(); - preanim_timer->stop(); frame_specific_sfx_player->stop(); this->hide(); } diff --git a/src/text_file_functions.cpp b/src/text_file_functions.cpp index e8cfeba..6bc66d0 100644 --- a/src/text_file_functions.cpp +++ b/src/text_file_functions.cpp @@ -8,10 +8,10 @@ QString AOApplication::read_theme() int AOApplication::read_blip_rate() { - int result = configini->value("blip_rate", 1).toInt(); + int result = configini->value("blip_rate", 2).toInt(); - if (result < 1) - return 1; + if (result < 2) + return 2; return result; } From a7a614482e379ad13f8e0ca1e7f3e31c33bb1c21 Mon Sep 17 00:00:00 2001 From: iamgoofball Date: Mon, 21 Jan 2019 15:45:51 -0800 Subject: [PATCH 06/46] final commit --- include/aoapplication.h | 4 ++++ include/aocharmovie.h | 1 + include/aooptionsdialog.h | 2 ++ src/aocharmovie.cpp | 15 +++++++++++---- src/aooptionsdialog.cpp | 12 ++++++++++++ src/courtroom.cpp | 4 ++++ src/text_file_functions.cpp | 13 ++++++++++--- 7 files changed, 44 insertions(+), 7 deletions(-) diff --git a/include/aoapplication.h b/include/aoapplication.h index 2ae1655..7a5e633 100644 --- a/include/aoapplication.h +++ b/include/aoapplication.h @@ -166,6 +166,10 @@ public: // from the config.ini. bool is_discord_enabled(); + // Returns the value of whether shaking and flashing should be enabled. + // from the config.ini. + bool is_shakeandflash_enabled(); + // Returns the value of the maximum amount of lines the IC chatlog // may contain, from config.ini. int get_max_log_size(); diff --git a/include/aocharmovie.h b/include/aocharmovie.h index 94e242b..6c127a6 100644 --- a/include/aocharmovie.h +++ b/include/aocharmovie.h @@ -64,6 +64,7 @@ private: bool m_flipped = false; bool play_once = true; + bool apng = false; signals: void done(); diff --git a/include/aooptionsdialog.h b/include/aooptionsdialog.h index 03b1e71..175b804 100644 --- a/include/aooptionsdialog.h +++ b/include/aooptionsdialog.h @@ -55,6 +55,8 @@ private: QLineEdit *ui_ms_textbox; QLabel *ui_discord_lbl; QCheckBox *ui_discord_cb; + QLabel *ui_epilepsy_lbl; + QCheckBox *ui_epilepsy_cb; QWidget *ui_callwords_tab; QWidget *ui_callwords_widget; diff --git a/src/aocharmovie.cpp b/src/aocharmovie.cpp index cbf9b79..3d65055 100644 --- a/src/aocharmovie.cpp +++ b/src/aocharmovie.cpp @@ -18,6 +18,7 @@ AOCharMovie::AOCharMovie(QWidget *p_parent, AOApplication *p_ao_app) : QLabel(p_ void AOCharMovie::play(QString p_char, QString p_emote, QString emote_prefix) { + apng = false; QString original_path = ao_app->get_character_path(p_char, emote_prefix + p_emote + ".gif"); QString alt_path = ao_app->get_character_path(p_char, emote_prefix + p_emote + ".png"); QString apng_path = ao_app->get_character_path(p_char, emote_prefix + p_emote + ".apng"); @@ -27,7 +28,10 @@ void AOCharMovie::play(QString p_char, QString p_emote, QString emote_prefix) current_emote = emote_prefix + p_emote; current_char = p_char; if (file_exists(apng_path)) + { gif_path = apng_path; + apng = true; + } else if (file_exists(original_path)) gif_path = original_path; else if (file_exists(alt_path)) @@ -145,6 +149,9 @@ void AOCharMovie::sfx_two_network_boogaloo() void AOCharMovie::movie_ticker() { + if(apng){ + ticker->start(m_movie->nextFrameDelay()); + } if(m_movie->currentFrameNumber() == m_movie->frameCount() - 1) { delete m_movie; @@ -165,10 +172,10 @@ void AOCharMovie::movie_ticker() this->LoadImageWithStupidMethodForFlipSupport(m_movie->currentImage()); // imagine if QT had sane stuff like "mirror on QMovie" or "resize the image on QT" or "interface with the current QMovie image" or anything else // ps: fuck private functions/variables as a concept, freedom 2 do dangerous things 5ever this->play_frame_sfx(); - qDebug() << "Current frame number: " << m_movie->currentFrameNumber(); - qDebug() << "Frames Left: " << m_movie->frameCount() - 1; - qDebug() << "Frame Delay: " << m_movie->nextFrameDelay(); - ticker->start(m_movie->nextFrameDelay()); + if(!apng){ + ticker->start(m_movie->nextFrameDelay()); + } + } void AOCharMovie::LoadImageWithStupidMethodForFlipSupport(QImage image) diff --git a/src/aooptionsdialog.cpp b/src/aooptionsdialog.cpp index 4d0e479..247a231 100644 --- a/src/aooptionsdialog.cpp +++ b/src/aooptionsdialog.cpp @@ -167,6 +167,17 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDi ui_gameplay_form->setWidget(9, QFormLayout::FieldRole, ui_discord_cb); + ui_epilepsy_lbl = new QLabel(ui_form_layout_widget); + ui_epilepsy_lbl->setText(tr("Allow Shake/Flash:")); + ui_epilepsy_lbl->setToolTip(tr("Allows screenshaking and flashing. Disable this if you have concerns or issues with photosensitivity and/or seizures.")); + + ui_gameplay_form->setWidget(10, QFormLayout::LabelRole, ui_epilepsy_lbl); + + ui_epilepsy_cb = new QCheckBox(ui_form_layout_widget); + ui_epilepsy_cb->setChecked(ao_app->is_shakeandflash_enabled()); + + ui_gameplay_form->setWidget(10, QFormLayout::FieldRole, ui_epilepsy_cb); + // Here we start the callwords tab. ui_callwords_tab = new QWidget(); ui_settings_tabs->addTab(ui_callwords_tab, tr("Callwords")); @@ -486,6 +497,7 @@ void AOOptionsDialog::save_pressed() configini->setValue("show_custom_shownames", ui_showname_cb->isChecked()); configini->setValue("master", ui_ms_textbox->text()); configini->setValue("discord", ui_discord_cb->isChecked()); + configini->setValue("shakeandflash", ui_epilepsy_cb->isChecked()); QFile* callwordsini = new QFile(ao_app->get_base_path() + "callwords.ini"); diff --git a/src/courtroom.cpp b/src/courtroom.cpp index a097444..537558f 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -1752,6 +1752,8 @@ void Courtroom::handle_chatmessage_2() void Courtroom::doScreenShake() { + if(!ao_app->is_shakeandflash_enabled()) + return; screenshake_group = new QParallelAnimationGroup; screenshake_animation = new QPropertyAnimation(ui_viewport, "pos", this); chatbox_screenshake_animation = new QPropertyAnimation(ui_vp_chatbox, "pos", this); @@ -2197,6 +2199,8 @@ void Courtroom::realization_done() void Courtroom::doRealization() { + if(!ao_app->is_shakeandflash_enabled()) + return; realization_timer->start(60); ui_vp_realization->show(); diff --git a/src/text_file_functions.cpp b/src/text_file_functions.cpp index 6bc66d0..68d0a04 100644 --- a/src/text_file_functions.cpp +++ b/src/text_file_functions.cpp @@ -10,8 +10,8 @@ int AOApplication::read_blip_rate() { int result = configini->value("blip_rate", 2).toInt(); - if (result < 2) - return 2; + if (result < 1) + return 1; return result; } @@ -632,7 +632,7 @@ bool AOApplication::get_looping_sfx() bool AOApplication::get_objectmusic() { - QString result = configini->value("kill_music_on_object", "true").value(); + QString result = configini->value("kill_music_on_object", "false").value(); return result.startsWith("true"); } @@ -642,6 +642,13 @@ bool AOApplication::is_discord_enabled() return result.startsWith("true"); } +bool AOApplication::is_shakeandflash_enabled() +{ + QString result = configini->value("shakeandflash", "true").value(); + return result.startsWith("true"); +} + + bool AOApplication::get_casing_enabled() { QString result = configini->value("casing_enabled", "false").value(); From 13bc82094f76011eef371ece3b3894d7cc20eaf9 Mon Sep 17 00:00:00 2001 From: iamgoofball Date: Wed, 23 Jan 2019 00:14:47 -0800 Subject: [PATCH 07/46] >>>>multi-threading the frame sfx/screenshake/flashes --- include/aoapplication.h | 5 ++ include/courtroom.h | 24 ++++-- src/courtroom.cpp | 178 +++++++++++++++++++++++++++------------- 3 files changed, 143 insertions(+), 64 deletions(-) diff --git a/include/aoapplication.h b/include/aoapplication.h index 7a5e633..22c6c23 100644 --- a/include/aoapplication.h +++ b/include/aoapplication.h @@ -23,6 +23,11 @@ #include #include +#include +#include +#include +#include + class NetworkManager; class Lobby; class Courtroom; diff --git a/include/courtroom.h b/include/courtroom.h index b746c6a..1c739b8 100644 --- a/include/courtroom.h +++ b/include/courtroom.h @@ -40,7 +40,7 @@ #include #include #include - +#include #include #include #include @@ -53,7 +53,11 @@ #include #include #include - +#include +#include +#include +#include +#include #include class AOApplication; @@ -69,6 +73,16 @@ public: void append_music(QString f_music){music_list.append(f_music);} void append_area(QString f_area){area_list.append(f_area);} void handle_failed_login(); + QString threading_sfx = ""; + QString threading_shake = ""; + QString threading_flash = ""; + QString threading_prefix = ""; + //cid and this may differ in cases of ini-editing + QString current_char = ""; + int current_emote = 0; + AOApplication *ao_app; + void mt_pre_framegetter(int frameNumber); + void mt_framegetter(int frameNumber); void reset_music_list() { music_list.clear(); @@ -216,7 +230,6 @@ public: ~Courtroom(); private: - AOApplication *ao_app; int m_courtroom_width = 714; int m_courtroom_height = 668; @@ -232,7 +245,7 @@ private: QPropertyAnimation *screenshake_animation; QPropertyAnimation *chatbox_screenshake_animation; QParallelAnimationGroup *screenshake_group; - QImageReader *frame_emote_checker; + QMovie *frame_emote_checker; // This is for inline message-colouring. enum INLINE_COLOURS { @@ -352,8 +365,6 @@ private: //character id, which index of the char_list the player is int m_cid = -1; - //cid and this may differ in cases of ini-editing - QString current_char = ""; int objection_state = 0; int realization_state = 0; @@ -373,7 +384,6 @@ private: const int button_height = 60; int current_emote_page = 0; - int current_emote = 0; int emote_columns = 5; int emote_rows = 2; int max_emotes_on_page = 10; diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 537558f..19caa8d 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -1095,6 +1095,66 @@ void Courtroom::append_server_chatmessage(QString p_name, QString p_message, QSt ui_server_chatlog->append_chatmessage(p_name, p_message, colour); } +class AOFrameThreadingBullshitPre : public QRunnable +{ +public: + Courtroom *mycourt_fuck; + int my_frameNumber; + AOFrameThreadingBullshitPre(Courtroom *my_courtroom, int frameNumber){ + mycourt_fuck = my_courtroom; + my_frameNumber = frameNumber; + } + void run() + { + qDebug() << my_frameNumber << " FRAME NUMBER" << " from" << QThread::currentThread(); + QString sfx_to_play = mycourt_fuck->ao_app->get_frame_sfx_name(mycourt_fuck->current_char, mycourt_fuck->ao_app->get_pre_emote(mycourt_fuck->current_char, mycourt_fuck->current_emote), my_frameNumber); + QString screenshake_to_play = mycourt_fuck->ao_app->get_screenshake_frame(mycourt_fuck->current_char, mycourt_fuck->ao_app->get_pre_emote(mycourt_fuck->current_char, mycourt_fuck->current_emote), my_frameNumber); + QString realization_to_play = mycourt_fuck->ao_app->get_realization_frame(mycourt_fuck->current_char, mycourt_fuck->ao_app->get_pre_emote(mycourt_fuck->current_char, mycourt_fuck->current_emote), my_frameNumber); + if(sfx_to_play != "") + { + mycourt_fuck->threading_sfx += "|" + QString::number(my_frameNumber) + "=" + sfx_to_play; + } + if(screenshake_to_play != "") + { + mycourt_fuck->threading_shake += "|" + QString::number(my_frameNumber) + "=" + screenshake_to_play; + } + if(realization_to_play != "") + { + mycourt_fuck->threading_flash += "|" + QString::number(my_frameNumber) + "=" + realization_to_play; + } + } +}; + + +class AOFrameThreadingBullshit : public QRunnable +{ +public: + Courtroom *mycourt_fuck; + int my_frameNumber; + AOFrameThreadingBullshit(Courtroom *my_courtroom, int frameNumber){ + mycourt_fuck = my_courtroom; + my_frameNumber = frameNumber; + } + void run() + { + QString sfx_to_play = mycourt_fuck->ao_app->get_frame_sfx_name(mycourt_fuck->current_char, mycourt_fuck->threading_prefix + mycourt_fuck->ao_app->get_emote(mycourt_fuck->current_char, mycourt_fuck->current_emote), my_frameNumber); + QString screenshake_to_play = mycourt_fuck->ao_app->get_screenshake_frame(mycourt_fuck->current_char, mycourt_fuck->threading_prefix + mycourt_fuck->ao_app->get_emote(mycourt_fuck->current_char, mycourt_fuck->current_emote), my_frameNumber); + QString realization_to_play = mycourt_fuck->ao_app->get_realization_frame(mycourt_fuck->current_char, mycourt_fuck->threading_prefix + mycourt_fuck->ao_app->get_emote(mycourt_fuck->current_char, mycourt_fuck->current_emote), my_frameNumber); + if(sfx_to_play != "") + { + mycourt_fuck->threading_sfx += "|" + QString::number(my_frameNumber) + "=" + sfx_to_play; + } + if(screenshake_to_play != "") + { + mycourt_fuck->threading_shake += "|" + QString::number(my_frameNumber) + "=" + screenshake_to_play; + } + if(realization_to_play != "") + { + mycourt_fuck->threading_flash += "|" + QString::number(my_frameNumber) + "=" + realization_to_play; + } + } +}; + void Courtroom::on_chat_return_pressed() { if (ui_ic_chat_message->text() == "" || is_muted) @@ -1275,7 +1335,7 @@ void Courtroom::on_chat_return_pressed() qDebug() << "Are we looping this? " << ao_app->get_sfx_looping(current_char, current_emote); packet_contents.append(QString::number(screenshake_state)); qDebug() << "Are we screen shaking this one? " << screenshake_state; - + qDebug() << "MAX THREAD COUNT " << QThreadPool::globalInstance()->maxThreadCount(); QString frame_screenshake = ""; QString frame_realization = ""; QString frame_sfx = ""; @@ -1295,77 +1355,86 @@ void Courtroom::on_chat_return_pressed() QString preemote = ao_app->get_image_suffix(ao_app->get_character_path(current_char, ao_app->get_pre_emote(current_char, current_emote))); QString talkemote_to_check = ao_app->get_image_suffix(ao_app->get_character_path(current_char, "(b)" + ao_app->get_emote(current_char, current_emote))); QString idleemote_to_check = ao_app->get_image_suffix(ao_app->get_character_path(current_char, "(a)" + ao_app->get_emote(current_char, current_emote))); - frame_emote_checker = new QImageReader(preemote); + + frame_emote_checker = new QMovie(this); + frame_emote_checker->setFileName(preemote); + frame_emote_checker->jumpToFrame(0); + qDebug() << "Premote fuck: " << frame_emote_checker->frameCount(); + preemote_sfx += ao_app->get_pre_emote(current_char, current_emote); preemote_shake += ao_app->get_pre_emote(current_char, current_emote); preemote_flash += ao_app->get_pre_emote(current_char, current_emote); - for (int i = 0; i < frame_emote_checker->imageCount(); i++) { - QString sfx_to_play = ao_app->get_frame_sfx_name(current_char, ao_app->get_pre_emote(current_char, current_emote), i); - QString screenshake_to_play = ao_app->get_screenshake_frame(current_char, ao_app->get_pre_emote(current_char, current_emote), i); - QString realization_to_play = ao_app->get_realization_frame(current_char, ao_app->get_pre_emote(current_char, current_emote), i); - if(sfx_to_play != "") - { - preemote_sfx += "|" + QString::number(i) + "=" + sfx_to_play; - } - if(screenshake_to_play != "") - { - preemote_shake += "|" + QString::number(i) + "=" + screenshake_to_play; - } - if(realization_to_play != "") - { - preemote_flash += "|" + QString::number(i) + "=" + realization_to_play; - } + + threading_sfx = preemote_sfx; + threading_shake = preemote_shake; + threading_flash = preemote_flash; + + for(int i=0; i < frame_emote_checker->frameCount(); i++){ + AOFrameThreadingBullshitPre *testfuck = new AOFrameThreadingBullshitPre(this, i); + QThreadPool::globalInstance()->start(testfuck); } + QThreadPool::globalInstance()->waitForDone(); + preemote_sfx = threading_sfx; + preemote_shake = threading_shake; + preemote_flash = threading_flash; preemote_sfx += "^"; preemote_shake += "^"; preemote_flash += "^"; delete frame_emote_checker; + + + talkemote_sfx += "(b)" + ao_app->get_emote(current_char, current_emote); talkemote_shake += "(b)" + ao_app->get_emote(current_char, current_emote); talkemote_flash += "(b)" + ao_app->get_emote(current_char, current_emote); - frame_emote_checker = new QImageReader(talkemote_to_check); - for (int i = 0; i < frame_emote_checker->imageCount(); i++) { - QString sfx_to_play = ao_app->get_frame_sfx_name(current_char, "(b)" + ao_app->get_emote(current_char, current_emote), i); - QString screenshake_to_play = ao_app->get_screenshake_frame(current_char, "(b)" + ao_app->get_emote(current_char, current_emote), i); - QString realization_to_play = ao_app->get_realization_frame(current_char, "(b)" + ao_app->get_emote(current_char, current_emote), i); - if(sfx_to_play != "") - { - talkemote_sfx += "|" + QString::number(i) + "=" + sfx_to_play; - } - if(screenshake_to_play != "") - { - talkemote_shake += "|" + QString::number(i) + "=" + screenshake_to_play; - } - if(realization_to_play != "") - { - talkemote_flash += "|" + QString::number(i) + "=" + realization_to_play; - } + + frame_emote_checker = new QMovie(this); + frame_emote_checker->setFileName(talkemote_to_check); + frame_emote_checker->jumpToFrame(0); + qDebug() << "TALK fuck: " << frame_emote_checker->frameCount(); + + threading_sfx = talkemote_sfx; + threading_shake = talkemote_shake; + threading_flash = talkemote_flash; + threading_prefix = QString("(b)"); + + for(int i=0; i < frame_emote_checker->frameCount(); i++){ + AOFrameThreadingBullshit *testfuck = new AOFrameThreadingBullshit(this, i); + QThreadPool::globalInstance()->start(testfuck); } + QThreadPool::globalInstance()->waitForDone(); + + talkemote_sfx = threading_sfx; + talkemote_shake = threading_shake; + talkemote_flash = threading_flash; talkemote_sfx += "^"; talkemote_shake += "^"; talkemote_flash += "^"; delete frame_emote_checker; + + + idleemote_sfx += "(a)" + ao_app->get_emote(current_char, current_emote); idleemote_shake += "(a)" + ao_app->get_emote(current_char, current_emote); idleemote_flash += "(a)" + ao_app->get_emote(current_char, current_emote); - frame_emote_checker = new QImageReader(idleemote_to_check); - for (int i = 0; i < frame_emote_checker->imageCount(); i++) { - QString sfx_to_play = ao_app->get_frame_sfx_name(current_char, "(a)" + ao_app->get_emote(current_char, current_emote), i); - QString screenshake_to_play = ao_app->get_screenshake_frame(current_char, "(a)" + ao_app->get_emote(current_char, current_emote), i); - QString realization_to_play = ao_app->get_realization_frame(current_char, "(a)" + ao_app->get_emote(current_char, current_emote), i); - if(sfx_to_play != "") - { - idleemote_sfx += "|" + QString::number(i) + "=" + sfx_to_play; - } - if(screenshake_to_play != "") - { - idleemote_shake += "|" + QString::number(i) + "=" + screenshake_to_play; - } - if(realization_to_play != "") - { - idleemote_flash += "|" + QString::number(i) + "=" + realization_to_play; - } + + frame_emote_checker = new QMovie(this); + frame_emote_checker->setFileName(idleemote_to_check); + frame_emote_checker->jumpToFrame(0); + qDebug() << "idle fuck: " << frame_emote_checker->frameCount(); + + threading_sfx = idleemote_sfx; + threading_shake = idleemote_shake; + threading_flash = idleemote_flash; + threading_prefix = QString("(a)"); + for(int i=0; i < frame_emote_checker->frameCount(); i++){ + AOFrameThreadingBullshit *testfuck = new AOFrameThreadingBullshit(this, i); + QThreadPool::globalInstance()->start(testfuck); } + QThreadPool::globalInstance()->waitForDone(); + idleemote_sfx = threading_sfx; + idleemote_shake = threading_shake; + idleemote_flash = threading_flash; delete frame_emote_checker; frame_screenshake += preemote_shake; @@ -1379,10 +1448,6 @@ void Courtroom::on_chat_return_pressed() frame_sfx += preemote_sfx; frame_sfx += talkemote_sfx; frame_sfx += idleemote_sfx; - qDebug() << "Final strings:"; - qDebug() << frame_screenshake; - qDebug() << frame_realization; - qDebug() << frame_sfx; packet_contents.append(frame_screenshake); packet_contents.append(frame_realization); @@ -1390,7 +1455,6 @@ void Courtroom::on_chat_return_pressed() } ao_app->send_server_packet(new AOPacket("MS", packet_contents)); } - void Courtroom::handle_chatmessage(QStringList *p_contents) { // Instead of checking for whether a message has at least chatmessage_size From 906c9016bb4660eb0445a3345a55ede959c3cb96 Mon Sep 17 00:00:00 2001 From: iamgoofball Date: Wed, 23 Jan 2019 00:58:30 -0800 Subject: [PATCH 08/46] Multithreaded character generation TODO: fix loading screen --- include/courtroom.h | 22 ++++++++++----------- include/lobby.h | 3 ++- src/charselect.cpp | 48 ++++++++++++++++++++++++++------------------- src/lobby.cpp | 4 ++++ 4 files changed, 44 insertions(+), 33 deletions(-) diff --git a/include/courtroom.h b/include/courtroom.h index 1c739b8..f612412 100644 --- a/include/courtroom.h +++ b/include/courtroom.h @@ -58,6 +58,7 @@ #include #include #include +#include #include class AOApplication; @@ -81,6 +82,15 @@ public: QString current_char = ""; int current_emote = 0; AOApplication *ao_app; + //abstract widget to hold char buttons + QWidget *ui_char_buttons; + QVector char_list; + QVector evidence_list; + QVector music_list; + QVector area_list; + QSignalMapper *char_button_mapper; + QVector ui_char_button_list; + QVector ui_char_button_list_filtered; void mt_pre_framegetter(int frameNumber); void mt_framegetter(int frameNumber); void reset_music_list() @@ -280,18 +290,11 @@ private: // The offset this user has given if they want to appear alongside someone. int offset_with_pair = 0; - QVector char_list; - QVector evidence_list; - QVector music_list; - QVector area_list; - QVector arup_players; QVector arup_statuses; QVector arup_cms; QVector arup_locks; - QSignalMapper *char_button_mapper; - QVector ic_chatlog_history; // These map music row items and area row items to their actual IDs. @@ -534,11 +537,6 @@ private: AOImage *ui_char_select_background; - //abstract widget to hold char buttons - QWidget *ui_char_buttons; - - QVector ui_char_button_list; - QVector ui_char_button_list_filtered; AOImage *ui_selector; AOButton *ui_back_to_lobby; diff --git a/include/lobby.h b/include/lobby.h index 19276a7..3a34fb8 100644 --- a/include/lobby.h +++ b/include/lobby.h @@ -76,7 +76,8 @@ private: AOButton *ui_cancel; void set_size_and_pos(QWidget *p_widget, QString p_identifier); - +public slots: + void fucking_threading_goddamn_it(QString fuckshitassgoddamnfuck); private slots: void on_public_servers_clicked(); void on_favorites_clicked(); diff --git a/src/charselect.cpp b/src/charselect.cpp index 8e1b912..e6d9c9f 100644 --- a/src/charselect.cpp +++ b/src/charselect.cpp @@ -5,6 +5,30 @@ #include "debug_functions.h" #include "hardware_functions.h" +class AOCharSelectGenerationThreading : public QRunnable +{ +public: + Courtroom *mycourt_fuck; + int char_num; + AOCharButton *char_button; + AOCharSelectGenerationThreading(Courtroom *my_courtroom, int character_number, AOCharButton *charbut){ + mycourt_fuck = my_courtroom; + char_num = character_number; + char_button = charbut; + } + void run() + { + AOCharButton* character = char_button; + character->reset(); + character->hide(); + character->set_image(mycourt_fuck->char_list.at(char_num).name); + mycourt_fuck->ui_char_button_list.append(character); + + mycourt_fuck->connect(character, SIGNAL(clicked()), mycourt_fuck->char_button_mapper, SLOT(map())); + mycourt_fuck->char_button_mapper->setMapping(character, mycourt_fuck->ui_char_button_list.size() - 1); + } +}; + void Courtroom::construct_char_select() { ui_char_select_background = new AOImage(this, ao_app); @@ -197,27 +221,11 @@ void Courtroom::character_loading_finished() // Later on, we'll be revealing buttons as we need them. for (int n = 0; n < char_list.size(); n++) { - AOCharButton* character = new AOCharButton(ui_char_buttons, ao_app, 0, 0, char_list.at(n).taken); - character->reset(); - character->hide(); - character->set_image(char_list.at(n).name); - ui_char_button_list.append(character); - - connect(character, SIGNAL(clicked()), char_button_mapper, SLOT(map())); - char_button_mapper->setMapping(character, ui_char_button_list.size() - 1); - - // This part here serves as a way of showing to the player that the game is still running, it is - // just loading the pictures of the characters. - if (ao_app->lobby_constructed) - { - ao_app->generated_chars++; - int total_loading_size = ao_app->char_list_size * 2 + ao_app->evidence_list_size + ao_app->music_list_size; - int loading_value = int(((ao_app->loaded_chars + ao_app->generated_chars + ao_app->loaded_music + ao_app->loaded_evidence) / static_cast(total_loading_size)) * 100); - ao_app->w_lobby->set_loading_value(loading_value); - ao_app->w_lobby->set_loading_text("Generating chars:\n" + QString::number(ao_app->generated_chars) + "/" + QString::number(ao_app->char_list_size)); - } + AOCharButton* character = new AOCharButton(ui_char_buttons, ao_app, 0, 0, char_list.at(n).taken); + AOCharSelectGenerationThreading *char_generate = new AOCharSelectGenerationThreading(this, n, character); + QThreadPool::globalInstance()->start(char_generate); } - + QThreadPool::globalInstance()->waitForDone(); filter_character_list(); } diff --git a/src/lobby.cpp b/src/lobby.cpp index 4a96e56..6f8db06 100644 --- a/src/lobby.cpp +++ b/src/lobby.cpp @@ -172,6 +172,10 @@ void Lobby::set_size_and_pos(QWidget *p_widget, QString p_identifier) } } +void Lobby::fucking_threading_goddamn_it(QString text){ + this->set_loading_text(text); +} + void Lobby::set_loading_text(QString p_text) { ui_loading_text->clear(); From f75032840450263bfe27d3b5a68ea1458a0ce8a5 Mon Sep 17 00:00:00 2001 From: iamgoofball Date: Wed, 23 Jan 2019 01:07:20 -0800 Subject: [PATCH 09/46] Multithreaded filtering of the character list --- include/courtroom.h | 7 +++--- src/charselect.cpp | 52 ++++++++++++++++++++++++++++----------------- 2 files changed, 35 insertions(+), 24 deletions(-) diff --git a/include/courtroom.h b/include/courtroom.h index f612412..be37869 100644 --- a/include/courtroom.h +++ b/include/courtroom.h @@ -91,6 +91,9 @@ public: QSignalMapper *char_button_mapper; QVector ui_char_button_list; QVector ui_char_button_list_filtered; + QLineEdit *ui_char_search; + QCheckBox *ui_char_passworded; + QCheckBox *ui_char_taken; void mt_pre_framegetter(int frameNumber); void mt_framegetter(int frameNumber); void reset_music_list() @@ -548,10 +551,6 @@ private: AOButton *ui_spectator; - QLineEdit *ui_char_search; - QCheckBox *ui_char_passworded; - QCheckBox *ui_char_taken; - void construct_char_select(); void set_char_select(); void set_char_select_page(); diff --git a/src/charselect.cpp b/src/charselect.cpp index e6d9c9f..c5a10bd 100644 --- a/src/charselect.cpp +++ b/src/charselect.cpp @@ -29,6 +29,35 @@ public: } }; +class AOCharSelectFilterThreading : public QRunnable +{ +public: + Courtroom *mycourt_fuck; + int char_num; + AOCharSelectFilterThreading(Courtroom *my_courtroom, int character_number){ + mycourt_fuck = my_courtroom; + char_num = character_number; + } + void run() + { + AOCharButton* current_char = mycourt_fuck->ui_char_button_list.at(char_num); + + if (!mycourt_fuck->ui_char_taken->isChecked() && mycourt_fuck->char_list.at(char_num).taken) + return; + + if (!mycourt_fuck->char_list.at(char_num).name.contains(mycourt_fuck->ui_char_search->text(), Qt::CaseInsensitive)) + return; + + // We only really need to update the fact that a character is taken + // for the buttons that actually appear. + // You'd also update the passwordedness and etc. here later. + current_char->reset(); + current_char->set_taken(mycourt_fuck->char_list.at(char_num).taken); + + mycourt_fuck->ui_char_button_list_filtered.append(current_char); + } +}; + void Courtroom::construct_char_select() { ui_char_select_background = new AOImage(this, ao_app); @@ -234,27 +263,10 @@ void Courtroom::filter_character_list() ui_char_button_list_filtered.clear(); for (int i = 0; i < char_list.size(); i++) { - AOCharButton* current_char = ui_char_button_list.at(i); - - // It seems passwording characters is unimplemented yet? - // Until then, this will stay here, I suppose. - //if (ui_char_passworded->isChecked() && character_is_passworded??) - // continue; - - if (!ui_char_taken->isChecked() && char_list.at(i).taken) - continue; - - if (!char_list.at(i).name.contains(ui_char_search->text(), Qt::CaseInsensitive)) - continue; - - // We only really need to update the fact that a character is taken - // for the buttons that actually appear. - // You'd also update the passwordedness and etc. here later. - current_char->reset(); - current_char->set_taken(char_list.at(i).taken); - - ui_char_button_list_filtered.append(current_char); + AOCharSelectFilterThreading *char_filter = new AOCharSelectFilterThreading(this, i); + QThreadPool::globalInstance()->start(char_filter); } + QThreadPool::globalInstance()->waitForDone(); current_char_page = 0; set_char_select_page(); From edbd67c2dcd25c2e3da6765661d2b04beffdacbf Mon Sep 17 00:00:00 2001 From: iamgoofball Date: Wed, 23 Jan 2019 01:40:57 -0800 Subject: [PATCH 10/46] multi-threaded music --- src/packet_distribution.cpp | 89 ++++++++++++++++--------------------- 1 file changed, 39 insertions(+), 50 deletions(-) diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index 9ea2839..1820547 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -7,6 +7,31 @@ #include "hardware_functions.h" #include "debug_functions.h" +class AOPacketLoadMusicThreading : public QRunnable +{ +public: + AOApplication *myapp; + QString filename; + bool ismusic; + AOPacketLoadMusicThreading(AOApplication *my_app, QString file_name, bool is_music){ + myapp = my_app; + filename = file_name; + ismusic = is_music; + } + void run() + { + qDebug() << "Processing " << filename << " on thread " << QThread::currentThread(); + if(ismusic) + { + myapp->w_courtroom->append_music(filename); + } + else + { + myapp->w_courtroom->append_area(filename); + } + } +}; + void AOApplication::ms_packet_received(AOPacket *p_packet) { p_packet->net_decode(); @@ -280,51 +305,6 @@ void AOApplication::server_packet_received(AOPacket *p_packet) if (is_discord_enabled()) discord->state_server(server_name.toStdString(), hash.result().toBase64().toStdString()); } - else if (header == "CI") - { - if (!courtroom_constructed) - goto end; - - for (int n_element = 0 ; n_element < f_contents.size() ; n_element += 2) - { - if (f_contents.at(n_element).toInt() != loaded_chars) - break; - - //this means we are on the last element and checking n + 1 element will be game over so - if (n_element == f_contents.size() - 1) - break; - - QStringList sub_elements = f_contents.at(n_element + 1).split("&"); - if (sub_elements.size() < 2) - break; - - char_type f_char; - f_char.name = sub_elements.at(0); - f_char.description = sub_elements.at(1); - f_char.evidence_string = sub_elements.at(3); - //temporary. the CharsCheck packet sets this properly - f_char.taken = false; - - ++loaded_chars; - - w_lobby->set_loading_text("Loading chars:\n" + QString::number(loaded_chars) + "/" + QString::number(char_list_size)); - - w_courtroom->append_char(f_char); - - int total_loading_size = char_list_size * 2 + evidence_list_size + music_list_size; - int loading_value = int(((loaded_chars + generated_chars + loaded_music + loaded_evidence) / static_cast(total_loading_size)) * 100); - w_lobby->set_loading_value(loading_value); - } - - if (improved_loading_enabled) - send_server_packet(new AOPacket("RE#%")); - else - { - QString next_packet_number = QString::number(((loaded_chars - 1) / 10) + 1); - send_server_packet(new AOPacket("AN#" + next_packet_number + "#%")); - } - - } else if (header == "EI") { if (!courtroom_constructed) @@ -387,7 +367,8 @@ void AOApplication::server_packet_received(AOPacket *p_packet) if (musics_time) { - w_courtroom->append_music(f_music); + AOPacketLoadMusicThreading *music_load = new AOPacketLoadMusicThreading(this, f_music, true); + QThreadPool::globalInstance()->start(music_load); } else { @@ -397,11 +378,11 @@ void AOApplication::server_packet_received(AOPacket *p_packet) } else { - w_courtroom->append_area(f_music); + AOPacketLoadMusicThreading *area_load = new AOPacketLoadMusicThreading(this, f_music, false); + QThreadPool::globalInstance()->start(area_load); areas++; } } - for (int area_n = 0; area_n < areas; area_n++) { w_courtroom->arup_append(0, "Unknown", "Unknown", "Unknown"); @@ -410,7 +391,12 @@ void AOApplication::server_packet_received(AOPacket *p_packet) int total_loading_size = char_list_size * 2 + evidence_list_size + music_list_size; int loading_value = int(((loaded_chars + generated_chars + loaded_music + loaded_evidence) / static_cast(total_loading_size)) * 100); w_lobby->set_loading_value(loading_value); + if(QThreadPool::globalInstance()->activeThreadCount() == QThreadPool::globalInstance()->maxThreadCount()) + { + QThreadPool::globalInstance()->waitForDone(); //out of order music is bad + } } + QThreadPool::globalInstance()->waitForDone(); QString next_packet_number = QString::number(((loaded_music - 1) / 10) + 1); send_server_packet(new AOPacket("AM#" + next_packet_number + "#%")); @@ -475,7 +461,8 @@ void AOApplication::server_packet_received(AOPacket *p_packet) if (musics_time) { - w_courtroom->append_music(f_contents.at(n_element)); + AOPacketLoadMusicThreading *area_load = new AOPacketLoadMusicThreading(this, f_contents.at(n_element), true); + QThreadPool::globalInstance()->start(area_load); } else { @@ -485,7 +472,8 @@ void AOApplication::server_packet_received(AOPacket *p_packet) } else { - w_courtroom->append_area(f_contents.at(n_element)); + AOPacketLoadMusicThreading *area_load = new AOPacketLoadMusicThreading(this, f_contents.at(n_element), false); + QThreadPool::globalInstance()->start(area_load); areas++; } } @@ -499,6 +487,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) int loading_value = int(((loaded_chars + generated_chars + loaded_music + loaded_evidence) / static_cast(total_loading_size)) * 100); w_lobby->set_loading_value(loading_value); } + QThreadPool::globalInstance()->waitForDone(); send_server_packet(new AOPacket("RD#%")); } From f9406d0a7f2363843d9d7c09a9e8d3422c967a64 Mon Sep 17 00:00:00 2001 From: iamgoofball Date: Wed, 23 Jan 2019 01:56:56 -0800 Subject: [PATCH 11/46] multithread the music **harder** --- include/aoapplication.h | 1 + src/packet_distribution.cpp | 105 +++++++----------------------------- 2 files changed, 19 insertions(+), 87 deletions(-) diff --git a/include/aoapplication.h b/include/aoapplication.h index 22c6c23..095dafd 100644 --- a/include/aoapplication.h +++ b/include/aoapplication.h @@ -95,6 +95,7 @@ public: int loaded_evidence = 0; int music_list_size = 0; int loaded_music = 0; + int area_count = 0; bool courtroom_loaded = false; diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index 1820547..0cbf463 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -20,7 +20,6 @@ public: } void run() { - qDebug() << "Processing " << filename << " on thread " << QThread::currentThread(); if(ismusic) { myapp->w_courtroom->append_music(filename); @@ -28,6 +27,11 @@ public: else { myapp->w_courtroom->append_area(filename); + myapp->area_count++; + } + for (int area_n = 0; area_n < myapp->area_count; area_n++) + { + myapp->w_courtroom->arup_append(0, "Unknown", "Unknown", "Unknown"); } } }; @@ -343,64 +347,6 @@ void AOApplication::server_packet_received(AOPacket *p_packet) send_server_packet(new AOPacket("AE#" + next_packet_number + "#%")); } - else if (header == "EM") - { - if (!courtroom_constructed) - goto end; - - bool musics_time = false; - int areas = 0; - - for (int n_element = 0 ; n_element < f_contents.size() ; n_element += 2) - { - if (f_contents.at(n_element).toInt() != loaded_music) - break; - - if (n_element == f_contents.size() - 1) - break; - - QString f_music = f_contents.at(n_element + 1); - - ++loaded_music; - - w_lobby->set_loading_text("Loading music:\n" + QString::number(loaded_music) + "/" + QString::number(music_list_size)); - - if (musics_time) - { - AOPacketLoadMusicThreading *music_load = new AOPacketLoadMusicThreading(this, f_music, true); - QThreadPool::globalInstance()->start(music_load); - } - else - { - if (f_contents.at(n_element) == "===MUSIC START===.mp3") - { - musics_time = true; - } - else - { - AOPacketLoadMusicThreading *area_load = new AOPacketLoadMusicThreading(this, f_music, false); - QThreadPool::globalInstance()->start(area_load); - areas++; - } - } - for (int area_n = 0; area_n < areas; area_n++) - { - w_courtroom->arup_append(0, "Unknown", "Unknown", "Unknown"); - } - - int total_loading_size = char_list_size * 2 + evidence_list_size + music_list_size; - int loading_value = int(((loaded_chars + generated_chars + loaded_music + loaded_evidence) / static_cast(total_loading_size)) * 100); - w_lobby->set_loading_value(loading_value); - if(QThreadPool::globalInstance()->activeThreadCount() == QThreadPool::globalInstance()->maxThreadCount()) - { - QThreadPool::globalInstance()->waitForDone(); //out of order music is bad - } - } - QThreadPool::globalInstance()->waitForDone(); - - QString next_packet_number = QString::number(((loaded_music - 1) / 10) + 1); - send_server_packet(new AOPacket("AM#" + next_packet_number + "#%")); - } else if (header == "CharsCheck") { if (!courtroom_constructed) @@ -451,41 +397,26 @@ void AOApplication::server_packet_received(AOPacket *p_packet) goto end; bool musics_time = false; - int areas = 0; + area_count = 0; for (int n_element = 0 ; n_element < f_contents.size() ; ++n_element) { + if (!musics_time && f_contents.at(n_element) == "===MUSIC START===.mp3") + { + musics_time = true; + continue; + } + AOPacketLoadMusicThreading *music_load = new AOPacketLoadMusicThreading(this, f_contents.at(n_element), musics_time); + QThreadPool::globalInstance()->start(music_load); ++loaded_music; - - w_lobby->set_loading_text("Loading music:\n" + QString::number(loaded_music) + "/" + QString::number(music_list_size)); - - if (musics_time) - { - AOPacketLoadMusicThreading *area_load = new AOPacketLoadMusicThreading(this, f_contents.at(n_element), true); - QThreadPool::globalInstance()->start(area_load); - } - else - { - if (f_contents.at(n_element) == "===MUSIC START===.mp3") - { - musics_time = true; - } - else - { - AOPacketLoadMusicThreading *area_load = new AOPacketLoadMusicThreading(this, f_contents.at(n_element), false); - QThreadPool::globalInstance()->start(area_load); - areas++; - } - } - - for (int area_n = 0; area_n < areas; area_n++) - { - w_courtroom->arup_append(0, "Unknown", "Unknown", "Unknown"); - } - int total_loading_size = char_list_size * 2 + evidence_list_size + music_list_size; int loading_value = int(((loaded_chars + generated_chars + loaded_music + loaded_evidence) / static_cast(total_loading_size)) * 100); w_lobby->set_loading_value(loading_value); + w_lobby->set_loading_text("Loading music:\n" + QString::number(loaded_music) + "/" + QString::number(music_list_size)); + if(QThreadPool::globalInstance()->activeThreadCount() == QThreadPool::globalInstance()->maxThreadCount()) + { + QThreadPool::globalInstance()->waitForDone(); //out of order music is bad + } } QThreadPool::globalInstance()->waitForDone(); From 0649e7b28e16a054072d8656a5046c7cc3cfefb6 Mon Sep 17 00:00:00 2001 From: iamgoofball Date: Wed, 23 Jan 2019 07:35:29 -0800 Subject: [PATCH 12/46] Case Announcer: Witness Support also some other shit --- include/aocaseannouncerdialog.h | 1 + include/courtroom.h | 8 +++- src/aocaseannouncerdialog.cpp | 6 ++- src/aocharmovie.cpp | 1 - src/aoevidencebutton.cpp | 4 -- src/aomusicplayer.cpp | 2 - src/charselect.cpp | 8 ++++ src/courtroom.cpp | 85 +++++++++++++++++++-------------- src/main.cpp | 2 +- src/packet_distribution.cpp | 25 ++++++++-- 10 files changed, 89 insertions(+), 53 deletions(-) diff --git a/include/aocaseannouncerdialog.h b/include/aocaseannouncerdialog.h index a238c3f..da26fab 100644 --- a/include/aocaseannouncerdialog.h +++ b/include/aocaseannouncerdialog.h @@ -36,6 +36,7 @@ private: QCheckBox *ui_judge_needed; QCheckBox *ui_juror_needed; QCheckBox *ui_steno_needed; + QCheckBox *ui_witness_needed; public slots: void ok_pressed(); diff --git a/include/courtroom.h b/include/courtroom.h index be37869..e00e454 100644 --- a/include/courtroom.h +++ b/include/courtroom.h @@ -59,6 +59,7 @@ #include #include #include +#include #include class AOApplication; @@ -194,6 +195,9 @@ public: //properly sets up some varibles: resets user state void enter_courtroom(int p_cid); + // mfw this didnt fucking exist yet + void set_character(int char_id); + //helper function that populates ui_music_list with the contents of music_list void list_music(); void list_areas(); @@ -234,7 +238,7 @@ public: //Toggles the judge buttons, whether they should appear or not. void toggle_judge_buttons(bool is_on); - void announce_case(QString title, bool def, bool pro, bool jud, bool jur, bool steno); + void announce_case(QString title, bool def, bool pro, bool jud, bool jur, bool steno, bool wit); void check_connection_received(); void doScreenShake(); @@ -575,7 +579,7 @@ public slots: void mod_called(QString p_ip); - void case_called(QString msg, bool def, bool pro, bool jud, bool jur, bool steno); + void case_called(QString msg, bool def, bool pro, bool jud, bool jur, bool steno, bool witness); private slots: void start_chat_ticking(); diff --git a/src/aocaseannouncerdialog.cpp b/src/aocaseannouncerdialog.cpp index 5b82b64..4b36fe6 100644 --- a/src/aocaseannouncerdialog.cpp +++ b/src/aocaseannouncerdialog.cpp @@ -54,12 +54,15 @@ AOCaseAnnouncerDialog::AOCaseAnnouncerDialog(QWidget *parent, AOApplication *p_a ui_juror_needed->setText(tr("Jurors needed")); ui_steno_needed = new QCheckBox(this); ui_steno_needed->setText(tr("Stenographer needed")); + ui_witness_needed = new QCheckBox(this); + ui_witness_needed->setText(tr("Witness needed")); ui_form_layout->setWidget(1, QFormLayout::FieldRole, ui_defense_needed); ui_form_layout->setWidget(2, QFormLayout::FieldRole, ui_prosecutor_needed); ui_form_layout->setWidget(3, QFormLayout::FieldRole, ui_judge_needed); ui_form_layout->setWidget(4, QFormLayout::FieldRole, ui_juror_needed); ui_form_layout->setWidget(5, QFormLayout::FieldRole, ui_steno_needed); + ui_form_layout->setWidget(6, QFormLayout::FieldRole, ui_witness_needed); setUpdatesEnabled(true); } @@ -71,7 +74,8 @@ void AOCaseAnnouncerDialog::ok_pressed() ui_prosecutor_needed->isChecked(), ui_judge_needed->isChecked(), ui_juror_needed->isChecked(), - ui_steno_needed->isChecked()); + ui_steno_needed->isChecked(), + ui_witness_needed->isChecked()); done(0); } diff --git a/src/aocharmovie.cpp b/src/aocharmovie.cpp index 3d65055..7fed6b0 100644 --- a/src/aocharmovie.cpp +++ b/src/aocharmovie.cpp @@ -48,7 +48,6 @@ void AOCharMovie::play(QString p_char, QString p_emote, QString emote_prefix) m_movie->setFileName(gif_path); m_movie->jumpToFrame(0); this->LoadImageWithStupidMethodForFlipSupport(m_movie->currentImage()); - qDebug() << "playing file path: " << gif_path; this->show(); this->play_frame_sfx(); ticker->start(m_movie->nextFrameDelay()); diff --git a/src/aoevidencebutton.cpp b/src/aoevidencebutton.cpp index 924aeb8..ab654bf 100644 --- a/src/aoevidencebutton.cpp +++ b/src/aoevidencebutton.cpp @@ -89,15 +89,11 @@ void AOEvidenceButton::mouseDoubleClickEvent(QMouseEvent *e) void AOEvidenceButton::dragLeaveEvent(QMouseEvent *e) { //QWidget::dragLeaveEvent(e); - - qDebug() << "drag leave event"; } void AOEvidenceButton::dragEnterEvent(QMouseEvent *e) { //QWidget::dragEnterEvent(e); - - qDebug() << "drag enter event"; } void AOEvidenceButton::enterEvent(QEvent * e) diff --git a/src/aomusicplayer.cpp b/src/aomusicplayer.cpp index 2a35f0b..fca3c16 100644 --- a/src/aomusicplayer.cpp +++ b/src/aomusicplayer.cpp @@ -35,7 +35,6 @@ void AOMusicPlayer::play(QString p_song) double time=BASS_ChannelBytes2Seconds(m_stream, len); // the length in seconds if(time > 0) { - qDebug() << "Will loop in " << time << " seconds."; music_loop_timer->start(time*1000); } } @@ -57,7 +56,6 @@ QString AOMusicPlayer::get_path() void AOMusicPlayer::restart_loop() { - qDebug() << "Restarting Music"; /* m_stream = BASS_StreamCreateFile(FALSE, f_path.utf16(), 0, 0, BASS_STREAM_AUTOFREE | BASS_UNICODE | BASS_ASYNCFILE); if (ao_app->get_audio_output_device() != "default") diff --git a/src/charselect.cpp b/src/charselect.cpp index c5a10bd..6edd87e 100644 --- a/src/charselect.cpp +++ b/src/charselect.cpp @@ -253,6 +253,10 @@ void Courtroom::character_loading_finished() AOCharButton* character = new AOCharButton(ui_char_buttons, ao_app, 0, 0, char_list.at(n).taken); AOCharSelectGenerationThreading *char_generate = new AOCharSelectGenerationThreading(this, n, character); QThreadPool::globalInstance()->start(char_generate); + if(QThreadPool::globalInstance()->activeThreadCount() == QThreadPool::globalInstance()->maxThreadCount()) + { + QThreadPool::globalInstance()->waitForDone(); + } } QThreadPool::globalInstance()->waitForDone(); filter_character_list(); @@ -265,6 +269,10 @@ void Courtroom::filter_character_list() { AOCharSelectFilterThreading *char_filter = new AOCharSelectFilterThreading(this, i); QThreadPool::globalInstance()->start(char_filter); + if(QThreadPool::globalInstance()->activeThreadCount() == QThreadPool::globalInstance()->maxThreadCount()) + { + QThreadPool::globalInstance()->waitForDone(); + } } QThreadPool::globalInstance()->waitForDone(); diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 19caa8d..8c25a2d 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -1,5 +1,4 @@ #include "courtroom.h" - Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() { ao_app = p_ao_app; @@ -28,7 +27,6 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() } } } - keepalive_timer = new QTimer(this); keepalive_timer->start(60000); @@ -854,45 +852,58 @@ void Courtroom::set_background(QString p_background) } } +void Courtroom::set_character(int char_id) // can you fucking believe this didn't exist yet +{ + m_cid = char_id; + + QString f_char; + + if (m_cid == -1) + { + if (ao_app->is_discord_enabled()) + ao_app->discord->state_spectate(); + f_char = ""; + } + else + { + f_char = ao_app->get_char_name(char_list.at(m_cid).name); + + if (ao_app->is_discord_enabled()) + ao_app->discord->state_character(f_char.toStdString()); + } + + current_char = f_char; + + current_emote_page = 0; + current_emote = 0; + + if (m_cid == -1) + ui_emotes->hide(); + else + ui_emotes->show(); + + set_emote_page(); + set_emote_dropdown(); + + if (ao_app->custom_objection_enabled && + (file_exists(ao_app->get_character_path(current_char, "custom.gif")) || + file_exists(ao_app->get_character_path(current_char, "custom.apng"))) && + file_exists(ao_app->get_character_path(current_char, "custom.wav"))) + ui_custom_objection->show(); + else + ui_custom_objection->hide(); +} + void Courtroom::enter_courtroom(int p_cid) { - m_cid = p_cid; - - QString f_char; - - if (m_cid == -1) - { - if (ao_app->is_discord_enabled()) - ao_app->discord->state_spectate(); - f_char = ""; - } - else - { - f_char = ao_app->get_char_name(char_list.at(m_cid).name); - - if (ao_app->is_discord_enabled()) - ao_app->discord->state_character(f_char.toStdString()); - } - - current_char = f_char; - - current_emote_page = 0; - current_emote = 0; - - if (m_cid == -1) - ui_emotes->hide(); - else - ui_emotes->show(); - - set_emote_page(); - set_emote_dropdown(); + this->set_character(p_cid); current_evidence_page = 0; current_evidence = 0; set_evidence_page(); - QString side = ao_app->get_char_side(f_char); + QString side = ao_app->get_char_side(current_char); if (side == "jud") { @@ -1085,7 +1096,6 @@ void Courtroom::append_server_chatmessage(QString p_name, QString p_message, QSt colour = ao_app->get_color("ooc_default_color", "courtroom_design.ini").name(); if (p_colour == "1") colour = ao_app->get_color("ooc_server_color", "courtroom_design.ini").name(); - qDebug() << p_message; if(p_message == "Logged in as a moderator.") { ui_guard->show(); @@ -2955,7 +2965,7 @@ void Courtroom::mod_called(QString p_ip) } } -void Courtroom::case_called(QString msg, bool def, bool pro, bool jud, bool jur, bool steno) +void Courtroom::case_called(QString msg, bool def, bool pro, bool jud, bool jur, bool steno, bool witness) { if (ui_casing->isChecked()) { @@ -3674,7 +3684,7 @@ void Courtroom::on_char_select_right_clicked() void Courtroom::on_spectator_clicked() { - enter_courtroom(-1); + this->set_character(-1); ui_emotes->hide(); @@ -3820,7 +3830,7 @@ void Courtroom::on_casing_clicked() } } -void Courtroom::announce_case(QString title, bool def, bool pro, bool jud, bool jur, bool steno) +void Courtroom::announce_case(QString title, bool def, bool pro, bool jud, bool jur, bool steno, bool wit) { if (ao_app->casing_alerts_enabled) { @@ -3832,6 +3842,7 @@ void Courtroom::announce_case(QString title, bool def, bool pro, bool jud, bool f_packet.append(QString::number(jud)); f_packet.append(QString::number(jur)); f_packet.append(QString::number(steno)); + f_packet.append(QString::number(wit)); ao_app->send_server_packet(new AOPacket("CASEA", f_packet)); } diff --git a/src/main.cpp b/src/main.cpp index 80ea93b..5aae5c6 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -18,7 +18,7 @@ int main(int argc, char *argv[]) AOApplication main_app(argc, argv); main_app.construct_lobby(); - main_app.net_manager->connect_to_master(); main_app.w_lobby->show(); + main_app.net_manager->connect_to_master(); return main_app.exec(); } diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index 0cbf463..7ad2473 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -460,9 +460,24 @@ void AOApplication::server_packet_received(AOPacket *p_packet) { if (f_contents.size() < 3) goto end; - - if (courtroom_constructed) - w_courtroom->enter_courtroom(f_contents.at(2).toInt()); + if(f_contents.size() < 4){ + if (courtroom_constructed) + w_courtroom->enter_courtroom(f_contents.at(2).toInt()); + } + else + { + if (courtroom_constructed) + { + if(f_contents.at(3) == "True") + { + w_courtroom->set_character(f_contents.at(2).toInt()); + } + else + { + w_courtroom->enter_courtroom(f_contents.at(2).toInt()); + } + } + } } else if (header == "MS") { @@ -577,8 +592,8 @@ void AOApplication::server_packet_received(AOPacket *p_packet) } else if (header == "CASEA") { - if (courtroom_constructed && f_contents.size() > 6) - w_courtroom->case_called(f_contents.at(0), f_contents.at(1) == "1", f_contents.at(2) == "1", f_contents.at(3) == "1", f_contents.at(4) == "1", f_contents.at(5) == "1"); + if (courtroom_constructed && f_contents.size() > 7) + w_courtroom->case_called(f_contents.at(0), f_contents.at(1) == "1", f_contents.at(2) == "1", f_contents.at(3) == "1", f_contents.at(4) == "1", f_contents.at(5) == "1", f_contents.at(6) == "1"); } end: From fc984fcfe2a4416274810de81a8f36fe77b0dba9 Mon Sep 17 00:00:00 2001 From: iamgoofball Date: Fri, 1 Feb 2019 16:28:14 -0800 Subject: [PATCH 13/46] bugfixes and shit --- base/sounds/general/case_announced.ogg | Bin 0 -> 15790 bytes base/themes/default/courtroom_sounds.ini | 3 ++- include/aoapplication.h | 3 +++ include/aomusicplayer.h | 3 --- include/aooptionsdialog.h | 2 ++ include/aosfxplayer.h | 3 --- src/aomusicplayer.cpp | 31 +++++------------------ src/aooptionsdialog.cpp | 16 ++++++++++-- src/aosfxplayer.cpp | 26 +++++-------------- src/courtroom.cpp | 13 +++++----- src/text_file_functions.cpp | 6 +++++ 11 files changed, 46 insertions(+), 60 deletions(-) create mode 100644 base/sounds/general/case_announced.ogg diff --git a/base/sounds/general/case_announced.ogg b/base/sounds/general/case_announced.ogg new file mode 100644 index 0000000000000000000000000000000000000000..1e9c3d4e6c5b840dcd19b50b9d933610e41e5103 GIT binary patch literal 15790 zcmeHuby!u;xA#7WZjclZ4xQ4S2c%QFq+0=LQ0mZ#pfpN%mxwe-NJ~peH%JRg3A`Kp z{%-tp@AE$QzW=@R%-Lu5%-XZod}ggRYi6ILZfmOrK!Jaf)xE!k?&Zu52o=QhxvPb} z+iew8rtBY*i@)FX5cS(9|1I4<2?6i2*;5zsFK_-+YDfCp5gXX9Z|`i!q3&u6bFjD2 zz3U#P2;<@6=HcSu;)OA*J384ryIQ+hJGrx%k%)`R|uX}r2JJ@X{J50sg)z+F*>$#0POcf-xcE<;Ma5R7V+||^=)!fNS+|ikj zhXky`;NTYK;O62Y2U{$kJ35=Y+gmtT|9!+w+}`cE&RwX3b`a}OsgnAY7@P9N`oE(;d(AhR_V+Dg zZcF&eiVW`eM3~Yo@r@MQC*M7LEmcbyf|H`D!ty0SGg2D;zE%`VSAwRJG#Z0DuE++Z z)*B^esrodx(oacAmamK506#LDED{`QOGT195>R_UjN6=v z6l00{KF}+Vu`7?uXz2J&2;yi#NWVJ?L*h0NSQGT8|G z-aNGV+)jEsY*)-;`P|%C%^$D??QTVu^uHrV2LPH7B25LF(0?uwG+|^Gy)1=kL71$? zc{!0h{p=sV@(kQwcB(!OiR^NH!GDBZUUN@b_0xpDWqHG9+B4iSL;LbilS(Z4;4HJ; z;fDaH2mQWPjFjAM&k-~QX|DY&MOn~0IKjqS!xrmvlaY7-_uS(qCZ8aq2<94RLJJr++rR;NPE4U(+?Q~o=2a3lzPY4pDX$tSb?%DtHt|5*B8 z!-Rnh+cYSHFf?732AoKZ*^Gi>aQ-Xb`E6Ys>1n%g)!x&LpT#xvS2&>ll18 zHmG%+nRGNwa$G$1`w!XU!QBuQ0ANeuO`bwzp2C||p*VU-Hccr2+`rW(=Ez*3H>(P9 z^omJ&iW%z$IW|uVY+sfXLGMW5wL0fIh#^FK?<*8dTce;x*T zfs8W#Bd?+q1ary1@nQrS!AcnaH+cR3KK?%f|1|;#&@%#P;0G&vB!(CQPXiF`F6>wU zK&d#!4gk*d%HyDK9OKhK1^{q{B>1m;`|n%fU~dQ{0FJ=0&KikH1mHvfLW)}q$IJj2 zfZCD6$AJvALoozs9iZK#;DX*zz)p!B_px2C5&**l+On8I2cLlkIvI_S0{awZ>2W@F zqHOyV#z=hGVO~}5oXz))Dq2LUgb_LRn4lMR1_1ObDJ=^Z1nAtL01X5{mH)u5ek?Xj zC_ApLW0$h|Du+3;z`lf)Z}9le+4JcTr)<2qtt>7n!BjmK(;&K~)Cs+%OaUoNb~^q= zIpIMQnPZo7OS#hs2UiL{&^;QHg1l1-N*XKJku>Gg-@^rs*8&U-0EHH}5 zONhD+IW(2-f(mdUzl|)w)f_z?e2gU@Bw+%8qBaNsYmB9t>rTV-|DL{xF@+S zfi{Bn0Bps`Pl)5*yxpgOB~6jL5_3Liku2%K_@McQXeuePfUW4+A&)g#SVC{3RImdj zhWxt{zLG+I9;mjrjL`EF5;QRx62Ql@^Ws1~1;s$m&ePUpEl#*6jm{7fr=-M^sI7F{ zDd=SbZ@nymdz^+ffk2A$G6dB1zcJZ;v($BF6Lm= z@E5=#KtMwP&@(cRad2b}0Hp3NQ-SzF_#rS7w8wBLu3G)_D?zbkRHiMWL=kW!0=h61 zz#9PI%!r5xn~IJVDBUB=;M~qtB$?YrpbA(*0sssMEp18z=4-4d>}Z@fxNq^m>44uZ z450PG0VwouxORIFh5p^xw|U(*0>JIY{$ibE{sAGeul<5U zL&8EM{9}V&g#`o$1q9O1^i)X7|E4|q7S``>w_Jn{tv6{T`JA3v$fam8_TBnB?)Zqy zyD)l1HNasL?KE@t+~wC>-QtHm3exQWP^0J5WtM(n8@#ycJ(MwNP99eia?rD9de(Y& zqjTcI4nceyr?|Gprk)k}DK9@h^_(IjskBZ~K-^~V;mUcz=j=i%GVKG(#2#!C?~i@iT00%OXh*T0a$W2w}x za^+ko(};lA$^_z<9$G?%Y*o&4>dzBlufj}Eg?5{<5}z~m#xdPg3sK&rMPl_u0vWqb zCrs!lvxNFiZ&ySO$jDlQ+O|hFf3V*vi~@Q3u$s7eKV`>Wx_ugz?3323r7zp=288jW zrZ!mN=lSpa3rC$#x6XalR@nK3=G!GxQ&cqTZ;qSr9ke!`SI)7<;tgAb9Kuc)_uDA znD7o4dl@6^Zr*G*(VXq&uhaYcYdsQ^EXj*g?xW8tQwCSrMSLwJNeT82av5Y~p4G2T zrD(%BcguRbAZFjV`&_8$YR3%E`SK*z-`nwTxd0>h!w#MO9S?ym%5OP53hZ30R4p7A zr`?+DwW9bDx`p)ywZ5#;d$@pa4B0*V{EcV4U%*HXG$Vxu7O0f;{pu8nAj8qXt7OvJ zgUy#`t2-@50daEyjk5;(227<}KlWY}vQR3!4jQGY0&d1sp!oXR5$LALZn}Q=K{J4gbJ=gnsSPPUE~b5rs*6=T9E1 z$BfT?yd0J@ZWi3P0C5=wRT+n<-g2>P`%ccy&4 za@rXFF8nnXXVRk@O{I{3Hk;^TKl$1Xg~{(X+m$=2GU0|{j3Yg;Y2ZrZs@N80}szLHPP7&ww~iNH=P8Ox0myNye>007Vb@i-X5VG|Q%22|5oEo6Xgq zkKuYYA3e?&KG&&x&1c$qZjUr5PPB-0Y>$Z<6kquS0%)?J{riZkaGLBYm@r=E` zT8~X-9I;U|MEzQ4--WWu7QXREUixnM>UD{s4m+$rI$Og9qNDf>O5&Mz+~=>l3%$?Z zjkcEQg%8I*?a98{sRM~t?W0UMQ43g4D$Tp`zJJai5rY0WNq8HB3?JTdxPYUHM1fwa@x@abLx|&G z6Y`d#y&t*|m9#ya-jR8dr~( zzdpR^>teL%ICJW>gf5l*SU*zfy(5kD)4_Nyq^*k@=w>(kfJeYi5dnjQlhDvJbX z4!$gFT#W9$k*00!*E|pR8=k>Vc#t6@$28G?RYyi&2CH6YpZ9GEeaw%t##?V$m-Y#4DcqG-I@{l>M%2l-UA;<%q!=>b@-1i=&| z1euoKTIrdAjJX0Q-f%Pg&E>eS-5XxasK3ouL#c2Fb*8hvAa2L&-L?5x^QAlIpk%QiSPu)NenV?JmAZHOjS zRAGDMctyidc|H-wtqftoGHz(Sf*(Hq`ok=m@+ml#(2a3HiF18%e^P7TA+@K`czfQv z_@F~(#>nS~g0z60YKem}Oh~NeC2c3N%ofjN7oK@Fc_CJD41mBy6xFHQ3*}S)Hv7EX zt-iKF6KnzHFlk0zIn80=!b@J^GxtArNCEaXI|h%Zx%gd3)vH|i4T{Ws5e*Erd z2d)=O?h9T*!Q;bPG!3Kj4MBphA;0s6~u z)+Z{YYOtlC&oIigV_H5(#GSJk;*b5^+ss4wjFc%lRi*4*`ge28mU_n(F%Hq;r@Sj7 zVqbpF)tFwml>IqL*&KW+&qPO~HBFO#<$5vRUXp}f)+6B2iIXMB{gZy;7;Ov%AZ`kx zD0Yzz%^Ak$!q%qE@X=ke>8Ur1?Z#Ql(5afqM$Yp@GKpyG(4XAA^ZjSttcQj~7;y~^H9pWNFY{fE;=aEZY!s7r z&X=|F`16X*?IGSl3#zWHFCHK~Z z7fo=$e$MW7!a`CwDG4sFUSiPt-8v2^MDq8HvrxySV)v|QV)xIhCzlwSdDXjk9 zJ4nVR2)H?9{KNf}9gd%n zY8UKVr<-I<8jn2cr@h;j1d_LNcKPBjqh1gtoEk?AFAvXtA?dvf{$ zT@O6vu6ZDQS7df)OwV* zIqzJSSy_AvcjSy>uG;SEM@aavSbk^3=kvB_cK)| zFV&sKElv9e1QJBd;HHPett3#tHecyxg%ZWazz@=A)IHfD0-*%1%x8!XgM!c7uTWsw zl?1Imj9oU-IFPaUOe0=-2hTh+yHlP zWcMKQ9<(i#L!=(u68?4^h+gP}HM)nG63V*mHusB#qlIp;jZL~p&Qet#9HM!DfP_~x zTyx!ds~Fy__iL4DVdY4;&-iq0y1<}s!-d^2~^|A1&= zg6Z?aFO!I!k8cXHa5_?}blV~}(cxKdHRzBMV2W+#g#NJKv!U$0ogIhfkjE5=Q@})d zBO*W_)tcQK`oR**At{y>p0=2kUD{~&sXKe(2m4)U0iR@=E8JbLdj3vZ=;FY6;HQYJ zoU7~iBhMJOzSp9hiyFVYP4~;M_P1*b#y%`F{&a*k5H;4t#Ib97SOLjO|W_3j@E4oyw$Hpxpu0iKv|{e?Fx-;ufQ$E zesu=}u+AiOKyooldUM{}(t!OjJJ8>||H#H>r&&jA`@P(%#`6#&T^Eh4O4-mPQEHxJ z7m^Nk(Xm6p3Ym!%Vo8svb=X5Vf;T79bgdSQYGnwh=hmv4DcOKrZr_A8?b%_cb6r zwpn#2+hd1am()GSS2j?gv=9ZEt<^V#ZI4OkVSJ!5ZfEk~Lo6r(=C(yl5#?uSOgBz% zkZ44Z^)yDkL5wo+&)LK2o$cS9J%EQ7z)=|^3M?!jz&9Z1Ris~JSa@tOA}r9)^Hp#} zxPOFipnrHsNEj8H?xD@RwOd(~7cBF_aO2fyEWsyVZDYc*s-uGAC3|@8PTbpmNLAo| z5^q#LC=e~Y42X^jobA41;{4*^@X4{m+}F23vaHPM>xJDfH8!=`p5+v~w{|M&Qms#4 zWH)D1tWf2v34RRe>=s^K4Ves;09L3k+c9*6kvH zv@hV4w;=)%OET6wZ=ZqyZ-rjdeC}(I43jIhvU8hxBdmf4Z;S!e2PafUmTz zxw7WTluZc*XvO1&@dy#6$XnTmS$cGEf@Q*2%DC68x=R~K=JnIhbxnFO&%&J=flE~1 zX&|X-yrNVISvld3`(wn>ve52h`*)_unql`;zf;%#zAoyk%gCXqlRs9CPFgrFZ_=r8 zWy6nn^giDHC;djZO&twZ%z`YBE{Qb}%E>)gUk3_svW#}onUvZlKFV=V_kJ%l!$|Is z8kGa{djn3Er^-rze!@zQc!PKLLm?u)28bdLoc5ME?7qy;^BnhHebS7%K1 z2Le3D6E>T5(<7<8GRc>3lNR?I-$EdJq~lkYG_kMK<08bzb9GCJ zGu%u!*<=Mld>Qm*-r3=gj+@af81CH}Z-+LsriIj-udjWr-c;j-CwJFAY&e*1sZ?v| z?9n@$xEMIzF`Bxp814Pxlc=rWYEDh}*c*PpjcaWvRM=P`TK(*gYH5QL+TwjcGp#x~ z68k)-!mj2UUIq%*BrmiT`4uwe0y$^{Bb0c1=avc)+FXn`^cX!Q0XM>xW!^N)OKENu zGVJJ5cbWjprzcK`8BUhf!EYIVVY6QweGpKy-a5DH6|mD8sy?bwp20`%dinKf=q4%o zulW99CbV})f&_+&ot}?Ay7vP52Rk_dHV6u)asV#!I1pflok%1VM#ktpZ1Zo^s|8v` z3r-F)8Z|hU{f%DCh0$C!^||)HKGi$y;$K?}3oVU&jZc(-{8tw9&ks%eKI#!LiImcI zTUfQR;Pwow%hNqC9A{h4oeKSBaH@zK^t3RJveiu*o6LRP1bshyJJC%l+qWt-rPcsD z3#kzIGwquG2Ws`Q+`9CTHft%`J48H4P_l~Usg+cR9 zCBOExo9s9(2ujR8uY34tp-9U~^gOxHNjLm!U}c>D_<&R6o3Nx0PHCSHu7tvjkoGbt zkvE(vzOBzm4;3=83^kE%UBoOQBFM{x()2>f$q@HWfGld@F%%`C%|g3~SXduuCEqx- ziQW!mT`=`1DmSNcn#?1l@4w;?`vJX@#LX=+6n%6j3HEx8WRnrAIP-${#Y&#+nqBtFUx;ivj3qKLOGJ-B9^69m(>QYF*l}dRBNGME(h|u{S})H^bFNHj-MemLg{x? zb{sLWXzx6ewPUl08Q9>=2-3i;UfmpA!d*#Cb#<1wDd{&>{=jP3pKrEjdrgcydLv`bWZ@o5o%qW@=en!7@qJX4cM@ms zlJUFKTP@t-ni!F_@_->W!pZi;?Q!6hS`D1d4ag&JFnHnTbaIc1g0Wqay#R75h~6Ce z;t=lu!a8ZRjkFTsNiiA+q(?d}NLQ&z_FkTU<3xENr5mkXu zLx?3`8N)-dBZ&RUbzcpN=u35+S5IhGgn+KqiQh#<Q;Xq-!+jZ zf*t4VgS~!Q(4bgy#zx`bi07eId<ndwN5^bRJa461NwNP$WF89*j?Ggifg}P%xGh{^^|8jBzikDz&S$BC!P}5g)LS~ zEVSd|A)N=&R0@wL_HHgI{R5~OMZx7m0HCF5?FnKD+Ny=mx8OD7lm&fW@?oV1OfWa< z2jkzwI=7Oq@aCI^&Nlb#dprBTb7?2TZ6Ob`kiPZUCmzbhjRPTFDE2QBKJ^K96r=W# zQH2p&x=~4%q0XDGK6LSk;By50U@bFpKOP(k>W=RYP?aoM)zF_?v^qL9k5I^vUf5O> zKzM{?p>ICK0R9&!Ym!8B75U0uH_Jh)m4jE0Ry==p9pgEF=hstWNn*U+fFblH^0bou zOxL=8ioSMZ^?rH0>$ndfnKoC8MrnvPy41Sz8cLQtDy&L`mPY_Qix4#?nP(=8Lrp)0 zDUiPujFU(Q4LZGOAb7F$;5{X>a0&WX43e!Gd%&Wbb6%`94k1UQ43+3#Up`2bRNeV8 zd|&JP`iPBzSZJv~rE|M*`%r_SzT!WtL}0EJc?8Ly%w#X#kLqzz-C|+!;)izc&wi$^ zb|qUVf1R477yQ8SXKr??@}Mbhyk{G>C3hMgAVQ)*gWUep<3Ym9Qh%a^++BRfHteF; z2;>-Fh?%UQn-MS^isJvBVSCZf7rJ)(8J;G*9=CMBvY*#-c8!8A^+U;lN->#l7};-~Lb#51f;wMQ66< z_Ty5rC{K(-JjLgaw=ztTw5jRMe(U2J7t`wJ-R+CvxM?B}Q1;T46W5suJ-7HTW?FBC zpZ0wj;Cw$X6Corc_VQQC+2VV>BKS_m;P)E+FG8hP-wq#`sej)?`h?tD&qlM=)H6(t zjsX;}2*?nNzS0QLw`FVjT8)v>&#)z#wt>?Te2n5)ql|x3)k9U2>>Z$5WFqvg zzrEoeH*)abpbpTS4KZH{E9vWcB*K_ODi?3M$L5vnKq&cDQtm_V$;ZSQ1T=wCTlA zbAhUkoS++}Dmg?(Hr;g&UT{Cb!pwSa08s!XXGQ>=K~Lj4dQs{{@i1qRgg(6X!?CQ` zm%E5wf!IQ(Vq!bSGnOn^H~C3Tso}RF&eYvMi93Go#A(9M=!$>&4>jje9)4%cITG~f zwJ8u+sX=!Ynb)P5j21o;b-xzh)n}qZn{vXW4Z3Hn5`6Q@JP?{Ovp(^8*+q$S!F29v zo?xky=Lt^#)8@tc5(zsbCnekp?F@QN@V7yrK1O^fFwE>N;7W;MD4D@oU9Ft^CUCXk za|W_oBgG~DKbWoru-15RU@4e4?i@kj@pV2VC{K!^5$h@52oG(^b!pVDj`R&NfL-1yV z^8Fk?4JHJZJ$p5(fTH%@jg0HT7j!2x?h&mvZcRl2hy-TA?&l0D{vVH;Gi5ugwi#Xp zlnu;&ZFXHiV7>cZ(ICJUM0giB!SlcQJcZkz(3{9)YS6tp8iSq9YBwGZHwl$e8&+hFhI1YqGoFjq@$yIFpnuXU&==*xq*QzZ<*3p=oM1Eb> zj^hS?#NC)-e4;=bSgQ$%8;1+a>2^F_!9v(L2GR*~#aN;MCVgFBPOH3POfQaeO}LJG zKb;Q}cbTK*L(cg*zJh7U=d_y5>WTG1h%lvi{pfb?;y-Nlu z-GO$(#|dj-uhnxy!yp@CWhiV`o+o}d9)%$SMTT$E{f0gI)_$S{ta-D!)9!J^v1MXo zcA)f7w{aFPu|OpH7)CM^C8o+;FEx^}_*`}TkMpMN-$@2tIg1DlyBXNsVGy%c;Fwke z6JOx0jb|jN9)9WCza2Gqy0Dx4)>f?a)$)&xqs(j zvs@0=a~vV+-+gQQYV_I|S+_3P+U|6ZjXa#1BGvS5^^+_I&DDnVRBoN9 z@1bG7(ATk5?*KRxYu0Y>lHA$)1sp|;;JR05^s^z!gY<9y>@)pz$(^Y?30C@fC)VBD zOKEt+w0CgI#Kp&Oc3V%K|DJmP(ZQ2!5ADNOO(x0aKf|7f5@BI)hvhRZKie=^cF-T#xR&A}F`MS~%=9^ubARLq{!GezGYfJ}pCZ`$mJyST_ z8fnjIT9G3p;{6WT5pHutDwbq(S#!(Xp*$r%vjCTQjg(^?S=+UA7jOnc^6!^_4@B=4ecpk?^L{x1#I*vse%r8u60{FY5@+-Wxsxpih+J#di2&Alen9-Q`A6X)sf{rw;>9+PidIrb;#R$amA>|gm;*Sb(a18{Isz(3NtU;PDFY3LFYD$&coqGf4@ zGS>#18dY~hVtKVP*@hqu@+f*K=PGkIW++Wb-o3tc=CzU9-QC2GvxE}SlIn{$7f(qm zYPpp~Q|opgot(0Y<=(4iXxSV7{aq-5tw|b6tISMz0^B37ZYd;=QeYMF98)3@^TJ%r zE<7Vf->na(*=++PdOgmR2jUbIoU&plW(vF8q=P9ArP{FaG)!5@U)?cx)-KXbUn_ob zvrn#MIzAQj)LJ`3gt;QAQoSi`u46d=^l2tDR(<@|YaXHd5vXlfXPdLLIs6!-1`eME zIGO1Cfk*&J!xg(MSjy&@pbI8uY)F;`@>M;1^tKvb(itguj&|`SDp4DbkT^7^H2Lo- z!Y=u4<0O8Yg$X7hFY3!550xdF{T9p1h3~(lsvJfQu=tS>APkaJf6p&G&S0i%7GKm` zd|%4|Zs_2HMx*A@eugjJe-IcimSYn@ne5aLOh%FL!>N4(kHsdXr|R3gR>ou3kMfm9 z34g-m@1BHSF1Yd`1ZqMyEv$zne&^Nz4q|*ZI|laf*uM6SNj>th32~&Gg#76Jx$}+I zCKFlPCcza&3Mb=fuZQLE5^mT7UaO~jN<)NjK-y3+g`%cV#nRpYQvC%@WKv%*n+RJF z|2ry?GW9C-y4Ueq`8l0*w(v6HaqokHLWwZsmW>ch-ztP2)g{l5i=I2w0ZKhGAwySu z&BDl+jtaJas?STxzg&I&MO|sq;jC&B>EB(E$&_s8+#DyNFT>H9YpuQA}L~r>;d7U++ zOR67MH=4W<6gu|ojhVAZq9Hl<-*+{L0)jr@Kqt=Jr{`_v~ z)NweqJ2Po+e5)a!Ep_6UOMrqmf3%7<1?ZA>+=x_EC9<)UV2oNmc|GU?;UcCl=^9ys zhg2JUfof;;8qaCL66o{7*Ro=Jjn}kbMC>)m%S8yReLeBjL}7+IHwvsSeIQKbSKncf z5W6B)D{WX_3H&N@I5A$I;m<8mS-Wt-9dMw;@oB%c=>g5N{M6~KEB&kQl_Kkpc}I}v zZ1|Mg$Z@;#H}x>&B$4Tf|<=1jw#Tep4(4BdZ)lwB2ZqZEK>@ zDWyy@e_0C=Jsq=oCGbclpX+4De|2kSyECt$LH%-|bt+vlY;r!Y(l|_D+F&{q!6%Jy zb~s+HCj^2Oy7J>@8p>b==^77_wVebxnZ3Zj)0y-duRID+4q9+WmZI^B_PXLFx;IMz zRZ}LmpvS(OUc^0BQWEhqxFTPMK{G?#$?hoIi}&GYN$D#ycvH#Ge(P0!&WS54Q=_IH z)q;sikJgW)Tp&U&Tgv86%zmvBw$Ub+(z9{Jc;^(6fmSU3N7m~#ElmT~DA^jvQGp=4 z{+v@A8kQM_at0py-@p_6&n0FmQh2+}`_k(-s9S3L%HdMaDkoBn8hQ>F{1h0@n-_Py z_`Yd;7EmE=b6kVH|E~JTV`2gyh)9wS%SMd^Q2cwvcXR?2s-8M&<2EF>PN>J2{c=ar zeNTuSzQTn650}uc&;TF*v*Tw>*rMjDRkN)Ib6%e$o1gH_iCDC{er&|Y{j$kM)vN(w z6p3(!=Y*%60gW^paVz}bouLr?ZN6;fr21u5|#4o)+hU;;CQ{ON~Zj}e9k>3<1cEH#M?ez zmiGtB%{l_1bDPcn=g6;TafJ5%{I&brD|(7* zlG0a8>OGCde;B)>jgd2POZ?h$ZRAD#2D=GUCm(+>H%VC)}_xxWOS zWq0rcCcRfCJ%aM+>3byDp>qcwzOU)F90bj}a&BKv{wuB3b77t`l7Bc~I3IkI@!os5 zn(2$*`rua8jkix?!H&(%3$MD@kMSv6sy*C>k;dX&8L%>XuMXHv8v!R+?B$|Ct2<;4 c82$(NyIyNz-I7W|b_b94X6t~j=@8ui10ab^VgLXD literal 0 HcmV?d00001 diff --git a/base/themes/default/courtroom_sounds.ini b/base/themes/default/courtroom_sounds.ini index 050576e..eba07a6 100644 --- a/base/themes/default/courtroom_sounds.ini +++ b/base/themes/default/courtroom_sounds.ini @@ -5,4 +5,5 @@ evidence_present = sfx-evidenceshoop.wav word_call = sfx-gaspen-yeah!.wav mod_call = adminhelp.ogg not_guilty = sfx-notguilty.wav -guilty = sfx-guilty.wav \ No newline at end of file +guilty = sfx-guilty.wav +case_call = case_announced.ogg \ No newline at end of file diff --git a/include/aoapplication.h b/include/aoapplication.h index 095dafd..19eb474 100644 --- a/include/aoapplication.h +++ b/include/aoapplication.h @@ -323,6 +323,9 @@ public: // Same for CM. bool get_casing_cm_enabled(); + // Same for witnesses. + bool get_casing_wit_enabled(); + // Get the message for the CM for casing alerts. QString get_casing_can_host_cases(); diff --git a/include/aomusicplayer.h b/include/aomusicplayer.h index 24ea0c5..a88cb79 100644 --- a/include/aomusicplayer.h +++ b/include/aomusicplayer.h @@ -26,14 +26,11 @@ public: private: QWidget *m_parent; AOApplication *ao_app; - QTimer *music_loop_timer; int m_volume = 0; QString f_path; HSTREAM m_stream; -private slots: - void restart_loop(); }; #endif // AOMUSICPLAYER_H diff --git a/include/aooptionsdialog.h b/include/aooptionsdialog.h index 175b804..53bd309 100644 --- a/include/aooptionsdialog.h +++ b/include/aooptionsdialog.h @@ -106,6 +106,8 @@ private: QCheckBox *ui_casing_steno_cb; QLabel *ui_casing_cm_lbl; QCheckBox *ui_casing_cm_cb; + QLabel *ui_casing_wit_lbl; + QCheckBox *ui_casing_wit_cb; QLabel *ui_casing_cm_cases_lbl; QLineEdit *ui_casing_cm_cases_textbox; diff --git a/include/aosfxplayer.h b/include/aosfxplayer.h index 5c6f108..39bea0d 100644 --- a/include/aosfxplayer.h +++ b/include/aosfxplayer.h @@ -22,13 +22,10 @@ public: private: QWidget *m_parent; AOApplication *ao_app; - QTimer *sfx_loop_timer; int m_volume = 0; bool looping_sfx = false; HSTREAM m_stream; -private slots: - void restart_loop(); }; #endif // AOSFXPLAYER_H diff --git a/src/aomusicplayer.cpp b/src/aomusicplayer.cpp index fca3c16..7fcb277 100644 --- a/src/aomusicplayer.cpp +++ b/src/aomusicplayer.cpp @@ -5,9 +5,6 @@ AOMusicPlayer::AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app): QObject( { m_parent = parent; ao_app = p_ao_app; - music_loop_timer = new QTimer(this); - music_loop_timer->setSingleShot(true); - connect(music_loop_timer, SIGNAL(timeout()), this, SLOT(restart_loop())); } AOMusicPlayer::~AOMusicPlayer() @@ -27,17 +24,16 @@ void AOMusicPlayer::play(QString p_song) if (ao_app->get_audio_output_device() != "default") BASS_ChannelSetDevice(m_stream, BASS_GetDevice()); - BASS_ChannelPlay(m_stream, false); - music_loop_timer->stop(); if(enable_looping) { - QWORD len=BASS_ChannelGetLength(m_stream, BASS_POS_BYTE); // the length in bytes - double time=BASS_ChannelBytes2Seconds(m_stream, len); // the length in seconds - if(time > 0) - { - music_loop_timer->start(time*1000); - } + BASS_ChannelFlags(m_stream, BASS_SAMPLE_LOOP, BASS_SAMPLE_LOOP); } + else + { + BASS_ChannelFlags(m_stream, 0, BASS_SAMPLE_LOOP); + } + BASS_ChannelPlay(m_stream, false); + } @@ -54,21 +50,8 @@ QString AOMusicPlayer::get_path() return f_path; } -void AOMusicPlayer::restart_loop() -{ - /* - m_stream = BASS_StreamCreateFile(FALSE, f_path.utf16(), 0, 0, BASS_STREAM_AUTOFREE | BASS_UNICODE | BASS_ASYNCFILE); - if (ao_app->get_audio_output_device() != "default") - BASS_ChannelSetDevice(m_stream, BASS_GetDevice());*/ - QWORD len=BASS_ChannelGetLength(m_stream, BASS_POS_BYTE); // the length in bytes - double time=BASS_ChannelBytes2Seconds(m_stream, len); // the length in seconds - music_loop_timer->start(time*1000); - BASS_ChannelPlay(m_stream, true); -} - void AOMusicPlayer::kill_loop() { - music_loop_timer->stop(); BASS_ChannelStop(m_stream); } diff --git a/src/aooptionsdialog.cpp b/src/aooptionsdialog.cpp index 247a231..03b4e67 100644 --- a/src/aooptionsdialog.cpp +++ b/src/aooptionsdialog.cpp @@ -467,6 +467,18 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDi ui_casing_layout->setWidget(7, QFormLayout::FieldRole, ui_casing_cm_cb); + ui_casing_wit_lbl = new QLabel(ui_casing_widget); + ui_casing_wit_lbl->setText(tr("Witness:")); + ui_casing_wit_lbl->setToolTip(tr("If checked, you will appear amongst the potential " + "witnesses on the server.")); + + ui_casing_layout->setWidget(8, QFormLayout::LabelRole, ui_casing_wit_lbl); + + ui_casing_wit_cb = new QCheckBox(ui_casing_widget); + ui_casing_wit_cb->setChecked(ao_app->get_casing_wit_enabled()); + + ui_casing_layout->setWidget(8, QFormLayout::FieldRole, ui_casing_wit_cb); + // -- CM CASES ANNOUNCEMENTS ui_casing_cm_cases_lbl = new QLabel(ui_casing_widget); @@ -474,12 +486,12 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDi ui_casing_cm_cases_lbl->setToolTip(tr("If you're a CM, enter what cases you are " "willing to host.")); - ui_casing_layout->setWidget(8, QFormLayout::LabelRole, ui_casing_cm_cases_lbl); + ui_casing_layout->setWidget(9, QFormLayout::LabelRole, ui_casing_cm_cases_lbl); ui_casing_cm_cases_textbox = new QLineEdit(ui_casing_widget); ui_casing_cm_cases_textbox->setText(ao_app->get_casing_can_host_cases()); - ui_casing_layout->setWidget(8, QFormLayout::FieldRole, ui_casing_cm_cases_textbox); + ui_casing_layout->setWidget(9, QFormLayout::FieldRole, ui_casing_cm_cases_textbox); // When we're done, we should continue the updates! setUpdatesEnabled(true); diff --git a/src/aosfxplayer.cpp b/src/aosfxplayer.cpp index e219c03..e39071e 100644 --- a/src/aosfxplayer.cpp +++ b/src/aosfxplayer.cpp @@ -5,9 +5,6 @@ AOSfxPlayer::AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app): QObject() { m_parent = parent; ao_app = p_ao_app; - sfx_loop_timer = new QTimer(this); - sfx_loop_timer->setSingleShot(true); - connect(sfx_loop_timer, SIGNAL(timeout()), this, SLOT(restart_loop())); } void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout) @@ -39,12 +36,13 @@ void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout) if (ao_app->get_audio_output_device() != "default") BASS_ChannelSetDevice(m_stream, BASS_GetDevice()); BASS_ChannelPlay(m_stream, false); - sfx_loop_timer->stop(); - QWORD len=BASS_ChannelGetLength(m_stream, BASS_POS_BYTE); // the length in bytes - double time=BASS_ChannelBytes2Seconds(m_stream, len); // the length in seconds - if(time > 0 && looping_sfx && ao_app->get_looping_sfx()) + if(looping_sfx && ao_app->get_looping_sfx()) { - sfx_loop_timer->start(time*1000); + BASS_ChannelFlags(m_stream, BASS_SAMPLE_LOOP, BASS_SAMPLE_LOOP); + } + else + { + BASS_ChannelFlags(m_stream, 0, BASS_SAMPLE_LOOP); } } @@ -56,18 +54,6 @@ void AOSfxPlayer::setLooping(bool is_looping) void AOSfxPlayer::stop() { BASS_ChannelStop(m_stream); - sfx_loop_timer->stop(); -} - -void AOSfxPlayer::restart_loop() -{ - if(ao_app->get_looping_sfx() && looping_sfx) - { - QWORD len=BASS_ChannelGetLength(m_stream, BASS_POS_BYTE); // the length in bytes - double time=BASS_ChannelBytes2Seconds(m_stream, len); // the length in seconds - sfx_loop_timer->start(time*1000); - BASS_ChannelPlay(m_stream, true); - } } void AOSfxPlayer::set_volume(int p_value) diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 8c25a2d..a082e6b 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -984,12 +984,10 @@ void Courtroom::list_music() for (int n_song = 0 ; n_song < music_list.size() ; ++n_song) { QString i_song = music_list.at(n_song); - QString i_song_listname = i_song; - i_song_listname = i_song_listname.left(i_song_listname.lastIndexOf(".")); if (i_song.toLower().contains(ui_music_search->text().toLower())) { - ui_music_list->addItem(i_song_listname); + ui_music_list->addItem(i_song); music_row_to_number.append(n_song); QString song_path = ao_app->get_music_path(i_song); @@ -2825,7 +2823,6 @@ void Courtroom::handle_song(QStringList *p_contents) QString f_song = f_contents.at(0); QString f_song_clear = f_song; - f_song_clear = f_song_clear.left(f_song_clear.lastIndexOf(".")); int n_char = f_contents.at(1).toInt(); if (n_char < 0 || n_char >= char_list.size()) @@ -2865,7 +2862,7 @@ void Courtroom::handle_song(QStringList *p_contents) ic_chatlog_history.removeFirst(); } - append_ic_text(f_song_clear, str_show, true); + append_ic_text(f_song, str_show, true); music_player->play(f_song); } } @@ -2974,7 +2971,8 @@ void Courtroom::case_called(QString msg, bool def, bool pro, bool jud, bool jur, (ao_app->get_casing_prosecution_enabled() && pro) || (ao_app->get_casing_judge_enabled() && jud) || (ao_app->get_casing_juror_enabled() && jur) || - (ao_app->get_casing_steno_enabled() && steno)) + (ao_app->get_casing_steno_enabled() && steno) || + (ao_app->get_casing_wit_enabled() && witness)) { modcall_player->play(ao_app->get_sfx("case_call")); ao_app->alert(this); @@ -3822,11 +3820,12 @@ void Courtroom::on_casing_clicked() f_packet.append(QString::number(ao_app->get_casing_judge_enabled())); f_packet.append(QString::number(ao_app->get_casing_juror_enabled())); f_packet.append(QString::number(ao_app->get_casing_steno_enabled())); + f_packet.append(QString::number(ao_app->get_casing_wit_enabled())); ao_app->send_server_packet(new AOPacket("SETCASE", f_packet)); } else - ao_app->send_server_packet(new AOPacket("SETCASE#\"\"#0#0#0#0#0#0#%")); + ao_app->send_server_packet(new AOPacket("SETCASE#\"\"#0#0#0#0#0#0#0#%")); } } diff --git a/src/text_file_functions.cpp b/src/text_file_functions.cpp index 68d0a04..a5eb273 100644 --- a/src/text_file_functions.cpp +++ b/src/text_file_functions.cpp @@ -685,6 +685,12 @@ bool AOApplication::get_casing_steno_enabled() return result.startsWith("true"); } +bool AOApplication::get_casing_wit_enabled() +{ + QString result = configini->value("casing_wit_enabled", "false").value(); + return result.startsWith("true"); +} + bool AOApplication::get_casing_cm_enabled() { QString result = configini->value("casing_cm_enabled", "false").value(); From 4eb0d18c6651047b133165237b6f4b350d557c8f Mon Sep 17 00:00:00 2001 From: iamgoofball Date: Fri, 1 Feb 2019 17:16:43 -0800 Subject: [PATCH 14/46] whoops --- src/aooptionsdialog.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/aooptionsdialog.cpp b/src/aooptionsdialog.cpp index 03b4e67..b0e1e99 100644 --- a/src/aooptionsdialog.cpp +++ b/src/aooptionsdialog.cpp @@ -540,6 +540,7 @@ void AOOptionsDialog::save_pressed() configini->setValue("casing_juror_enabled", ui_casing_jur_cb->isChecked()); configini->setValue("casing_steno_enabled", ui_casing_steno_cb->isChecked()); configini->setValue("casing_cm_enabled", ui_casing_cm_cb->isChecked()); + configini->setValue("casing_wit_enabled", ui_casing_wit_cb->isChecked()); configini->setValue("casing_can_host_cases", ui_casing_cm_cases_textbox->text()); callwordsini->close(); From 0dcf8a7f179069dabae8aa61ba69675ad5182d76 Mon Sep 17 00:00:00 2001 From: iamgoofball Date: Fri, 1 Feb 2019 17:20:08 -0800 Subject: [PATCH 15/46] bump the version number to 2.7.2 --- Attorney_Online.pro | 2 +- include/aoapplication.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Attorney_Online.pro b/Attorney_Online.pro index 73d3534..8f15ad0 100644 --- a/Attorney_Online.pro +++ b/Attorney_Online.pro @@ -3,7 +3,7 @@ QT += core gui widgets multimedia network TARGET = Attorney_Online TEMPLATE = app -VERSION = 2.6.1.0 +VERSION = 2.7.2.0 INCLUDEPATH += $$PWD/include DESTDIR = $$PWD/bin diff --git a/include/aoapplication.h b/include/aoapplication.h index 19eb474..f1c4190 100644 --- a/include/aoapplication.h +++ b/include/aoapplication.h @@ -332,7 +332,7 @@ public: private: const int RELEASE = 2; const int MAJOR_VERSION = 7; - const int MINOR_VERSION = 1; + const int MINOR_VERSION = 2; QString current_theme = "default"; From e6cb5bd2cf241d638941ad5b403ab5fd7490335c Mon Sep 17 00:00:00 2001 From: iamgoofball Date: Sat, 23 Mar 2019 14:33:31 -0700 Subject: [PATCH 16/46] Fixes Objections hiding the current character, instead of overlaying on top of it. Adds screenshake to objects. --- src/courtroom.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/courtroom.cpp b/src/courtroom.cpp index a082e6b..636df5a 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -1517,7 +1517,6 @@ void Courtroom::handle_chatmessage(QStringList *p_contents) text_state = 0; anim_state = 0; ui_vp_objection->stop(); - ui_vp_player_char->stop(); chat_tick_timer->stop(); ui_vp_evidence_display->reset(); @@ -1564,16 +1563,19 @@ void Courtroom::handle_chatmessage(QStringList *p_contents) case 1: ui_vp_objection->play("holdit", f_char, f_custom_theme); objection_player->play("holdit.wav", f_char, f_custom_theme); + this->doScreenShake(); break; case 2: ui_vp_objection->play("objection", f_char, f_custom_theme); objection_player->play("objection.wav", f_char, f_custom_theme); + this->doScreenShake(); if(ao_app->get_objectmusic()) music_player->kill_loop(); break; case 3: ui_vp_objection->play("takethat", f_char, f_custom_theme); objection_player->play("takethat.wav", f_char, f_custom_theme); + this->doScreenShake(); break; //case 4 is AO2 only case 4: From 2d9fff2e969a952d1e83c1ade04d6beed2420dbc Mon Sep 17 00:00:00 2001 From: iamgoofball Date: Mon, 25 Mar 2019 11:14:53 -0700 Subject: [PATCH 17/46] Reverts screenshake on object, was controversial --- src/courtroom.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 636df5a..0905528 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -1563,19 +1563,16 @@ void Courtroom::handle_chatmessage(QStringList *p_contents) case 1: ui_vp_objection->play("holdit", f_char, f_custom_theme); objection_player->play("holdit.wav", f_char, f_custom_theme); - this->doScreenShake(); break; case 2: ui_vp_objection->play("objection", f_char, f_custom_theme); objection_player->play("objection.wav", f_char, f_custom_theme); - this->doScreenShake(); if(ao_app->get_objectmusic()) music_player->kill_loop(); break; case 3: ui_vp_objection->play("takethat", f_char, f_custom_theme); objection_player->play("takethat.wav", f_char, f_custom_theme); - this->doScreenShake(); break; //case 4 is AO2 only case 4: From 1a0d7a7cc4b18047f5afd853428921f32618e42e Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Fri, 26 Jul 2019 02:04:30 +0200 Subject: [PATCH 18/46] update gitignore to leave out obj files and the base folder --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 6ac11d6..1adb744 100644 --- a/.gitignore +++ b/.gitignore @@ -5,12 +5,15 @@ *.so *.pro.autosave base_override.h +.DS_Store base-full/ +base/ bass.lib bin/ bins/ +build/ release/ debug/ From e3d6d5e3a453864ef7567044ab26b9f9a038bb7a Mon Sep 17 00:00:00 2001 From: Paradox <25272926+Parazoid@users.noreply.github.com> Date: Mon, 23 Dec 2019 01:07:26 +0100 Subject: [PATCH 19/46] add flash and screenshake documentation Updated README to document the screenshake and flash in-character markup options. --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 0416e4a..5d8e2c6 100644 --- a/README.md +++ b/README.md @@ -100,6 +100,14 @@ If you begin a message with `~~` (two tildes), the two tildes are removed and th If two players are in the same position and select each other's characters using the in-game pair list (or with `/pair [id]`), they will appear alongside each other. You can set the offset of your character using the provided spinbox (or with `/offset [percentage]`). +### Screenflash (2.6+) + +Placing a `$` (dollar symbol) at any point in the message will cause a white flash to appear at that point, and the symbol will disappear. You can do this multiple times in one message and stack it up with any other markup symbol. The flash will be silent, unlike the equivalent button. + +### Screenshake (2.6+) + +Placing an `@` (at symbol) at any point in the message will cause the screen to shake at that point, and the symbol will disappear. You can do this multiple times in one message and stack it up with any other markup symbol (including the screenflash). + ### Non-interrupting preanimations (2.6+) When checked, this will force text to immediately begin displaying without waiting for the preanimation to finish. From abbbb43c985271c6d66b94ee384c6a401e43de8d Mon Sep 17 00:00:00 2001 From: sD Date: Thu, 26 Dec 2019 16:34:47 +0100 Subject: [PATCH 20/46] redundant headers in projectfile --- Attorney_Online.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Attorney_Online.pro b/Attorney_Online.pro index 8f15ad0..c11b5fd 100644 --- a/Attorney_Online.pro +++ b/Attorney_Online.pro @@ -11,7 +11,7 @@ OBJECTS_DIR = $$PWD/build MOC_DIR = $$PWD/build SOURCES += $$files($$PWD/src/*.cpp) -HEADERS += $$files($$PWD/include/*.h) $$PWD/include/aomusicplayer.h $$PWD/include/aosfxplayer.h +HEADERS += $$files($$PWD/include/*.h) LIBS += -L$$PWD/lib -lbass -ldiscord-rpc CONFIG += c++11 From cb1ed6d60dc394f293f90f06ad9988de053feecb Mon Sep 17 00:00:00 2001 From: sD Date: Fri, 21 Feb 2020 16:43:40 +0100 Subject: [PATCH 21/46] put minor version back --- include/aoapplication.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/aoapplication.h b/include/aoapplication.h index 280b731..e4f2ee6 100644 --- a/include/aoapplication.h +++ b/include/aoapplication.h @@ -342,6 +342,7 @@ public: private: const int RELEASE = 2; const int MAJOR_VERSION = 7; + const int MINOR_VERSION = 0; QString current_theme = "default"; From c8b11b398a7db6d8f45a88136e8a45e35b44320e Mon Sep 17 00:00:00 2001 From: sD Date: Fri, 21 Feb 2020 16:48:11 +0100 Subject: [PATCH 22/46] fix audio --- include/aomusicplayer.h | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/include/aomusicplayer.h b/include/aomusicplayer.h index 71ae604..255cc45 100644 --- a/include/aomusicplayer.h +++ b/include/aomusicplayer.h @@ -6,6 +6,7 @@ #elif defined(QTAUDIO) #include #endif + #include "aoapplication.h" #include @@ -14,12 +15,14 @@ #include #include +#if defined(BASSAUDIO) class AOMusicPlayer : public QObject { Q_OBJECT public: AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app); virtual ~AOMusicPlayer(); + void play(QString p_song); void set_volume(int p_value); @@ -30,6 +33,7 @@ public: private: QWidget *m_parent; AOApplication *ao_app; + int m_volume = 0; QString f_path; @@ -46,12 +50,18 @@ public: void play(QString p_song); void set_volume(int p_value); + void kill_loop(); + QString get_path(); + bool enable_looping = true; + private: - QMediaPlayer m_player; QWidget *m_parent; AOApplication *ao_app; + QMediaPlayer m_player; + int m_volume = 0; + QString f_path; }; #else class AOMusicPlayer : public QObject @@ -63,9 +73,16 @@ public: void play(QString p_song); void set_volume(int p_value); + void kill_loop(); + QString get_path(); + bool enable_looping = true; + private: QWidget *m_parent; AOApplication *ao_app; + + int m_volume = 0; + QString f_path; }; #endif From 0afca9243a47f30a946c69a974c4d257574d85e5 Mon Sep 17 00:00:00 2001 From: sD Date: Fri, 21 Feb 2020 16:53:56 +0100 Subject: [PATCH 23/46] looping wasnt in --- src/aosfxplayer.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/aosfxplayer.cpp b/src/aosfxplayer.cpp index 80b6ea3..d2140e3 100644 --- a/src/aosfxplayer.cpp +++ b/src/aosfxplayer.cpp @@ -107,6 +107,11 @@ void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout) } } +void AOSfxPlayer::setLooping(bool is_looping) +{ + this->looping_sfx = is_looping; +} + void AOSfxPlayer::stop() { m_sfx.stop(); @@ -134,6 +139,11 @@ void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout) } +void AOSfxPlayer::setLooping(bool is_looping) +{ + this->looping_sfx = is_looping; +} + void AOSfxPlayer::stop() { From 6c154841c37d6d97ba97a8f8c3e78e248434760f Mon Sep 17 00:00:00 2001 From: sD Date: Fri, 21 Feb 2020 16:54:06 +0100 Subject: [PATCH 24/46] area count got renamed --- src/packet_distribution.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index fe26849..246166b 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -397,7 +397,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) { musics_time = true; areas--; - w_courtroom->fix_last_area(); + //w_courtroom->fix_last_area(); w_courtroom->append_music(f_music); } else @@ -491,18 +491,18 @@ void AOApplication::server_packet_received(AOPacket *p_packet) f_contents.at(n_element).endsWith(".opus")) { musics_time = true; - w_courtroom->fix_last_area(); + // w_courtroom->fix_last_area(); w_courtroom->append_music(f_contents.at(n_element)); - areas--; + area_count--; } else { w_courtroom->append_area(f_contents.at(n_element)); - areas++; + area_count++; } } - for (int area_n = 0; area_n < areas; area_n++) + for (int area_n = 0; area_n < area_count; area_n++) { musics_time = true; continue; From 8d6b69e2f26dd0d365a10d15381946f989df0875 Mon Sep 17 00:00:00 2001 From: sD Date: Fri, 21 Feb 2020 17:02:55 +0100 Subject: [PATCH 25/46] replace mycourt_fuck --- src/charselect.cpp | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/charselect.cpp b/src/charselect.cpp index 875c8a5..b71d9b7 100644 --- a/src/charselect.cpp +++ b/src/charselect.cpp @@ -8,11 +8,11 @@ class AOCharSelectGenerationThreading : public QRunnable { public: - Courtroom *mycourt_fuck; + Courtroom *thisCourtroom; int char_num; AOCharButton *char_button; AOCharSelectGenerationThreading(Courtroom *my_courtroom, int character_number, AOCharButton *charbut){ - mycourt_fuck = my_courtroom; + thisCourtroom = my_courtroom; char_num = character_number; char_button = charbut; } @@ -21,40 +21,40 @@ public: AOCharButton* character = char_button; character->reset(); character->hide(); - character->set_image(mycourt_fuck->char_list.at(char_num).name); - mycourt_fuck->ui_char_button_list.append(character); + character->set_image(thisCourtroom->char_list.at(char_num).name); + thisCourtroom->ui_char_button_list.append(character); - mycourt_fuck->connect(character, SIGNAL(clicked()), mycourt_fuck->char_button_mapper, SLOT(map())); - mycourt_fuck->char_button_mapper->setMapping(character, mycourt_fuck->ui_char_button_list.size() - 1); + thisCourtroom->connect(character, SIGNAL(clicked()), thisCourtroom->char_button_mapper, SLOT(map())); + thisCourtroom->char_button_mapper->setMapping(character, thisCourtroom->ui_char_button_list.size() - 1); } }; class AOCharSelectFilterThreading : public QRunnable { public: - Courtroom *mycourt_fuck; + Courtroom *thisCourtroom; int char_num; AOCharSelectFilterThreading(Courtroom *my_courtroom, int character_number){ - mycourt_fuck = my_courtroom; + thisCourtroom = my_courtroom; char_num = character_number; } void run() { - AOCharButton* current_char = mycourt_fuck->ui_char_button_list.at(char_num); + AOCharButton* current_char = thisCourtroom->ui_char_button_list.at(char_num); - if (!mycourt_fuck->ui_char_taken->isChecked() && mycourt_fuck->char_list.at(char_num).taken) + if (!thisCourtroom->ui_char_taken->isChecked() && thisCourtroom->char_list.at(char_num).taken) return; - if (!mycourt_fuck->char_list.at(char_num).name.contains(mycourt_fuck->ui_char_search->text(), Qt::CaseInsensitive)) + if (!thisCourtroom->char_list.at(char_num).name.contains(thisCourtroom->ui_char_search->text(), Qt::CaseInsensitive)) return; // We only really need to update the fact that a character is taken // for the buttons that actually appear. // You'd also update the passwordedness and etc. here later. current_char->reset(); - current_char->set_taken(mycourt_fuck->char_list.at(char_num).taken); + current_char->set_taken(thisCourtroom->char_list.at(char_num).taken); - mycourt_fuck->ui_char_button_list_filtered.append(current_char); + thisCourtroom->ui_char_button_list_filtered.append(current_char); } }; From f93459ed0eec6c7c64bece75cb6e8de627c605b9 Mon Sep 17 00:00:00 2001 From: sD Date: Fri, 21 Feb 2020 17:18:25 +0100 Subject: [PATCH 26/46] remove fuck --- include/courtroom.h | 2 +- include/lobby.h | 2 +- src/aocharmovie.cpp | 31 +++++++++++++------------ src/courtroom.cpp | 56 ++++++++++++++++++++++----------------------- src/lobby.cpp | 4 ++-- 5 files changed, 48 insertions(+), 47 deletions(-) diff --git a/include/courtroom.h b/include/courtroom.h index 587d963..37d3f6f 100644 --- a/include/courtroom.h +++ b/include/courtroom.h @@ -197,7 +197,7 @@ public: //properly sets up some varibles: resets user state void enter_courtroom(int p_cid); - // mfw this didnt fucking exist yet + // set the character using an ID void set_character(int char_id); //helper function that populates ui_music_list with the contents of music_list diff --git a/include/lobby.h b/include/lobby.h index 06cd798..d32debe 100644 --- a/include/lobby.h +++ b/include/lobby.h @@ -79,7 +79,7 @@ private: void set_size_and_pos(QWidget *p_widget, QString p_identifier); public slots: - void fucking_threading_goddamn_it(QString fuckshitassgoddamnfuck); + void lobbyThreadHandler(QString loadingText); private slots: void on_public_servers_clicked(); void on_favorites_clicked(); diff --git a/src/aocharmovie.cpp b/src/aocharmovie.cpp index 7fed6b0..6aa6e35 100644 --- a/src/aocharmovie.cpp +++ b/src/aocharmovie.cpp @@ -88,10 +88,10 @@ void AOCharMovie::play_frame_sfx() void AOCharMovie::realization_two_network_boogaloo() { int current_frame = m_movie->currentFrameNumber(); - QStringList fucking_garbage = this->frame_realization_hellstring.split("^"); - for (int i = 0; i < fucking_garbage.length(); i++) { - QString fucking_christ = fucking_garbage.at(i); - QStringList extra_garbage = fucking_christ.split("|"); + QStringList realizationList = this->frame_realization_hellstring.split("^"); + for (int i = 0; i < realizationList.length(); i++) { + QString screenshakeList = realizationList.at(i); + QStringList extra_garbage = screenshakeList.split("|"); if(extra_garbage.at(0) != current_emote){ continue; } @@ -108,10 +108,10 @@ void AOCharMovie::realization_two_network_boogaloo() void AOCharMovie::screenshake_two_network_boogaloo() { int current_frame = m_movie->currentFrameNumber(); - QStringList fucking_garbage = this->frame_screenshake_hellstring.split("^"); - for (int i = 0; i < fucking_garbage.length(); i++) { - QString fucking_christ = fucking_garbage.at(i); - QStringList extra_garbage = fucking_christ.split("|"); + QStringList realizationList = this->frame_screenshake_hellstring.split("^"); + for (int i = 0; i < realizationList.length(); i++) { + QString screenshakeList = realizationList.at(i); + QStringList extra_garbage = screenshakeList.split("|"); if(extra_garbage.at(0) != current_emote){ continue; } @@ -128,10 +128,10 @@ void AOCharMovie::screenshake_two_network_boogaloo() void AOCharMovie::sfx_two_network_boogaloo() { int current_frame = m_movie->currentFrameNumber(); - QStringList fucking_garbage = this->frame_sfx_hellstring.split("^"); - for (int i = 0; i < fucking_garbage.length(); i++) { - QString fucking_christ = fucking_garbage.at(i); - QStringList extra_garbage = fucking_christ.split("|"); + QStringList realizationList = this->frame_sfx_hellstring.split("^"); + for (int i = 0; i < realizationList.length(); i++) { + QString screenshakeList = realizationList.at(i); + QStringList extra_garbage = screenshakeList.split("|"); if(extra_garbage.at(0) != current_emote){ continue; } @@ -168,8 +168,9 @@ void AOCharMovie::movie_ticker() { m_movie->jumpToNextFrame(); } - this->LoadImageWithStupidMethodForFlipSupport(m_movie->currentImage()); // imagine if QT had sane stuff like "mirror on QMovie" or "resize the image on QT" or "interface with the current QMovie image" or anything else - // ps: fuck private functions/variables as a concept, freedom 2 do dangerous things 5ever + this->LoadImageWithStupidMethodForFlipSupport(m_movie->currentImage()); + // imagine if QT had sane stuff like "mirror on QMovie" or "resize the image on QT" or "interface with the current QMovie image" or anything else + this->play_frame_sfx(); if(!apng){ ticker->start(m_movie->nextFrameDelay()); @@ -180,7 +181,7 @@ void AOCharMovie::movie_ticker() void AOCharMovie::LoadImageWithStupidMethodForFlipSupport(QImage image) { QPixmap f_pixmap; - if(m_flipped) // imagine if QT wasn't handicapped harder than people who think MLP is good + if(m_flipped) f_pixmap = QPixmap::fromImage(image.mirrored(true, false)); else f_pixmap = QPixmap::fromImage(image); diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 054603d..e62f6c6 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -76,7 +76,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() misc_sfx_player->set_volume(0); frame_emote_sfx_player = new AOSfxPlayer(this, ao_app); frame_emote_sfx_player->set_volume(0); - pair_frame_emote_sfx_player = new AOSfxPlayer(this, ao_app); // todo: recode pair // todo: recode fucking everything + pair_frame_emote_sfx_player = new AOSfxPlayer(this, ao_app); // todo: recode pair pair_frame_emote_sfx_player->set_volume(0); blip_player = new AOBlipPlayer(this, ao_app); @@ -878,7 +878,7 @@ void Courtroom::set_background(QString p_background) } } -void Courtroom::set_character(int char_id) // can you fucking believe this didn't exist yet +void Courtroom::set_character(int char_id) { m_cid = char_id; @@ -1129,62 +1129,62 @@ void Courtroom::append_server_chatmessage(QString p_name, QString p_message, QSt ui_server_chatlog->append_chatmessage(p_name, p_message, colour); } -class AOFrameThreadingBullshitPre : public QRunnable +class AOFrameThreadingPre : public QRunnable { public: - Courtroom *mycourt_fuck; + Courtroom *thisCourtroom; int my_frameNumber; - AOFrameThreadingBullshitPre(Courtroom *my_courtroom, int frameNumber){ - mycourt_fuck = my_courtroom; + AOFrameThreadingPre(Courtroom *my_courtroom, int frameNumber){ + thisCourtroom = my_courtroom; my_frameNumber = frameNumber; } void run() { qDebug() << my_frameNumber << " FRAME NUMBER" << " from" << QThread::currentThread(); - QString sfx_to_play = mycourt_fuck->ao_app->get_frame_sfx_name(mycourt_fuck->current_char, mycourt_fuck->ao_app->get_pre_emote(mycourt_fuck->current_char, mycourt_fuck->current_emote), my_frameNumber); - QString screenshake_to_play = mycourt_fuck->ao_app->get_screenshake_frame(mycourt_fuck->current_char, mycourt_fuck->ao_app->get_pre_emote(mycourt_fuck->current_char, mycourt_fuck->current_emote), my_frameNumber); - QString realization_to_play = mycourt_fuck->ao_app->get_realization_frame(mycourt_fuck->current_char, mycourt_fuck->ao_app->get_pre_emote(mycourt_fuck->current_char, mycourt_fuck->current_emote), my_frameNumber); + QString sfx_to_play = thisCourtroom->ao_app->get_frame_sfx_name(thisCourtroom->current_char, thisCourtroom->ao_app->get_pre_emote(thisCourtroom->current_char, thisCourtroom->current_emote), my_frameNumber); + QString screenshake_to_play = thisCourtroom->ao_app->get_screenshake_frame(thisCourtroom->current_char, thisCourtroom->ao_app->get_pre_emote(thisCourtroom->current_char, thisCourtroom->current_emote), my_frameNumber); + QString realization_to_play = thisCourtroom->ao_app->get_realization_frame(thisCourtroom->current_char, thisCourtroom->ao_app->get_pre_emote(thisCourtroom->current_char, thisCourtroom->current_emote), my_frameNumber); if(sfx_to_play != "") { - mycourt_fuck->threading_sfx += "|" + QString::number(my_frameNumber) + "=" + sfx_to_play; + thisCourtroom->threading_sfx += "|" + QString::number(my_frameNumber) + "=" + sfx_to_play; } if(screenshake_to_play != "") { - mycourt_fuck->threading_shake += "|" + QString::number(my_frameNumber) + "=" + screenshake_to_play; + thisCourtroom->threading_shake += "|" + QString::number(my_frameNumber) + "=" + screenshake_to_play; } if(realization_to_play != "") { - mycourt_fuck->threading_flash += "|" + QString::number(my_frameNumber) + "=" + realization_to_play; + thisCourtroom->threading_flash += "|" + QString::number(my_frameNumber) + "=" + realization_to_play; } } }; -class AOFrameThreadingBullshit : public QRunnable +class AOFrameThreading : public QRunnable { public: - Courtroom *mycourt_fuck; + Courtroom *thisCourtroom; int my_frameNumber; - AOFrameThreadingBullshit(Courtroom *my_courtroom, int frameNumber){ - mycourt_fuck = my_courtroom; + AOFrameThreading(Courtroom *my_courtroom, int frameNumber){ + thisCourtroom = my_courtroom; my_frameNumber = frameNumber; } void run() { - QString sfx_to_play = mycourt_fuck->ao_app->get_frame_sfx_name(mycourt_fuck->current_char, mycourt_fuck->threading_prefix + mycourt_fuck->ao_app->get_emote(mycourt_fuck->current_char, mycourt_fuck->current_emote), my_frameNumber); - QString screenshake_to_play = mycourt_fuck->ao_app->get_screenshake_frame(mycourt_fuck->current_char, mycourt_fuck->threading_prefix + mycourt_fuck->ao_app->get_emote(mycourt_fuck->current_char, mycourt_fuck->current_emote), my_frameNumber); - QString realization_to_play = mycourt_fuck->ao_app->get_realization_frame(mycourt_fuck->current_char, mycourt_fuck->threading_prefix + mycourt_fuck->ao_app->get_emote(mycourt_fuck->current_char, mycourt_fuck->current_emote), my_frameNumber); + QString sfx_to_play = thisCourtroom->ao_app->get_frame_sfx_name(thisCourtroom->current_char, thisCourtroom->threading_prefix + thisCourtroom->ao_app->get_emote(thisCourtroom->current_char, thisCourtroom->current_emote), my_frameNumber); + QString screenshake_to_play = thisCourtroom->ao_app->get_screenshake_frame(thisCourtroom->current_char, thisCourtroom->threading_prefix + thisCourtroom->ao_app->get_emote(thisCourtroom->current_char, thisCourtroom->current_emote), my_frameNumber); + QString realization_to_play = thisCourtroom->ao_app->get_realization_frame(thisCourtroom->current_char, thisCourtroom->threading_prefix + thisCourtroom->ao_app->get_emote(thisCourtroom->current_char, thisCourtroom->current_emote), my_frameNumber); if(sfx_to_play != "") { - mycourt_fuck->threading_sfx += "|" + QString::number(my_frameNumber) + "=" + sfx_to_play; + thisCourtroom->threading_sfx += "|" + QString::number(my_frameNumber) + "=" + sfx_to_play; } if(screenshake_to_play != "") { - mycourt_fuck->threading_shake += "|" + QString::number(my_frameNumber) + "=" + screenshake_to_play; + thisCourtroom->threading_shake += "|" + QString::number(my_frameNumber) + "=" + screenshake_to_play; } if(realization_to_play != "") { - mycourt_fuck->threading_flash += "|" + QString::number(my_frameNumber) + "=" + realization_to_play; + thisCourtroom->threading_flash += "|" + QString::number(my_frameNumber) + "=" + realization_to_play; } } }; @@ -1393,7 +1393,7 @@ void Courtroom::on_chat_return_pressed() frame_emote_checker = new QMovie(this); frame_emote_checker->setFileName(preemote); frame_emote_checker->jumpToFrame(0); - qDebug() << "Premote fuck: " << frame_emote_checker->frameCount(); + qDebug() << "Premote: " << frame_emote_checker->frameCount(); preemote_sfx += ao_app->get_pre_emote(current_char, current_emote); preemote_shake += ao_app->get_pre_emote(current_char, current_emote); @@ -1404,7 +1404,7 @@ void Courtroom::on_chat_return_pressed() threading_flash = preemote_flash; for(int i=0; i < frame_emote_checker->frameCount(); i++){ - AOFrameThreadingBullshitPre *testfuck = new AOFrameThreadingBullshitPre(this, i); + AOFrameThreadingPre *testfuck = new AOFrameThreadingPre(this, i); QThreadPool::globalInstance()->start(testfuck); } QThreadPool::globalInstance()->waitForDone(); @@ -1425,7 +1425,7 @@ void Courtroom::on_chat_return_pressed() frame_emote_checker = new QMovie(this); frame_emote_checker->setFileName(talkemote_to_check); frame_emote_checker->jumpToFrame(0); - qDebug() << "TALK fuck: " << frame_emote_checker->frameCount(); + qDebug() << "Talk: " << frame_emote_checker->frameCount(); threading_sfx = talkemote_sfx; threading_shake = talkemote_shake; @@ -1433,7 +1433,7 @@ void Courtroom::on_chat_return_pressed() threading_prefix = QString("(b)"); for(int i=0; i < frame_emote_checker->frameCount(); i++){ - AOFrameThreadingBullshit *testfuck = new AOFrameThreadingBullshit(this, i); + AOFrameThreading *testfuck = new AOFrameThreading(this, i); QThreadPool::globalInstance()->start(testfuck); } QThreadPool::globalInstance()->waitForDone(); @@ -1455,14 +1455,14 @@ void Courtroom::on_chat_return_pressed() frame_emote_checker = new QMovie(this); frame_emote_checker->setFileName(idleemote_to_check); frame_emote_checker->jumpToFrame(0); - qDebug() << "idle fuck: " << frame_emote_checker->frameCount(); + qDebug() << "idle: " << frame_emote_checker->frameCount(); threading_sfx = idleemote_sfx; threading_shake = idleemote_shake; threading_flash = idleemote_flash; threading_prefix = QString("(a)"); for(int i=0; i < frame_emote_checker->frameCount(); i++){ - AOFrameThreadingBullshit *testfuck = new AOFrameThreadingBullshit(this, i); + AOFrameThreading *testfuck = new AOFrameThreading(this, i); QThreadPool::globalInstance()->start(testfuck); } QThreadPool::globalInstance()->waitForDone(); diff --git a/src/lobby.cpp b/src/lobby.cpp index 17a07a7..8744d6b 100644 --- a/src/lobby.cpp +++ b/src/lobby.cpp @@ -173,8 +173,8 @@ void Lobby::set_size_and_pos(QWidget *p_widget, QString p_identifier) } } -void Lobby::fucking_threading_goddamn_it(QString text){ - this->set_loading_text(text); +void Lobby::lobbyThreadHandler(QString loadingText){ + this->set_loading_text(loadingText); } void Lobby::set_loading_text(QString p_text) From 9f5343e0bd93bc735bf6b4b4feea644ce8e048f8 Mon Sep 17 00:00:00 2001 From: sD Date: Fri, 21 Feb 2020 17:18:39 +0100 Subject: [PATCH 27/46] put the old char loading back --- src/packet_distribution.cpp | 45 +++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index 246166b..e0b91d8 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -323,6 +323,51 @@ void AOApplication::server_packet_received(AOPacket *p_packet) if (is_discord_enabled()) discord->state_server(server_name.toStdString(), hash.result().toBase64().toStdString()); } + else if (header == "CI") + { + if (!courtroom_constructed) + goto end; + + for (int n_element = 0 ; n_element < f_contents.size() ; n_element += 2) + { + if (f_contents.at(n_element).toInt() != loaded_chars) + break; + + //this means we are on the last element and checking n + 1 element will be game over so + if (n_element == f_contents.size() - 1) + break; + + QStringList sub_elements = f_contents.at(n_element + 1).split("&"); + if (sub_elements.size() < 2) + break; + + char_type f_char; + f_char.name = sub_elements.at(0); + f_char.description = sub_elements.at(1); + f_char.evidence_string = sub_elements.at(3); + //temporary. the CharsCheck packet sets this properly + f_char.taken = false; + + ++loaded_chars; + + w_lobby->set_loading_text("Loading chars:\n" + QString::number(loaded_chars) + "/" + QString::number(char_list_size)); + + w_courtroom->append_char(f_char); + + int total_loading_size = char_list_size * 2 + evidence_list_size + music_list_size; + int loading_value = int(((loaded_chars + generated_chars + loaded_music + loaded_evidence) / static_cast(total_loading_size)) * 100); + w_lobby->set_loading_value(loading_value); + } + + if (improved_loading_enabled) + send_server_packet(new AOPacket("RE#%")); + else + { + QString next_packet_number = QString::number(((loaded_chars - 1) / 10) + 1); + send_server_packet(new AOPacket("AN#" + next_packet_number + "#%")); + } + + } else if (header == "EI") { if (!courtroom_constructed) From 87e359487d7e7d75cb696736f2a5da21d9648898 Mon Sep 17 00:00:00 2001 From: sD Date: Fri, 21 Feb 2020 17:57:46 +0100 Subject: [PATCH 28/46] combine these conditions --- src/courtroom.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/courtroom.cpp b/src/courtroom.cpp index e62f6c6..64c288c 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -2374,7 +2374,7 @@ void Courtroom::chat_tick() f_message.remove(0,2); } - if (f_message.size() == 0) + if (f_message.size() == 0 || tick_pos >= f_message.size()) { text_state = 2; if (anim_state != 4) From 2716416b62ce6ffec89d2a8b4b984b709cb5221a Mon Sep 17 00:00:00 2001 From: sD Date: Fri, 21 Feb 2020 18:00:23 +0100 Subject: [PATCH 29/46] only load bass plugins when bass is included --- include/courtroom.h | 2 ++ src/courtroom.cpp | 9 ++------- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/include/courtroom.h b/include/courtroom.h index 37d3f6f..4d271e4 100644 --- a/include/courtroom.h +++ b/include/courtroom.h @@ -688,7 +688,9 @@ private slots: void ping_server(); + #ifdef BASSAUDIO void load_bass_opus_plugin(); + #endif }; #endif // COURTROOM_H diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 64c288c..6510ca7 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -3955,30 +3955,25 @@ Courtroom::~Courtroom() delete blip_player; } - +#ifdef BASSAUDIO #if (defined (_WIN32) || defined (_WIN64)) void Courtroom::load_bass_opus_plugin() { - #ifdef BASSAUDIO BASS_PluginLoad("bassopus.dll", 0); - #endif } #elif (defined (LINUX) || defined (__linux__)) void Courtroom::load_bass_opus_plugin() { - #ifdef BASSAUDIO BASS_PluginLoad("libbassopus.so", 0); - #endif } #elif defined __APPLE__ void Courtroom::load_bass_opus_plugin() { QString libpath = ao_app->get_base_path() + "../../Frameworks/libbassopus.dylib"; QByteArray ba = libpath.toLocal8Bit(); - #ifdef BASSAUDIO BASS_PluginLoad(ba.data(), 0); - #endif } #else #error This operating system is unsupported for bass plugins. #endif +#endif From 4580816f96a59ed4a7fb8b5f50f86022d97707a1 Mon Sep 17 00:00:00 2001 From: sD Date: Fri, 21 Feb 2020 18:29:36 +0100 Subject: [PATCH 30/46] character is a little nondescriptive for the button --- src/charselect.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/charselect.cpp b/src/charselect.cpp index b71d9b7..fb8b987 100644 --- a/src/charselect.cpp +++ b/src/charselect.cpp @@ -250,8 +250,8 @@ void Courtroom::character_loading_finished() // Later on, we'll be revealing buttons as we need them. for (int n = 0; n < char_list.size(); n++) { - AOCharButton* character = new AOCharButton(ui_char_buttons, ao_app, 0, 0, char_list.at(n).taken); - AOCharSelectGenerationThreading *char_generate = new AOCharSelectGenerationThreading(this, n, character); + AOCharButton* characterButton = new AOCharButton(ui_char_buttons, ao_app, 0, 0, char_list.at(n).taken); + AOCharSelectGenerationThreading *char_generate = new AOCharSelectGenerationThreading(this, n, characterButton); QThreadPool::globalInstance()->start(char_generate); if(QThreadPool::globalInstance()->activeThreadCount() == QThreadPool::globalInstance()->maxThreadCount()) { From ed240c6ab010712bb67bdbbe37540c4d3d3b629d Mon Sep 17 00:00:00 2001 From: sD Date: Fri, 21 Feb 2020 18:33:04 +0100 Subject: [PATCH 31/46] same here --- src/charselect.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/charselect.cpp b/src/charselect.cpp index fb8b987..e0a3052 100644 --- a/src/charselect.cpp +++ b/src/charselect.cpp @@ -18,14 +18,14 @@ public: } void run() { - AOCharButton* character = char_button; - character->reset(); - character->hide(); - character->set_image(thisCourtroom->char_list.at(char_num).name); - thisCourtroom->ui_char_button_list.append(character); + AOCharButton* thisCharacterButton = char_button; + thisCharacterButton->reset(); + thisCharacterButton->hide(); + thisCharacterButton->set_image(thisCourtroom->char_list.at(char_num).name); + thisCourtroom->ui_char_button_list.append(thisCharacterButton); - thisCourtroom->connect(character, SIGNAL(clicked()), thisCourtroom->char_button_mapper, SLOT(map())); - thisCourtroom->char_button_mapper->setMapping(character, thisCourtroom->ui_char_button_list.size() - 1); + thisCourtroom->connect(thisCharacterButton, SIGNAL(clicked()), thisCourtroom->char_button_mapper, SLOT(map())); + thisCourtroom->char_button_mapper->setMapping(thisCharacterButton, thisCourtroom->ui_char_button_list.size() - 1); } }; From b5c514100787d630c7d4f6eadad16734186c80f7 Mon Sep 17 00:00:00 2001 From: sD Date: Fri, 21 Feb 2020 18:47:46 +0100 Subject: [PATCH 32/46] make network debug depend on if its a debug build or not --- Attorney_Online.pro | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Attorney_Online.pro b/Attorney_Online.pro index 488ddd1..941f89b 100644 --- a/Attorney_Online.pro +++ b/Attorney_Online.pro @@ -34,6 +34,10 @@ contains(DEFINES, QTAUDIO) { QT += multimedia } +contains(CONFIG, qml_debug) { +DEFINES += DEBUG_NETWORK +} + macx:LIBS += -framework CoreFoundation -framework Foundation -framework CoreServices From 0b16ac863cd3e90475e8bcb170a238350b060f20 Mon Sep 17 00:00:00 2001 From: sD Date: Sun, 23 Feb 2020 02:56:57 +0100 Subject: [PATCH 33/46] the charselect works again --- src/courtroom.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 6510ca7..61f74e9 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -63,6 +63,8 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() testimony_hide_timer = new QTimer(this); testimony_hide_timer->setSingleShot(true); + char_button_mapper = new QSignalMapper(this); + music_player = new AOMusicPlayer(this, ao_app); music_player->set_volume(0); From 5cf1fdcc2dda1a6d9e7ec1261c8f20a9fbe79816 Mon Sep 17 00:00:00 2001 From: sD Date: Sun, 23 Feb 2020 03:13:07 +0100 Subject: [PATCH 34/46] connect the signal to char_clicked --- src/charselect.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/charselect.cpp b/src/charselect.cpp index e0a3052..1ea484a 100644 --- a/src/charselect.cpp +++ b/src/charselect.cpp @@ -97,6 +97,7 @@ void Courtroom::construct_char_select() set_size_and_pos(ui_char_buttons, "char_buttons"); + connect(char_button_mapper, SIGNAL(mapped(int)), this, SLOT(char_clicked(int))); connect(ui_back_to_lobby, SIGNAL(clicked()), this, SLOT(on_back_to_lobby_clicked())); connect(ui_char_select_left, SIGNAL(clicked()), this, SLOT(on_char_select_left_clicked())); From 0123b4d1924a495827f91eef72f1427119cf1651 Mon Sep 17 00:00:00 2001 From: sD Date: Sun, 23 Feb 2020 03:19:05 +0100 Subject: [PATCH 35/46] move the click event back to the slots --- include/courtroom.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/courtroom.h b/include/courtroom.h index 4d271e4..41e88e7 100644 --- a/include/courtroom.h +++ b/include/courtroom.h @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include @@ -560,7 +561,6 @@ private: void construct_char_select(); void set_char_select(); void set_char_select_page(); - void char_clicked(int n_char); void put_button_in_place(int starting, int chars_on_this_page); void filter_character_list(); @@ -682,6 +682,8 @@ private slots: void on_spectator_clicked(); + void char_clicked(int n_char); + void on_switch_area_music_clicked(); void on_casing_clicked(); From 16bd89b6ada161e47b7acb8219e6c39c1baa3a1e Mon Sep 17 00:00:00 2001 From: sD Date: Sun, 23 Feb 2020 11:35:32 +0100 Subject: [PATCH 36/46] detect == as music start --- src/packet_distribution.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index e0b91d8..ffc1b1c 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -529,7 +529,8 @@ void AOApplication::server_packet_received(AOPacket *p_packet) } else { - if (f_contents.at(n_element).endsWith(".wav") || + if (f_contents.at(n_element).startsWith("==") || + f_contents.at(n_element).endsWith(".wav") || f_contents.at(n_element).endsWith(".mp3") || f_contents.at(n_element).endsWith(".mp4") || f_contents.at(n_element).endsWith(".ogg") || @@ -547,11 +548,6 @@ void AOApplication::server_packet_received(AOPacket *p_packet) } } - for (int area_n = 0; area_n < area_count; area_n++) - { - musics_time = true; - continue; - } AOPacketLoadMusicThreading *music_load = new AOPacketLoadMusicThreading(this, f_contents.at(n_element), musics_time); QThreadPool::globalInstance()->start(music_load); ++loaded_music; From 444b0ff60f479b9fa0df6e7e6682c1f79b4025aa Mon Sep 17 00:00:00 2001 From: sD Date: Sun, 23 Feb 2020 11:43:41 +0100 Subject: [PATCH 37/46] replace music loading --- src/packet_distribution.cpp | 75 ++++++++++++++----------------------- 1 file changed, 28 insertions(+), 47 deletions(-) diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index ffc1b1c..4bfc715 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -511,58 +511,39 @@ void AOApplication::server_packet_received(AOPacket *p_packet) } else if (header == "SM") { - if (!courtroom_constructed) - goto end; + if (!courtroom_constructed) + goto end; - bool musics_time = false; - area_count = 0; + bool musics_time = false; + area_count = 0; - for (int n_element = 0 ; n_element < f_contents.size() ; ++n_element) - { - ++loaded_music; - - w_lobby->set_loading_text(tr("Loading music:\n%1/%2").arg(QString::number(loaded_music)).arg(QString::number(music_list_size))); - - if (musics_time) - { - w_courtroom->append_music(f_contents.at(n_element)); - } - else - { - if (f_contents.at(n_element).startsWith("==") || - f_contents.at(n_element).endsWith(".wav") || - f_contents.at(n_element).endsWith(".mp3") || - f_contents.at(n_element).endsWith(".mp4") || - f_contents.at(n_element).endsWith(".ogg") || - f_contents.at(n_element).endsWith(".opus")) + for (int n_element = 0 ; n_element < f_contents.size() ; ++n_element) { - musics_time = true; - // w_courtroom->fix_last_area(); - w_courtroom->append_music(f_contents.at(n_element)); - area_count--; + if (!musics_time && (f_contents.at(n_element).startsWith("==") || + f_contents.at(n_element).endsWith(".wav") || + f_contents.at(n_element).endsWith(".mp3") || + f_contents.at(n_element).endsWith(".mp4") || + f_contents.at(n_element).endsWith(".ogg") || + f_contents.at(n_element).endsWith(".opus"))) + { + musics_time = true; + continue; + } + AOPacketLoadMusicThreading *music_load = new AOPacketLoadMusicThreading(this, f_contents.at(n_element), musics_time); + QThreadPool::globalInstance()->start(music_load); + ++loaded_music; + int total_loading_size = char_list_size * 2 + evidence_list_size + music_list_size; + int loading_value = int(((loaded_chars + generated_chars + loaded_music + loaded_evidence) / static_cast(total_loading_size)) * 100); + w_lobby->set_loading_value(loading_value); + w_lobby->set_loading_text("Loading music:\n" + QString::number(loaded_music) + "/" + QString::number(music_list_size)); + if(QThreadPool::globalInstance()->activeThreadCount() == QThreadPool::globalInstance()->maxThreadCount()) + { + QThreadPool::globalInstance()->waitForDone(); //out of order music is bad + } } - else - { - w_courtroom->append_area(f_contents.at(n_element)); - area_count++; - } - } + QThreadPool::globalInstance()->waitForDone(); - AOPacketLoadMusicThreading *music_load = new AOPacketLoadMusicThreading(this, f_contents.at(n_element), musics_time); - QThreadPool::globalInstance()->start(music_load); - ++loaded_music; - int total_loading_size = char_list_size * 2 + evidence_list_size + music_list_size; - int loading_value = int(((loaded_chars + generated_chars + loaded_music + loaded_evidence) / static_cast(total_loading_size)) * 100); - w_lobby->set_loading_value(loading_value); - w_lobby->set_loading_text("Loading music:\n" + QString::number(loaded_music) + "/" + QString::number(music_list_size)); - if(QThreadPool::globalInstance()->activeThreadCount() == QThreadPool::globalInstance()->maxThreadCount()) - { - QThreadPool::globalInstance()->waitForDone(); //out of order music is bad - } - } - QThreadPool::globalInstance()->waitForDone(); - - send_server_packet(new AOPacket("RD#%")); + send_server_packet(new AOPacket("RD#%")); } else if (header == "DONE") { From 1291e776b628b6847045b18998c75c2afb474581 Mon Sep 17 00:00:00 2001 From: sD Date: Sun, 23 Feb 2020 12:25:10 +0100 Subject: [PATCH 38/46] handle all types of musiclists --- src/path_functions.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/path_functions.cpp b/src/path_functions.cpp index c2c15a2..72b7acc 100644 --- a/src/path_functions.cpp +++ b/src/path_functions.cpp @@ -96,22 +96,31 @@ QString AOApplication::get_sounds_path(QString p_file) QString AOApplication::get_music_path(QString p_song) { + QString withending_check = get_base_path() + "sounds/music/" + p_song; QString mp3_check = get_base_path() + "sounds/music/" + p_song + ".mp3"; QString opus_check = get_base_path() + "sounds/music/" + p_song + ".opus"; if (file_exists(opus_check)) { #ifndef CASE_SENSITIVE_FILESYSTEM - return get_base_path() + "sounds/music/" + p_song + ".opus"; + return opus_check; #else - return get_case_sensitive_path(get_base_path() + "sounds/music/" + p_song + ".opus"); + return get_case_sensitive_path(opus_check); #endif } else if (file_exists(mp3_check)) { #ifndef CASE_SENSITIVE_FILESYSTEM - return get_base_path() + "sounds/music/" + p_song + ".mp3"; + return mp3_check; #else - return get_case_sensitive_path(get_base_path() + "sounds/music/" + p_song + ".mp3"); + return get_case_sensitive_path(mp3_check); + #endif + } + else if (file_exists(withending_check)) + { + #ifndef CASE_SENSITIVE_FILESYSTEM + return withending_check; + #else + return get_case_sensitive_path(withending_check); #endif } #ifndef CASE_SENSITIVE_FILESYSTEM From 4af8ba9c38fcab44fc29bf39299a8341ddbb389a Mon Sep 17 00:00:00 2001 From: sD Date: Sun, 23 Feb 2020 12:28:07 +0100 Subject: [PATCH 39/46] what was graphmeme even fot --- src/courtroom.cpp | 32 ++++++++++++-------------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 61f74e9..953b050 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -2361,7 +2361,6 @@ void Courtroom::chat_tick() //do not perform heavy operations here QString f_message = m_chatmessage[MESSAGE]; - f_message.remove(0, tick_pos); // Due to our new text speed system, we always need to stop the timer now. chat_tick_timer->stop(); @@ -2376,7 +2375,7 @@ void Courtroom::chat_tick() f_message.remove(0,2); } - if (f_message.size() == 0 || tick_pos >= f_message.size()) + if (tick_pos >= f_message.size()) { text_state = 2; if (anim_state != 4) @@ -2388,21 +2387,9 @@ void Courtroom::chat_tick() else { - QTextBoundaryFinder tbf(QTextBoundaryFinder::Grapheme, f_message); - QString f_character; - int f_char_length; - - tbf.toNextBoundary(); - - if (tbf.position() == -1) - f_character = f_message; - else - f_character = f_message.left(tbf.position()); - - f_char_length = f_character.length(); + QString f_character = f_message.at(tick_pos); f_character = f_character.toHtmlEscaped(); - if (f_character == " ") ui_vp_message->insertPlainText(" "); @@ -2507,7 +2494,7 @@ void Courtroom::chat_tick() else { next_character_is_not_special = true; - tick_pos -= f_char_length; + tick_pos--; } } @@ -2528,7 +2515,7 @@ void Courtroom::chat_tick() else { next_character_is_not_special = true; - tick_pos -= f_char_length; + tick_pos--; } } @@ -2572,7 +2559,11 @@ void Courtroom::chat_tick() case INLINE_GREY: ui_vp_message->insertHtml("" + f_character + ""); break; + default: + ui_vp_message->insertHtml(f_character); + break; } + } else { @@ -2623,7 +2614,7 @@ void Courtroom::chat_tick() if(blank_blip) qDebug() << "blank_blip found true"; - if (f_character != ' ' || blank_blip) + if (f_message.at(tick_pos) != ' ' || blank_blip) { if (blip_pos % blip_rate == 0 && !formatting_char) @@ -2635,7 +2626,7 @@ void Courtroom::chat_tick() ++blip_pos; } - tick_pos += f_char_length; + ++tick_pos; // Restart the timer, but according to the newly set speeds, if there were any. // Keep the speed at bay. @@ -2662,7 +2653,6 @@ void Courtroom::chat_tick() } } - void Courtroom::show_testimony() { if (!testimony_in_progress || m_chatmessage[SIDE] != "wit") @@ -2862,6 +2852,8 @@ void Courtroom::handle_song(QStringList *p_contents) QString f_song_clear = f_song; int n_char = f_contents.at(1).toInt(); + qDebug() << "playing song "+f_song; + if (n_char < 0 || n_char >= char_list.size()) { music_player->play(f_song); From 1d10cf1a08e992db68195a72f412490c415d3e09 Mon Sep 17 00:00:00 2001 From: sD Date: Sun, 23 Feb 2020 12:52:59 +0100 Subject: [PATCH 40/46] make UI buttons wider to make localizations fit --- base/themes/default/courtroom_design.ini | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/base/themes/default/courtroom_design.ini b/base/themes/default/courtroom_design.ini index f2dd2d7..d0495be 100644 --- a/base/themes/default/courtroom_design.ini +++ b/base/themes/default/courtroom_design.ini @@ -104,12 +104,12 @@ pos_dropdown = 200, 470, 80, 20 pre = 5, 490, 80, 21 ; Flip button -flip = 104, 490, 51, 21 +flip = 104, 490, 61, 21 ; Guard button guard = 200, 580, 81, 21 -pre_no_interrupt = 200, 490, 80, 21 +pre_no_interrupt = 200, 490, 85, 21 ; Penalty bars and judge's buttons for penalizing. Other than the bars, these ; ONLY show up on a character with /pos jud @@ -125,9 +125,9 @@ witness_testimony = 290, 470, 85, 42 cross_examination = 290, 515, 85, 42 ; Buttons to change character/Reload theme/Call Mod -change_character = 5, 610, 120, 23 -reload_theme = 5, 637, 94, 23 -call_mod = 104, 637, 64, 23 +change_character = 5, 610, 110, 23 +reload_theme = 5, 637, 110, 23 +call_mod = 120, 637, 90, 23 ; Mute button mute_button = 150, 515, 42, 42 @@ -198,11 +198,11 @@ ao2_ic_chat_name = 200, 534, 78, 23 ; This is useful if you suspect someone is impersonating others, for example, ; and they are using this in combination with ini-swapping to 'duplicate' a ; character. -showname_enable = 200, 510, 80, 21 +showname_enable = 200, 510, 85, 21 ; A simple button that opens up the settings menu. ; Equivalent to typing /settings in the OOC chat. -settings = 130, 610, 60, 23 +settings = 120, 610, 90, 23 ; The character search text input in the character selecton screen. ; The moment you enter some text, it immediately starts filtering. @@ -245,4 +245,4 @@ area_locked_color = 165, 43, 43 ; "casing_button" is an interface to help you announce a case (you have to be ; a CM first to be able to announce cases). casing = 200, 560, 80, 21 -casing_button = 173, 637, 60, 23 \ No newline at end of file +casing_button = 215, 637, 50, 23 \ No newline at end of file From ea099a51418de869ac89284f4dd61eeb283271c9 Mon Sep 17 00:00:00 2001 From: sD Date: Sun, 23 Feb 2020 12:59:20 +0100 Subject: [PATCH 41/46] loading lost in translation --- src/courtroom.cpp | 2 +- src/packet_distribution.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 953b050..ecfc304 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -2835,7 +2835,7 @@ void Courtroom::set_ban(int p_cid) if (p_cid != m_cid && p_cid != -1) return; - call_notice("You have been banned."); + call_notice(tr("You have been banned.")); ao_app->construct_lobby(); ao_app->destruct_courtroom(); diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index 4bfc715..d1c51bd 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -350,7 +350,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) ++loaded_chars; - w_lobby->set_loading_text("Loading chars:\n" + QString::number(loaded_chars) + "/" + QString::number(char_list_size)); + w_lobby->set_loading_text(tr("Loading chars:\n%1/%2").arg(QString::number(loaded_chars)).arg(QString::number(char_list_size))); w_courtroom->append_char(f_char); @@ -535,7 +535,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) int total_loading_size = char_list_size * 2 + evidence_list_size + music_list_size; int loading_value = int(((loaded_chars + generated_chars + loaded_music + loaded_evidence) / static_cast(total_loading_size)) * 100); w_lobby->set_loading_value(loading_value); - w_lobby->set_loading_text("Loading music:\n" + QString::number(loaded_music) + "/" + QString::number(music_list_size)); + w_lobby->set_loading_text(tr("Loading music:\n%1/%2").arg(QString::number(loaded_music)).arg(QString::number(music_list_size))); if(QThreadPool::globalInstance()->activeThreadCount() == QThreadPool::globalInstance()->maxThreadCount()) { QThreadPool::globalInstance()->waitForDone(); //out of order music is bad From 3c30098360b2598dc049d779e4ffc6dbba0d1d44 Mon Sep 17 00:00:00 2001 From: sD Date: Sun, 23 Feb 2020 13:08:19 +0100 Subject: [PATCH 42/46] translate char not found --- src/charselect.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/charselect.cpp b/src/charselect.cpp index 1ea484a..d6ee044 100644 --- a/src/charselect.cpp +++ b/src/charselect.cpp @@ -179,7 +179,7 @@ void Courtroom::char_clicked(int n_char) if (!file_exists(char_ini_path)) { - call_notice("Could not find " + char_ini_path); + call_notice(tr("Could not find %1").arg(char_ini_path, 1)); return; } From aaf3f6f0432f6193dc97c38a9b9d3a4d61bb6a0f Mon Sep 17 00:00:00 2001 From: sD Date: Sun, 23 Feb 2020 13:08:31 +0100 Subject: [PATCH 43/46] thanks qt linguini --- resource/translations/ao_de.ts | 347 ++++++++++++++++------------- resource/translations/ao_en.ts | 386 +++++++++++++++++++-------------- resource/translations/ao_es.ts | 353 +++++++++++++++++------------- resource/translations/ao_jp.ts | 384 ++++++++++++++++++-------------- resource/translations/ao_pl.ts | 351 +++++++++++++++++------------- resource/translations/ao_ru.ts | 351 +++++++++++++++++------------- 6 files changed, 1252 insertions(+), 920 deletions(-) diff --git a/resource/translations/ao_de.ts b/resource/translations/ao_de.ts index 1c0675b..4d800ad 100644 --- a/resource/translations/ao_de.ts +++ b/resource/translations/ao_de.ts @@ -27,67 +27,68 @@ Wir verwenden mehrere Master Server um Ausfälle zu verhindern, jedoch hat der C Bitte prüfe deine Internetverbindung und Firewall, und versuche es erneut. - + Outdated version! Your version: %1 Please go to aceattorneyonline.com to update. Version zu alt! Deine Version: %1 Bitte besuche aceattorneyonline.com für ein Update. - + You have been exiled from AO. Have a nice day. Du wurdest von AO befreit. Schönen Urlaub. - + Attorney Online 2 Attorney Online 2 - + Loading Laden - + Loading evidence: %1/%2 Lade Beweisstücke: %1/%2 - - + + Loading music: %1/%2 Lade Musik: %1/%2 - + + Loading chars: %1/%2 Lade Charaktere: %1/%2 - + You have been kicked from the server. Reason: %1 Du wurdest von diesem Server geschmissen. Grund: %1 - + You have been banned from the server. Reason: %1 Du wurdest von diesem Server verbannt. Grund: %1 - + You are banned on this server. Reason: %1 Du bist von diesem Server verbannt. @@ -151,271 +152,316 @@ Grund: Stenographer needed Stenograph benötigt + + + Witness needed + + AOOptionsDialog - + Settings Einstellungen - + Gameplay Spiel - + Theme: Theme: - + Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. Setzt das Theme. Wenn das neue Theme auch das Aussehen der Lobby verändert, must du diese neu laden um die Änderungen zu sehen. - + Log goes downwards: Verlauf geht nach unten: - + If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. Wenn angehakt werden neue Nachrichten unten erscheinen (wie beim OOC). Das traditionelle (AO1) Verhalten wäre nicht angehakt. - + Log length: Länge: - + The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'. Die Menge an Nachrichten die aufgehoben werden bevor alte gelöscht werden. 0 bedeutet unendlich. - + Default username: Standard Benutzername: - + Your OOC name will be automatically set to this value when you join a server. Dein OOC Name wird automatisch auf dies gesetzt. - + Custom shownames: Eigener Anzeigename: - + Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. Standardwert für die Anzeigename Box, welche den In-Charakter Namen bestimmt. - + Backup MS: Rückfall MS: - + If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address. Wenn dereingebaute Master Server fehlschlägt, wird das Spiel diesen hier verwenden. - + Discord: Discord: - + Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. Erlaubt anderen auf Discord zu sehen auf welchem Server du spielst, welchen Charakter du spielst und wie lange. + + + Allow Shake/Flash: + + + Allows screenshaking and flashing. Disable this if you have concerns or issues with photosensitivity and/or seizures. + + + + Language: Sprache: - + Sets the language if you don't want to use your system language. Setzte die Sprache falls du nicht die Systemsprache verwenden möchtest. - + Callwords Alarmwörter - + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> <html><head/><body>Gib so viele Alarmwörter ein wie du möchtest. Groß/Kleinschreibung ist egal. Für jede Wort nur eine Zeile!<br>Bitte keine leere Zeile am Ende -- du bekommst sonst bei jeder Nachricht einen Alarm.</body></html> - + Audio Audio - + Audio device: Audiogerät: - + Sets the audio device for all sounds. Setzt das Audiogerät für all Geräusche. - + Music: Musik: - + Sets the music's default volume. Setzt die Musiklautstärke. - + SFX: SFX: - + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. Setzt die Lautstärke der Soundeffekte wie Einsprüche und die Geräusche der Charaktere. - + Blips: Blips: - + Sets the volume of the blips, the talking sound effects. Setzt die Lautstärke der Blips, das ist das Geräusch das die Charaktere beim Reden machen. - + Blip rate: Bliprate: - + Sets the delay between playing the blip sounds. Setzt die Pause zwischen einzelnen Blips. - + Blank blips: Leere Blips: - + If true, the game will play a blip sound even when a space is 'being said'. Wenn angehakt wird das Spiel auch bei einem Leerzeichen einen Blip machen. - + + Enable Looping SFX: + + + + + If true, the game will allow looping sound effects to play on preanimations. + + + + + Kill Music On Objection: + + + + + If true, the game will stop music when someone objects, like in the actual games. + + + + Casing Fälle - + This server supports case alerts. Dieser Server unterstützt Fallalarme. - + This server does not support case alerts. Dieser Server unterstützt Fallalarme nicht. - + Pretty self-explanatory. Eigentlich selbsterklärend. - + Casing: Fälle: - + If checked, you will get alerts about case announcements. Wenn angehakt wirst du benachrichtigt wenn ein Fall angekündigt wird. - + Defense: Verteidigung: - + If checked, you will get alerts about case announcements if a defense spot is open. Wenn angehakt wirst du benachrichtigt wenn ein Verteidiger benötigt wird. - + Prosecution: Kläger: - + If checked, you will get alerts about case announcements if a prosecutor spot is open. Wenn angehakt wirst du benachrichtigt wenn ein Kläger benötigt wird. - + Judge: Richter: - + If checked, you will get alerts about case announcements if the judge spot is open. Wenn angehakt wirst du benachrichtigt wenn ein Richter benötigt wird. - + Juror: Jury: - + If checked, you will get alerts about case announcements if a juror spot is open. Wenn angehakt wirst du benachrichtigt wenn eine Jury benötigt wird. - + Stenographer: Stenograph: - + If checked, you will get alerts about case announcements if a stenographer spot is open. Wenn angehakt wirst du benachrichtigt wenn ein Stenograph benötigt wird. - + CM: CM: - + If checked, you will appear amongst the potential CMs on the server. Wenn angehakt wirst du als potentielle CM angezeigt. - + + Witness: + + + + + If checked, you will appear amongst the potential witnesses on the server. + + + + Hosting cases: Fallleitung: - + If you're a CM, enter what cases you are willing to host. Wenn du CM bist, gib ein welche Fälle du spielen möchtest. @@ -423,36 +469,35 @@ Grund: Courtroom - + Password Passwort - + Spectator Zuschauer - - + + Search Suche - + Passworded Gesperrt - + Taken Benutzt - Generating chars: %1/%2 - Generiere Charaktere: + Generiere Charaktere: %1/%2 @@ -462,176 +507,182 @@ Grund: + Could not find %1 - Konnte %1 nicht finden. + Konnte %1 nicht finden. - + Showname Anzeigename - + Message Nachricht - + Name Name - + Pre Vor - + Flip Spiegeln - Guard - Wache + Wache - - + + Disable Modcalls + + + + + Casing Fall - + Shownames Anzeigenamen - + No Interrupt Keine Unterbrechung - + White Weiß - + Green Grün - + Red Rot - + Orange Orange - + Blue Blau - + Yellow Gelb - + Music Musik - + Sfx Sfx - + Blips Blips - + Log limit Verlaufsgrenze - - + + Server Server - + Change character Charakter ändern - + Reload theme Aussehen neu laden - + Call mod Moderator rufen - + Settings Einstellungen - + A/M A/M - + Preanim Voranimation - + Back to Lobby Zurück zur Lobby + You have been banned. - Du wurdest verbannt. + Du wurdest verbannt. %1 has played a song: %2 %1 hat ein Lied gespielt: %2 - + Rainbow Regenbogen - + Pink Pink - + Cyan Cyan - + % offset % Abstand - + You were granted the Guard button. Dir wurde der Wache Knopf gegeben. @@ -640,104 +691,104 @@ Grund: Dies bewirkt nichts, aber egal. - + This does nothing, but there you go. Dies bewirkt nichts, aber egal. - + You opened the settings menu. Du hast die Einstellungen geöffnet. - + You will now pair up with Du wirst nun mit - + if they also choose your character in return. gepaart, wenn der andere dies auch tut. - + You are no longer paired with anyone. Du bist nicht mehr gepaart. - + Are you sure you typed that well? The char ID could not be recognised. Hast du dich vertippt? Die ID konnte nicht erkannt werden. - + You have set your offset to Dein Abstand ist auf - + Your offset must be between -100% and 100%! Der Abstand muss zwischen -100% und 100% liegen! - + That offset does not look like one. Das sieht nicht wie ein Abstand aus. - + You switched your music and area list. Du hast zwischen Musik- und Gebitsliste umgeschaltet. - + You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this. Du hast Funktionen erzwungen die der Server eventuell nicht unterstützt. Möglicherweise wirst du nicht mehr sprechen können. - + Your pre-animations interrupt again. Deine Voranimation unterbrechen nun Text. - + Your pre-animations will not interrupt text. Deine Voranimation unterbrechen Text nicht. - + Couldn't open chatlog.txt to write into. Konnte chatlog.txt nicht öffnen. - + The IC chatlog has been saved. Der IC Verlauf wurde gespeichert. - + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. Du hattest keinen 'base/cases' Ordner! Ich hab ihn nun angelegt aber bedenke das er leer sein wird. - + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. Cases you can load: %1 Du musst einen Dateinamen angeben (ohne .ini). Stelle sicher das er im 'base/cases' Ordner ist und das er korrekt formatiert ist. Verfügbare Fälle: %1 - + Case made by %1. Fall von %1. - + Navigate to %1 for the CM doc. Gehe zu %1 für das CM Dokument. - + Your case "%1" was loaded! Dein Fall "%1" wurde geladen! @@ -748,7 +799,7 @@ Cases you can load: Verfügbare Fälle: - + Too many arguments to load a case! You only need one filename, without extension. Zu viele Argumente! Du brauchst nur den Dateinamen, ohne Erweiterung. @@ -773,53 +824,53 @@ Verfügbare Fälle: " wurde geladen! - + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. Du hattest keinen 'base/cases' Ordner! Ich hab ihn nun angelegt aber bedenke das er leer sein wird. - + You need to give a filename to save (extension not needed) and the courtroom status! Du musst einen Dateinamen (ohne Erweiterung) angebenn, sowie den Gebietsstatus! - + Too many arguments to save a case! You only need a filename without extension and the courtroom status! Zu viele Argumente! Du brauchst nur den Dateinamen, ohne Erweiterung sowie den Gebietsstatus! - + Succesfully saved, edit doc and cmdoc link on the ini! Erfolgreich gespeichert! - + Master Master - + Reason: Grund: - + Call Moderator Moderator rufen - - + + Error Fehler - + You must provide a reason. Du musst einen Grund angeben. - + The message is too long. Die Nachricht ist zu lang. @@ -883,34 +934,34 @@ Verfügbare Fälle: Name - + It doesn't look like your client is set up correctly. Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? Dein Client ist nicht korrekt eingerichtet. Hast du ALLES von tiny.cc/getao heruntergeladen und entpackt, auch den großen 'base' Ordner? - + Version: %1 Version: %1 - + Loading Laden - + Cancel Abbrechen - + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy <h2>Attorney Online %1</h2>Der Gerichtsdrama Simulator<p><b>Quelltext:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Leitende Entwicklung:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Danksagungen:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy - + Online: %1/%2 Online: %1/%2 @@ -955,8 +1006,8 @@ Noevain Cronnicossy - - + + Offline Offline diff --git a/resource/translations/ao_en.ts b/resource/translations/ao_en.ts index b917a41..7ea610b 100644 --- a/resource/translations/ao_en.ts +++ b/resource/translations/ao_en.ts @@ -21,60 +21,61 @@ Please check your Internet connection and firewall, and please try again. - + Outdated version! Your version: %1 Please go to aceattorneyonline.com to update. - + You have been exiled from AO. Have a nice day. - + Attorney Online 2 - + Loading - + Loading evidence: %1/%2 - - + + Loading music: %1/%2 - + + Loading chars: %1/%2 - + You have been kicked from the server. Reason: %1 - + You have been banned from the server. Reason: %1 - + You are banned on this server. Reason: %1 @@ -117,271 +118,316 @@ Reason: %1 Stenographer needed + + + Witness needed + + AOOptionsDialog - + Settings - + Gameplay - + Theme: - + Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. - + Log goes downwards: - + If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. - + Log length: - + The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'. - + Default username: - + Your OOC name will be automatically set to this value when you join a server. - + Custom shownames: - + Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. - + Backup MS: - + If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address. - + Discord: - + Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. + + + Allow Shake/Flash: + + + Allows screenshaking and flashing. Disable this if you have concerns or issues with photosensitivity and/or seizures. + + + + Language: - + Sets the language if you don't want to use your system language. - + Callwords - + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> - + Audio - + Audio device: - + Sets the audio device for all sounds. - + Music: - + Sets the music's default volume. - + SFX: - + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. - + Blips: - + Sets the volume of the blips, the talking sound effects. - + Blip rate: - + Sets the delay between playing the blip sounds. - + Blank blips: - + If true, the game will play a blip sound even when a space is 'being said'. - - Casing - - - - - This server supports case alerts. + + Enable Looping SFX: - This server does not support case alerts. + If true, the game will allow looping sound effects to play on preanimations. - - Pretty self-explanatory. + + Kill Music On Objection: - - Casing: - - - - - If checked, you will get alerts about case announcements. - - - - - Defense: + + If true, the game will stop music when someone objects, like in the actual games. - If checked, you will get alerts about case announcements if a defense spot is open. - - - - - Prosecution: + Casing + This server supports case alerts. + + + + + This server does not support case alerts. + + + + + Pretty self-explanatory. + + + + + Casing: + + + + + If checked, you will get alerts about case announcements. + + + + + Defense: + + + + + If checked, you will get alerts about case announcements if a defense spot is open. + + + + + Prosecution: + + + + If checked, you will get alerts about case announcements if a prosecutor spot is open. - + Judge: - + If checked, you will get alerts about case announcements if the judge spot is open. - + Juror: - + If checked, you will get alerts about case announcements if a juror spot is open. - + Stenographer: - + If checked, you will get alerts about case announcements if a stenographer spot is open. - + CM: - + If checked, you will appear amongst the potential CMs on the server. - + + Witness: + + + + + If checked, you will appear amongst the potential witnesses on the server. + + + + Hosting cases: - + If you're a CM, enter what cases you are willing to host. @@ -389,353 +435,357 @@ Reason: %1 Courtroom - + Password - + Spectator - - + + Search - + Passworded - + Taken - - Generating chars: -%1/%2 + + Could not find %1 - + Showname - + Message - + Name - + Pre - + Flip - - Guard - - - - - + + Casing - + Shownames - + No Interrupt - + White - + Green - + Red - + Orange - + Blue - + Yellow - + This does nothing, but there you go. - + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. Cases you can load: %1 - + Case made by %1. - + Navigate to %1 for the CM doc. - + Your case "%1" was loaded! - - + + Server - + Back to Lobby - + Rainbow - + + Disable Modcalls + + + + Pink - + Cyan - + % offset - + Music - + Sfx - + Blips - + Log limit - + Change character - + Reload theme - + Call mod - + Settings - + A/M - + Preanim - + + You have been banned. + + + + You were granted the Guard button. - + You opened the settings menu. - + You will now pair up with - + if they also choose your character in return. - + You are no longer paired with anyone. - + Are you sure you typed that well? The char ID could not be recognised. - + You have set your offset to - + Your offset must be between -100% and 100%! - + That offset does not look like one. - + You switched your music and area list. - + You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this. - + Your pre-animations interrupt again. - + Your pre-animations will not interrupt text. - + Couldn't open chatlog.txt to write into. - + The IC chatlog has been saved. - + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. - + Too many arguments to load a case! You only need one filename, without extension. - + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. - + You need to give a filename to save (extension not needed) and the courtroom status! - + Too many arguments to save a case! You only need a filename without extension and the courtroom status! - + Succesfully saved, edit doc and cmdoc link on the ini! - + Master - + Reason: - + Call Moderator - - + + Error - + You must provide a reason. - + The message is too long. @@ -768,39 +818,39 @@ Cases you can load: %1 - + It doesn't look like your client is set up correctly. Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? - + Version: %1 - + Loading - + Cancel - + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy - + Online: %1/%2 - - + + Offline diff --git a/resource/translations/ao_es.ts b/resource/translations/ao_es.ts index 9c14710..aefae56 100644 --- a/resource/translations/ao_es.ts +++ b/resource/translations/ao_es.ts @@ -1,6 +1,6 @@ - + AOApplication @@ -22,66 +22,67 @@ Please check your Internet connection and firewall, and please try again.Hubo un error al obtener la lista de servidores. Verifique su conexión a Internet y firewall, y vuelva a intentarlo. - + Outdated version! Your version: %1 Please go to aceattorneyonline.com to update. ¡Versión desactualizada! Su versión: %1 Vaya a aceattorneyonline.com para actualizar. - + You have been exiled from AO. Have a nice day. Has sido exiliado de AO. Que tengas un buen día. - + Attorney Online 2 Attorney Online 2 - + Loading Cargando - + Loading evidence: %1/%2 Cargando evidencia: %1/%2 - - + + Loading music: %1/%2 Cargando música: %1/%2 - + + Loading chars: %1/%2 Cargando personajes: %1/%2 - + You have been kicked from the server. Reason: %1 Has sido expulsado del servidor. Razón: %1 - + You have been banned from the server. Reason: %1 Has sido bloqueado de este servidor. Razón: %1 - + You are banned on this server. Reason: %1 Has sido bloqueado en este servidor. @@ -137,271 +138,316 @@ Razón: Stenographer needed Se necesita taquígrafo + + + Witness needed + + AOOptionsDialog - + Settings Ajustes - + Gameplay Jugabilidad - + Theme: Tema visual: - + Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. Establece el tema visual utilizado en el juego. Si el nuevo tema también cambia el aspecto del lobby, deberá volver a cargar el lobby para que los cambios surtan efecto, como unirse a un servidor y volver al lobby. - + Log goes downwards: Invertir historial IC: - + If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. Si está marcado, los nuevos mensajes aparecerán en la parte inferior (como el chat OOC). - + Log length: Limite del historial: - + The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'. La cantidad de mensajes que mantendrá el historial del chat IC antes de eliminar mensajes más antiguos. 0 significa 'infinito'. - + Default username: Usuario predeterminado: - + Your OOC name will be automatically set to this value when you join a server. Su nombre OOC se establecerá automáticamente a este cuando se una a un servidor. - + Custom shownames: Mostrar nombres: - + Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. Activa la casilla 'Mostrar nombres' de forma predeterminada en el juego, que a su vez determina si el cliente debe mostrar nombres personalizados en los personajes. - + Backup MS: Master SV de respaldo: - + If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address. Si la lista de servidores predeterminada falla, el juego probará la dirección proporcionada aquí. - + Discord: Discord: - + Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. Permite a otros en Discord ver en qué servidor estás, qué personaje juegas y cuánto tiempo has estado jugando. + + + Allow Shake/Flash: + + + Allows screenshaking and flashing. Disable this if you have concerns or issues with photosensitivity and/or seizures. + + + + Language: Idioma: - + Sets the language if you don't want to use your system language. Establece el idioma si no desea utilizar el idioma de su sistema. - + Callwords Palabras clave - + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> <html><head/><body>Ingrese tantas palabras de llamada como desee.<br>Esto no distingue entre mayúsculas y minúsculas. ¡Asegúrese de dejar cada palabra en su propia línea!<br>No deje una línea con un espacio al final; recibirá una alerta cada vez que alguien use un espacio en sus mensajes.</body></html> - + Audio Audio - + Audio device: Dispositivo: - + Sets the audio device for all sounds. Establece el dispositivo de audio. - + Music: Música: - + Sets the music's default volume. Establece el volumen predeterminado de la música. - + SFX: SFX: - + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. Establece el volumen predeterminado de SFX. Las interjecciones y los efectos de sonido reales cuentan como 'SFX'. - + Blips: Blips: - + Sets the volume of the blips, the talking sound effects. Establece el volumen de los blips, el sonido al hablar. - + Blip rate: Tasa de blips: - + Sets the delay between playing the blip sounds. Establece el retraso entre la reproducción de los sonidos blip. - + Blank blips: Blips en blanco: - + If true, the game will play a blip sound even when a space is 'being said'. Si está marcada, el juego reproducirá un sonido blip incluso cuando se 'dice' un espacio. - + + Enable Looping SFX: + + + + + If true, the game will allow looping sound effects to play on preanimations. + + + + + Kill Music On Objection: + + + + + If true, the game will stop music when someone objects, like in the actual games. + + + + Casing Caso - + This server supports case alerts. Este servidor admite alertas de casos. - + This server does not support case alerts. Este servidor no admite alertas de casos. - + Pretty self-explanatory. Bastante autoexplicativo. - + Casing: Caso: - + If checked, you will get alerts about case announcements. Si está marcado, recibirá anuncios de casos. - + Defense: Abogado: - + If checked, you will get alerts about case announcements if a defense spot is open. Si está marcado, recibirá alertas sobre anuncios de casos si hay un lugar de abogado libre. - + Prosecution: Fiscal: - + If checked, you will get alerts about case announcements if a prosecutor spot is open. Si está marcada, recibirá alertas sobre anuncios de casos si hay un puesto de fiscal libre. - + Judge: Juez: - + If checked, you will get alerts about case announcements if the judge spot is open. Si está marcado, recibirá alertas sobre anuncios de casos si el puesto de juez está libre. - + Juror: Jurado: - + If checked, you will get alerts about case announcements if a juror spot is open. Si está marcado, recibirá alertas sobre anuncios de casos si hay un puesto de jurado libre. - + Stenographer: Taquígrafo: - + If checked, you will get alerts about case announcements if a stenographer spot is open. Si está marcado, recibirá alertas sobre anuncios de casos si hay un lugar de taquígrafo libre. - + CM: CM: - + If checked, you will appear amongst the potential CMs on the server. Si está marcado, aparecerá entre los posibles CM en el servidor. - + + Witness: + + + + + If checked, you will appear amongst the potential witnesses on the server. + + + + Hosting cases: Casos: - + If you're a CM, enter what cases you are willing to host. Si eres un CM, ingresa qué casos estás dispuesto a organizar. @@ -409,36 +455,40 @@ Razón: Courtroom - + Password Contraseña - + Spectator Espectador - - + + Search Buscar - + Passworded Contraseña - + Taken En uso - + + Could not find %1 + + + Generating chars: %1/%2 - Generando personajes: + Generando personajes: %1/%2 @@ -448,260 +498,264 @@ Razón: - + Showname - + Message Mensaje - + Name Nombre - + Pre - + Flip - Guard - Guardia + Guardia - - + + Casing Caso - + Shownames - + No Interrupt - + White Blanco - + Green Verde - + Red Rojo - + Orange Naranja - + Blue Azul - + Yellow Amarillo - + Rainbow Arcoíris - + Pink Rosado - + Cyan Cian - + % offset % desplazamiento - + Music - + Sfx - + Blips - + Log limit - + Change character - + Reload theme - + Call mod - + Settings Ajustes - + A/M A/M - + Preanim - + Back to Lobby Volver al lobby - + + You have been banned. + + + + You were granted the Guard button. Te ha sido otorgado el botón Guardia. - + This does nothing, but there you go. Esto no hace nada, pero ahí lo tienes. - + You opened the settings menu. Abriste el menú de configuración. - + You will now pair up with Ahora te emparejarás con - + if they also choose your character in return. si ellos también eligen a tu personaje a cambio. - + You are no longer paired with anyone. Ya no estás emparejado con nadie. - + Are you sure you typed that well? The char ID could not be recognised. ¿Estás seguro de que lo escribiste bien? El ID de personaje no pudo ser reconocido. - + You have set your offset to Ha configurado su desplazamiento en - + Your offset must be between -100% and 100%! ¡Su desplazamiento debe estar entre -100% y 100%! - + That offset does not look like one. Ese desplazamiento no se parece a uno. - + You switched your music and area list. Cambiaste tu lista de música y área. - + You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this. Ha habilitado forzosamente funciones que el servidor puede no admitir. Es posible que no pueda hablar IC, o peor, debido a esto. - + Your pre-animations interrupt again. Sus pre-animaciones interrumpen de nuevo. - + Your pre-animations will not interrupt text. Sus pre-animaciones no interrumpirán el texto. - + Couldn't open chatlog.txt to write into. No se pudo abrir chatlog.txt para escribir. - + The IC chatlog has been saved. El chat IC se ha guardado. - + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. ¡No tienes una carpeta `base/cases /`! Ha sido creada para ti. Pero debido a que no existia la carpeta, tampoco habían casos guardados ahí. - + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. Cases you can load: %1 ¡Debe dar un nombre de archivo para cargar (no se necesita extensión)! Asegúrese de que esté en la carpeta `base/cases/` y de que tenga el formato correcto. Casos que puede cargar: %1 - + Case made by %1. Caso hecho por %1. - + Navigate to %1 for the CM doc. Navegue a %1 para el documento del CM. - + Your case "%1" was loaded! Su caso "%1" fue cargado! @@ -712,7 +766,7 @@ Cases you can load: Casos que puede cargar: - + Too many arguments to load a case! You only need one filename, without extension. ¡Demasiados argumentos para cargar un caso! Solo necesita un nombre de archivo, sin extensión. @@ -737,60 +791,65 @@ Casos que puede cargar: " fue cargado! - + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. ¡No tienes una carpeta `base/cases /`! Fue creada para ti. - + You need to give a filename to save (extension not needed) and the courtroom status! ¡Debe dar un nombre de archivo para guardar (no se necesita la extensión) y el estado de la sala del tribunal! - + Too many arguments to save a case! You only need a filename without extension and the courtroom status! why two exclamations, seems excesive. ¡Demasiados argumentos para salvar un caso! Solo necesita un nombre de archivo sin extensión y el estado de la sala del tribunal. - + Succesfully saved, edit doc and cmdoc link on the ini! ¡Guardado con éxito, puede editar el doc y doc link en el archivo ini! - + Master - - + + Server - + + Disable Modcalls + + + + Reason: Razón: - + Call Moderator Llamar Moderador - - + + Error Error - + You must provide a reason. Debes proporcionar una razón. - + The message is too long. El mensaje es muy largo. @@ -823,40 +882,40 @@ Casos que puede cargar: Nombre - + It doesn't look like your client is set up correctly. Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? No parece que su cliente esté configurado correctamente. ¿Descargó todos los recursos correctamente desde tiny.cc/getao, incluida la gran carpeta 'base'? - + Version: %1 Versión: %1 - + Loading Cargando - + Cancel Cancelar - + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy <h2>Attorney Online %1</h2>El simulador de drama legal<p><b>Código fuente:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https: //github.com/AttorneyOnline/AO2-Client</a><p><b>Desarrollo mayor:</b> <br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Agradecimiento especial:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (diseño de interfaz de usuario), Draxirch (diseño de interfaz de usuario), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy - + Online: %1/%2 En línea: %1/%2 - - + + Offline Fuera de línea diff --git a/resource/translations/ao_jp.ts b/resource/translations/ao_jp.ts index 4f8153a..5e1e8b8 100644 --- a/resource/translations/ao_jp.ts +++ b/resource/translations/ao_jp.ts @@ -21,60 +21,61 @@ Please check your Internet connection and firewall, and please try again. - + Outdated version! Your version: %1 Please go to aceattorneyonline.com to update. - + You have been exiled from AO. Have a nice day. - + Attorney Online 2 - + Loading ロード中 - + Loading evidence: %1/%2 証拠がロード中: %1/%2 - - + + Loading music: %1/%2 音楽がロード中: %1/%2 - + + Loading chars: %1/%2 キャラがロード中: %1/%2 - + You have been kicked from the server. Reason: %1 - + You have been banned from the server. Reason: %1 - + You are banned on this server. Reason: %1 @@ -117,271 +118,316 @@ Reason: %1 Stenographer needed + + + Witness needed + + AOOptionsDialog - + Settings - + Gameplay - + Theme: - + Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. - + Log goes downwards: - + If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. - + Log length: - + The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'. - + Default username: - + Your OOC name will be automatically set to this value when you join a server. - + Custom shownames: - + Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. - + Backup MS: - + If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address. - + Discord: - + Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. + + + Allow Shake/Flash: + + + Allows screenshaking and flashing. Disable this if you have concerns or issues with photosensitivity and/or seizures. + + + + Language: - + Sets the language if you don't want to use your system language. - + Callwords - + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> - + Audio - + Audio device: - + Sets the audio device for all sounds. - + Music: 音楽: - + Sets the music's default volume. - + SFX: 効果音: - + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. - + Blips: ブリップ: - + Sets the volume of the blips, the talking sound effects. - + Blip rate: - + Sets the delay between playing the blip sounds. - + Blank blips: - + If true, the game will play a blip sound even when a space is 'being said'. - - Casing - - - - - This server supports case alerts. + + Enable Looping SFX: - This server does not support case alerts. + If true, the game will allow looping sound effects to play on preanimations. - - Pretty self-explanatory. + + Kill Music On Objection: - - Casing: - - - - - If checked, you will get alerts about case announcements. - - - - - Defense: + + If true, the game will stop music when someone objects, like in the actual games. - If checked, you will get alerts about case announcements if a defense spot is open. - - - - - Prosecution: + Casing + This server supports case alerts. + + + + + This server does not support case alerts. + + + + + Pretty self-explanatory. + + + + + Casing: + + + + + If checked, you will get alerts about case announcements. + + + + + Defense: + + + + + If checked, you will get alerts about case announcements if a defense spot is open. + + + + + Prosecution: + + + + If checked, you will get alerts about case announcements if a prosecutor spot is open. - + Judge: - + If checked, you will get alerts about case announcements if the judge spot is open. - + Juror: - + If checked, you will get alerts about case announcements if a juror spot is open. - + Stenographer: - + If checked, you will get alerts about case announcements if a stenographer spot is open. - + CM: - + If checked, you will appear amongst the potential CMs on the server. - + + Witness: + + + + + If checked, you will appear amongst the potential witnesses on the server. + + + + Hosting cases: - + If you're a CM, enter what cases you are willing to host. @@ -389,353 +435,361 @@ Reason: %1 Courtroom - + Password - + Spectator 観客 - - + + Search - + Passworded - + Taken - - Generating chars: -%1/%2 + + Could not find %1 - + Showname - + Message - + Name 名前 - + Pre - + Flip フリップ - Guard - ガード + ガード - - + + Casing - + Shownames - + No Interrupt - + White - + Green - + Red - + Orange オレンジ - + Blue - + Yellow 黄色 - + This does nothing, but there you go. - + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. Cases you can load: %1 - + Case made by %1. - + Navigate to %1 for the CM doc. - + Your case "%1" was loaded! - - + + Server - + Back to Lobby ロビーに戻る - + Rainbow - + + Disable Modcalls + + + + Pink - + Cyan - + % offset - + Music 音楽 - + Sfx 効果音 - + Blips ブリップ - + Log limit - + Change character - + Reload theme - + Call mod - + Settings - + A/M - + Preanim - + + You have been banned. + + + + You were granted the Guard button. - + You opened the settings menu. - + You will now pair up with - + if they also choose your character in return. - + You are no longer paired with anyone. - + Are you sure you typed that well? The char ID could not be recognised. - + You have set your offset to - + Your offset must be between -100% and 100%! - + That offset does not look like one. - + You switched your music and area list. - + You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this. - + Your pre-animations interrupt again. - + Your pre-animations will not interrupt text. - + Couldn't open chatlog.txt to write into. - + The IC chatlog has been saved. - + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. - + Too many arguments to load a case! You only need one filename, without extension. - + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. - + You need to give a filename to save (extension not needed) and the courtroom status! - + Too many arguments to save a case! You only need a filename without extension and the courtroom status! - + Succesfully saved, edit doc and cmdoc link on the ini! - + Master マスター - + Reason: - + Call Moderator モデレーターを呼ぶ - - + + Error エラー - + You must provide a reason. - + The message is too long. @@ -791,39 +845,39 @@ Cases you can load: %1 名前 - + It doesn't look like your client is set up correctly. Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? - + Version: %1 - + Loading ロード中 - + Cancel キャンセル - + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy - + Online: %1/%2 - - + + Offline オフライン diff --git a/resource/translations/ao_pl.ts b/resource/translations/ao_pl.ts index 307c604..720288e 100644 --- a/resource/translations/ao_pl.ts +++ b/resource/translations/ao_pl.ts @@ -23,67 +23,68 @@ Używamy wielu głównych serwerów, aby zminimalizować każdą możliwą przer Proszę sprawdzić swoje połączenie internetowe oraz zaporę ogniową i spróbować ponownie. - + Outdated version! Your version: %1 Please go to aceattorneyonline.com to update. Nieaktualna wersja! Twoja wersja: %1 Proszę udać się do aceattorneyonline.com, aby zaktualizować. - + You have been exiled from AO. Have a nice day. Zostałeś wygnany z AO2. Życzę miłego dnia. - + Attorney Online 2 - + Loading Ładowanie - + Loading evidence: %1/%2 Ładowanie dowodów: %1/%2 - - + + Loading music: %1/%2 Ładowanie muzyki: %1/%2 - + + Loading chars: %1/%2 Ładowanie postaci: %1/%2 - + You have been kicked from the server. Reason: %1 Zostałeś wyrzucony z tego serwera. Powód: %1 - + You have been banned from the server. Reason: %1 Zostałeś zbanowany z tego serwera. Powód: %1 - + You are banned on this server. Reason: %1 Jesteś zbanowany na tym serwerze. @@ -127,272 +128,317 @@ Powód: %1 Stenographer needed Potrzebny stenograf + + + Witness needed + + AOOptionsDialog - + Settings Ustawienia - + Gameplay Rozgrywka - + Theme: Motyw: - + Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. Ustawia motyw używany w grze. Jeżeli nowy motyw równiesz zmienia wygląd poczekalni, musisz odświeżyć poczekalnię, aby zmiany zaczęły działać, np. poprzez dołączenie do serwera i wyjście z niego. - + Log goes downwards: Dziennik idzie w dół: - + If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. Jeżeli zaznaczone, nowe wiadomości zaczną się pojawiać na dole (tak jak na czacie OOC). Tradycyjne (AO1) zachowanie jest równoważne do tego bycia nie zaznaczonym. - + Log length: Długość dziennika: - + The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'. Ilość wiadomości, jakie czat IC będzie zostawiał zanim usunie starsze wiadomości. Wartośc 0 albo niżej, liczy się jako 'nieskończone'. - + Default username: Domyślna nazwa użytkownika: - + Your OOC name will be automatically set to this value when you join a server. Twoja nazwa OOC będzie ustawiana automatycznie do tej wartości, kiedy dołączysz na serwer. - + Custom shownames: Niestandardowe ksywki: - + Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. Daje domyślną wartość przyciskowi wyboru 'Niestandardowe ksywki', który określa czy klient powinien pokazywać niestandardowe IC nazwy. - + Backup MS: Kopia zapasowa głównego serwera: - + If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address. Jeśli wbudowane szukanie serwerów zawiedzie, gra spróbuje użyć adresu podanego tutaj i użyje go jako adresu zapasowego głównego serwera. - + Discord: - + Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. Pozwala innym na Discordzie zobaczyć na jakim serwerze się znajdujesz, jaką postać używasz i jak długo grałeś. + + + Allow Shake/Flash: + + + Allows screenshaking and flashing. Disable this if you have concerns or issues with photosensitivity and/or seizures. + + + + Language: Język: - + Sets the language if you don't want to use your system language. Ustawia język, jeśli nie chcesz używać języka systemowego. - + Callwords Zawołania - + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> <html><head/><body>Wpisz tyle zawołań, ile dusza zapragnie. Wielkość liter nie ma znaczenia. Miej na uwadze, aby każde zawołanie było na swojej lini!<br>Nie zostawiaj spacji na końcu -- zostaniesz zaalarmowany za każdym razem, kiedy ktoś użyje spacji w swojej wiadomości.</body></html> - + Audio Dźwięk - + Audio device: Urządzenie dźwiękowe: - + Sets the audio device for all sounds. Ustawia urządzenie dźwiękowe na wszystkie dźwięki. - + Music: Muzyka: - + Sets the music's default volume. Ustawia domyślną głośność muzyki. - + SFX: Efekty dźwiękowe (SFX): - + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. Ustawia domyślną głośność efektów specjalnych (SFX). Wtrącenia się i same efekty specjalne są zaliczane jako 'SFX'. - + Blips: Blipy: - + Sets the volume of the blips, the talking sound effects. Ustawia głośność blipów, efektów dźwiękowych mówienia. - + Blip rate: Szybkość blipów: - + Sets the delay between playing the blip sounds. Ustawia opóźnienie pomiędzy graniem blipów. - + Blank blips: The 'blip' isn't an accurate polish representation of this english word. Puste blipy: - + If true, the game will play a blip sound even when a space is 'being said'. Jeśli prawdziwe, gra zagra dźwięk blip za każdym razem spacja 'jest mówiona'. - + + Enable Looping SFX: + + + + + If true, the game will allow looping sound effects to play on preanimations. + + + + + Kill Music On Objection: + + + + + If true, the game will stop music when someone objects, like in the actual games. + + + + Casing Rozprawa - + This server supports case alerts. Ten serwer wspiera komunikaty rozpraw. - + This server does not support case alerts. Ten serwer nie wspiera komunikatów rozpraw. - + Pretty self-explanatory. Dosyć oczywiste. - + Casing: Rozprawy: - + If checked, you will get alerts about case announcements. Jeżeli zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw. - + Defense: Obrona: - + If checked, you will get alerts about case announcements if a defense spot is open. Jeżeli zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce obrony jest otwarte. - + Prosecution: Prokuratura: - + If checked, you will get alerts about case announcements if a prosecutor spot is open. Jeżeli zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce prokuratury jest otwarte. - + Judge: Sędzia: - + If checked, you will get alerts about case announcements if the judge spot is open. Jeśli zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce sędzi jest otwarte. - + Juror: Ławnik: - + If checked, you will get alerts about case announcements if a juror spot is open. Jeśli zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce ławnika jest otwarte. - + Stenographer: Stenograf: - + If checked, you will get alerts about case announcements if a stenographer spot is open. Jeśli zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce stenografa jest otwarte. - + CM: Mistrz rozpraw (CM): - + If checked, you will appear amongst the potential CMs on the server. Jeśli zaznaczone, pojawisz się wśród potencjalnych mistrzów rozpraw (CM) na serwerze. - + + Witness: + + + + + If checked, you will appear amongst the potential witnesses on the server. + + + + Hosting cases: Hostowane rozprawy: - + If you're a CM, enter what cases you are willing to host. Jeśli jesteś mistrzem rozpraw (CM), wpisz jakie rozprawy jesteś chętny hostowania. @@ -400,356 +446,369 @@ Powód: %1 Courtroom - + Password Hasło - + Spectator Widz - - + + Search Wyszukaj - + Passworded Zahasłowany - + Taken Zajęty - + + Could not find %1 + + + Generating chars: %1/%2 - Generowanie postaci: + Generowanie postaci: %1.%2 - + Showname Ksywka - + Message Wiadomość - + Name Nazwa - + Pre przed- - + Flip Odwróć - Guard - Na Służbie (mod) + Na Służbie (mod) - - + + Casing Rozprawa - + Shownames Ksywki - + No Interrupt Bez przerwy - + White Biały - + Green Zielony - + Red Czerwony - + Orange Pomarańczowy - + Blue Niebieski - + Yellow Żółty - + This does nothing, but there you go. To nic nie robi, ale proszę bardzo. - + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. Cases you can load: %1 Musisz podać nazwę pliku, którego chcesz załadować (rozszerzenie nie potrzebne!) Upewnij się, że jest w folderze `base/cases/` i że jest to poprawnie sformatowane ini. Rozprawy które możesz załadować: %1 - + Case made by %1. Rozprawa zrobiona przez %1. - + Navigate to %1 for the CM doc. Przejdź do %1, aby dojść do dokumentu CM. - + Your case "%1" was loaded! Twoja rozprawa "%1" została wczytana! - - + + Server Serwer - + Back to Lobby Powrót do poczekalni - + Rainbow Tęczowy - + + Disable Modcalls + + + + Pink Różowy - + Cyan Turkusowy - + % offset % wyrówanie - + Music Muzyka - + Sfx Sfx - + Blips Blipy - + Log limit Limit dziennika - + Change character Zmiena postaci - + Reload theme Odśwież motyw - + Call mod Wezwij moda - + Settings Ustawienia - + A/M O meaning 'Obszar' and M meaning 'Muzyka'. O/M - + Preanim przed-animacja - + + You have been banned. + + + + You were granted the Guard button. Zostałeś obdarzonym przyciskiem Na Służbie. - + You opened the settings menu. Otworzyłeś opcje. - + You will now pair up with Będzie teraz w parze z - + if they also choose your character in return. jeżeli oni również wybiorą ciebie spowrotem. - + You are no longer paired with anyone. Nie jesteś już w parze z kimkolwiek. - + Are you sure you typed that well? The char ID could not be recognised. Czy jesteś pewien, że dobrze to napisałeś? ID postaci nie zostało rozpoznane. - + You have set your offset to Musisz ustawić swoje wyrównanie do - + Your offset must be between -100% and 100%! Twoje wyrównanie musi być między -100%, a 100%! - + That offset does not look like one. To wyrównanie nie wygląda na jedno. - + You switched your music and area list. Przełączyłeś swoją listę obszarów i muzyki. - + You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this. Włączyłeś funkcje, które ten serwer może nie wspierać. Możliwe że, nie możesz rozmawiać na czacie IC lub gorzej przez to. - + Your pre-animations interrupt again. Twoje przed-animacje przerywają tekst spowrotem. - + Your pre-animations will not interrupt text. Twoje przed-animacje nie będą przerywać tekstu. - + Couldn't open chatlog.txt to write into. Nie można było otworzyć chatlog.txt, aby zapisać do niego. - + The IC chatlog has been saved. Dziennik czatu IC został zapisany. - + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. Nie masz folderu `base/cases/`! Został zrobiony tylko dla ciebie, ale widząc, że ZOSTAŁ zrobiony tylko dla ciebie, prawdopodobnie plik rozpraw, którego szukasz nie został znaleziony tutaj. - + Too many arguments to load a case! You only need one filename, without extension. Za dużo parametrów, aby załadować rozprawę! Potrzebujesz tylko jedną nazwę pliku, bez rozszerzenia nazwy pliku. - + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. Nie masz folderu `base/cases/`! Został zrobiony tylko dla ciebie, ale widząc, że ZOSTAŁ zrobiony tylko dla ciebie, prawdopodobnie jakoś usunąłeś go. - + You need to give a filename to save (extension not needed) and the courtroom status! Musisz podać nazwę pliku, aby go zapisać (rozszerzenie nie potrzebne) i status sali sądowej! - + Too many arguments to save a case! You only need a filename without extension and the courtroom status! Za dużo parametrów, aby zapisać rozprawę! Potrzebujesz tylko jedną nazwę pliku, bez rozszerzenia nazwy pliku i statusu sali sądowej! - + Succesfully saved, edit doc and cmdoc link on the ini! Zapisano pomyślnie, edytuj dokument i link cmdoc w .ini! - + Master Główny - + Reason: Powód: - + Call Moderator Wezwij Moderatora - - + + Error Błąd - + You must provide a reason. Musisz podać przyczynę. - + The message is too long. Ta wiadomość jest za długa. @@ -782,40 +841,40 @@ Rozprawy które możesz załadować: %1 Nazwa - + It doesn't look like your client is set up correctly. Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? Wygłąda na to, że twój klient nie jest ustawiony poprawnie. Czy pobrałeś wszystkie zasoby poprawnie z tiny.cc/getao, włączając duży folder 'base'? - + Version: %1 Wersja: %1 - + Loading Ładowanie - + Cancel Anuluj - + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy <h2>Attorney Online: %1</h2>Symulator dramy sądowej<p><b>Kod żródłowy:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Główny rozwój:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Szczególne podziękowania:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy - + Online: %1/%2 - - + + Offline diff --git a/resource/translations/ao_ru.ts b/resource/translations/ao_ru.ts index 9714c9d..da481ae 100644 --- a/resource/translations/ao_ru.ts +++ b/resource/translations/ao_ru.ts @@ -22,66 +22,67 @@ Please check your Internet connection and firewall, and please try again. - + Outdated version! Your version: %1 Please go to aceattorneyonline.com to update. Устаревшая версия! У вас установлена %1 Проследуйте на сайт aceattorneyonline.com для обновления. - + You have been exiled from AO. Have a nice day. Из AO вас отправили в жизнь. Хорошего дня. - + Attorney Online 2 Attorney Online 2 - + Loading Загрузка - + Loading evidence: %1/%2 Загрузка вещдоков: %1/%2 - - + + Loading music: %1/%2 Загрузка музыки: %1/%2 - + + Loading chars: %1/%2 Загрузка персонажей: %1/%2 - + You have been kicked from the server. Reason: %1 Вас выпнули с сервера. Причина: %1 - + You have been banned from the server. Reason: %1 - + You are banned on this server. Reason: %1 Вас отправили в баню. @@ -137,271 +138,316 @@ Reason: Stenographer needed Нужен стенографист? + + + Witness needed + + AOOptionsDialog - + Settings Настройки - + Gameplay Игра - + Theme: Тема: - + Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. Устанавливает внешний вид игры. Может понадобиться перезайти на сервер. - + Log goes downwards: Портянку вниз: - + If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. Отметьте галочку, если хотите, чтобы сообщения в игровом чате отображались снизу, а не сверху. - + Log length: Длина игрового чата: - + The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'. Количество сообщений, максимально хранимых в игровом чате. Значение, равное 0 или меньше, будет расценено как снятие такого ограничения. - + Default username: Никнейм по умолчанию: - + Your OOC name will be automatically set to this value when you join a server. Псевдоним, используемый при соединении с сервером. В основном, его видно в чате сервера. - + Custom shownames: Произвольные имена: - + Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. Отображать произвольные имена персонажей, установленные самими игроками. - + Backup MS: Запасной ГС: - + If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address. Отображать перечень серверов от главного сервера, указанного здесь, когда не удалось соединиться с первичным ГС. - + Discord: Discord: - + Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. Показать в Discord сервер, на котором вы играете, каким персонажем управляете и время игры. + + + Allow Shake/Flash: + + + Allows screenshaking and flashing. Disable this if you have concerns or issues with photosensitivity and/or seizures. + + + + Language: Язык: - + Sets the language if you don't want to use your system language. - + Callwords Позывные - + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> <html><head/><body>Введите на отдельных строках свои позывные, при указании которых в сообщениях будет подан звуковой сигнал.</body></html> - + Audio Аудио - + Audio device: Устройство воспроизведения: - + Sets the audio device for all sounds. Куда вещать звук из игры. - + Music: Музыка: - + Sets the music's default volume. Громкость музыки по умолчанию. - + SFX: Звук. эффекты: - + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. Громкость звуковых эффектов по умолчанию. - + Blips: Сигналы: - + Sets the volume of the blips, the talking sound effects. Громкость сигналов, заменяющих голос, по умолчанию. - + Blip rate: Пер. сигналов: - + Sets the delay between playing the blip sounds. Период между сигналами, заменяющими голос, по умолчанию. - + Blank blips: Пустые сигналы: - + If true, the game will play a blip sound even when a space is 'being said'. Проигрывать сигналы даже для пробелов. - + + Enable Looping SFX: + + + + + If true, the game will allow looping sound effects to play on preanimations. + + + + + Kill Music On Objection: + + + + + If true, the game will stop music when someone objects, like in the actual games. + + + + Casing Заседание - + This server supports case alerts. Этот сервер поддерживает объявление заседания. - + This server does not support case alerts. Этот сервер не поддерживает объявление заседания. - + Pretty self-explanatory. Весьма доходчиво. - + Casing: Новое дело: - + If checked, you will get alerts about case announcements. При заведении дела вы получите уведомление. - + Defense: Защита: - + If checked, you will get alerts about case announcements if a defense spot is open. При заведении дела, в котором нужна сторона защиты, вы получите уведомление. - + Prosecution: Обвинение: - + If checked, you will get alerts about case announcements if a prosecutor spot is open. При заведении дела, в котором нужна сторона обвинения, вы получите уведомление. - + Judge: Судья: - + If checked, you will get alerts about case announcements if the judge spot is open. При заведении дела, в котором нужен судья, вы получите уведомление. - + Juror: Присяжный: - + If checked, you will get alerts about case announcements if a juror spot is open. При заведении дела, в котором нужны присяжные заседатели, вы получите уведомление. - + Stenographer: Стенографист: - + If checked, you will get alerts about case announcements if a stenographer spot is open. При заведении дела, в котором нужна стенография, вы получите уведомление. - + CM: ПД: - + If checked, you will appear amongst the potential CMs on the server. Отметьте, если вы хотите состоять в числе производителей дел. - + + Witness: + + + + + If checked, you will appear amongst the potential witnesses on the server. + + + + Hosting cases: ПД акт.: - + If you're a CM, enter what cases you are willing to host. Будучи производителем дела (ПД), вы можете войти в зону и заниматься её оркестровкой. @@ -409,36 +455,40 @@ Reason: Courtroom - + Password Пароль - + Spectator Наблюдатель - - + + Search Поиск - + Passworded Ограничен паролем - + Taken Занят - + + Could not find %1 + + + Generating chars: %1/%2 - Генерация персонажей: + Генерация персонажей: %1/%2 @@ -448,322 +498,331 @@ Reason: - + Showname Имя - + Message Сообщение - + Name Никнейм - + Pre Пред. - + Flip Разв. - Guard - Охрана + Охрана - - + + Casing Дело - + Shownames Произв. имена - + No Interrupt Говорить сразу - + White Белый - + Green Зелëный - + Red Красный - + Orange Оранжевый - + Blue Синий - + Yellow Жëлтый - + This does nothing, but there you go. В общем-то, это ни на что не влияет... - + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. Cases you can load: %1 Укажите имя файла с делом (без расширения) для загрузки. Убедитесь, что оно расположено в папке `base/cases`. Были найдены: %1 - + Case made by %1. Дело завëл игрок: %1. - + Navigate to %1 for the CM doc. Перейдите к %1 для получения материалов дела. - + Your case "%1" was loaded! Дело под кодовым названием "%1" готово! - - + + Server Сервер - + Back to Lobby Назад в лобби - + Rainbow Радужный - + + Disable Modcalls + + + + Pink Розовый - + Cyan Голубой - + % offset % сдвига - + Music Музыка - + Sfx Звук. эффекты - + Blips Сигналы - + Log limit - + Change character - + Reload theme - + Call mod - + Settings Настройки - + A/M - + Preanim - + + You have been banned. + + + + You were granted the Guard button. Теперь у вас есть кнопка "Охрана". - + You opened the settings menu. Вы открыли меню настроек. - + You will now pair up with Вы встанете парой с персонажем по имени - + if they also choose your character in return. (если он выберет вас в ответ). - + You are no longer paired with anyone. Теперь вы не стоите в парах. - + Are you sure you typed that well? The char ID could not be recognised. Кажется, вам нужно поменять запрос: такой идентификатор персонажа не был найден. - + You have set your offset to Вы установили сдвиг персонажа на - + Your offset must be between -100% and 100%! Сдвиг персонажа должен быть между -100% и 100%! - + That offset does not look like one. Неверный сдвиг персонажа. - + You switched your music and area list. Вы переключили перечень зон и музыки. - + You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this. Из-за того, что вы включили не поддержимаемые сервером возможности, он может не принять ваши сообщения. - + Your pre-animations interrupt again. Персонаж будет говорить только после анимации. - + Your pre-animations will not interrupt text. Персонаж будет говорить и во время анимации. - + Couldn't open chatlog.txt to write into. Не могу открыть `chatlog.txt` для записи лога. - + The IC chatlog has been saved. Лог игрового чата сохранëн. - + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. Файл с делом не найден. Если найдëте, положите его в папку `base/cases/`, которую мы для вас создали. - + Too many arguments to load a case! You only need one filename, without extension. Введите имя файла без расширения. - + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. Папка `base/cases/` отсутствует! - + You need to give a filename to save (extension not needed) and the courtroom status! Введите имя файла (без расширения) и предоставьте статус зоны. - + Too many arguments to save a case! You only need a filename without extension and the courtroom status! Убедитесь, что имя файла не содержит расширение. - + Succesfully saved, edit doc and cmdoc link on the ini! Сохранение прошло успешно! - + Master Мастер - + Reason: Причина: - + Call Moderator Позвать модератора - - + + Error Ошибка - + You must provide a reason. Укажите причину. - + The message is too long. Слишком длинный текст. @@ -796,40 +855,40 @@ Cases you can load: %1 Никнейм - + It doesn't look like your client is set up correctly. Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? Не похоже, что ваш клиент установлен правильно. Скачали ли вы все ресурсы (tiny.cc/getao), включая огромную папку `base`? - + Version: %1 Версия: %1 - + Loading Загрузка - + Cancel Отмена - + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy <h2>Attorney Online %1</h2>Симулятор судебной драмы<p><b>Исходный код:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Основной разработкой занимались:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Особенная благодарность:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (дизайн интерфейса), Draxirch (дизайн интерфейса), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy - + Online: %1/%2 Онлайн: %1/%2 - - + + Offline Вне сети From f9442709c2a7fbb47dad354391b387ce7b844ba7 Mon Sep 17 00:00:00 2001 From: sD Date: Sun, 23 Feb 2020 13:14:54 +0100 Subject: [PATCH 44/46] missing german localizations --- resource/translations/ao_de.ts | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/resource/translations/ao_de.ts b/resource/translations/ao_de.ts index 4d800ad..c9efd1d 100644 --- a/resource/translations/ao_de.ts +++ b/resource/translations/ao_de.ts @@ -155,7 +155,7 @@ Grund: Witness needed - + Zeuge benötigt @@ -243,12 +243,12 @@ Grund: Allow Shake/Flash: - + Schütteln/Geistesblitz erlauben: Allows screenshaking and flashing. Disable this if you have concerns or issues with photosensitivity and/or seizures. - + Erlaubt schütteln des Bildschirms und weiße Blitze. Deaktiviere dies falls du Bedenken wegen Photosensitivität hast. @@ -338,22 +338,22 @@ Grund: Enable Looping SFX: - + Wiederholende Soundeffekte: If true, the game will allow looping sound effects to play on preanimations. - + Wenn aktiviert, werden wiederholende Soundeffekte bei den Voranimationen erlaubt. Kill Music On Objection: - + Stoppe Musik bei Einspruch: If true, the game will stop music when someone objects, like in the actual games. - + Hält die Musik an wenn jemand "Einspruch" ruft, wie im echten Spiel. @@ -448,12 +448,12 @@ Grund: Witness: - + Zeuge: If checked, you will appear amongst the potential witnesses on the server. - + Wenn angehakt wirst du als potentielle Zeuge angezeigt. @@ -543,7 +543,7 @@ Grund: Disable Modcalls - + Deaktiviere Moderatorenrufe From b6eb61c187e3159bd53651e229d954adc2b237cd Mon Sep 17 00:00:00 2001 From: sD Date: Sun, 23 Feb 2020 13:18:51 +0100 Subject: [PATCH 45/46] move language setting to the correct position --- src/aooptionsdialog.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/aooptionsdialog.cpp b/src/aooptionsdialog.cpp index 30146c9..37d4957 100644 --- a/src/aooptionsdialog.cpp +++ b/src/aooptionsdialog.cpp @@ -180,7 +180,7 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDi ui_language_label = new QLabel(ui_form_layout_widget); ui_language_label->setText(tr("Language:")); ui_language_label->setToolTip(tr("Sets the language if you don't want to use your system language.")); - ui_gameplay_form->setWidget(10, QFormLayout::LabelRole, ui_language_label); + ui_gameplay_form->setWidget(11, QFormLayout::LabelRole, ui_language_label); ui_language_combobox = new QComboBox(ui_form_layout_widget); ui_language_combobox->addItem(configini->value("language", " ").value() + " - Keep current setting"); @@ -190,7 +190,7 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDi ui_language_combobox->addItem("es - Español"); ui_language_combobox->addItem("jp - 日本語"); ui_language_combobox->addItem("ru - Русский"); - ui_gameplay_form->setWidget(10, QFormLayout::FieldRole, ui_language_combobox); + ui_gameplay_form->setWidget(11, QFormLayout::FieldRole, ui_language_combobox); // Here we start the callwords tab. ui_callwords_tab = new QWidget(); From ad80e6413f7bc81177605c125eaf9c408aac94c6 Mon Sep 17 00:00:00 2001 From: sD Date: Sun, 23 Feb 2020 13:21:05 +0100 Subject: [PATCH 46/46] disable modcalls is longer than guiard --- base/themes/default/courtroom_design.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/themes/default/courtroom_design.ini b/base/themes/default/courtroom_design.ini index d0495be..96abd8d 100644 --- a/base/themes/default/courtroom_design.ini +++ b/base/themes/default/courtroom_design.ini @@ -107,7 +107,7 @@ pre = 5, 490, 80, 21 flip = 104, 490, 61, 21 ; Guard button -guard = 200, 580, 81, 21 +guard = 200, 580, 100, 21 pre_no_interrupt = 200, 490, 85, 21