diff options
| author | David Skoland <davidskoland@gmail.com> | 2017-01-27 01:24:58 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-01-27 01:24:58 +0100 |
| commit | d4ad200b612acb1ed2a74d057efc8c3cbfa07ad2 (patch) | |
| tree | a2b2dbee3b1a3102499b3cb5c6529e6f01655f74 /courtroom.cpp | |
| parent | ea9ba4526dc313a61682ec41b3b052019051545e (diff) | |
| parent | 9682087667e2de26e14406efde960b8c7f0c3c98 (diff) | |
Merge pull request #2 from OmniTroid/master
well
Diffstat (limited to 'courtroom.cpp')
| -rw-r--r-- | courtroom.cpp | 310 |
1 files changed, 295 insertions, 15 deletions
diff --git a/courtroom.cpp b/courtroom.cpp index f0ad216..f408b14 100644 --- a/courtroom.cpp +++ b/courtroom.cpp @@ -1,9 +1,9 @@ #include "courtroom.h" #include "aoapplication.h" -#include "text_file_functions.h" -#include "path_functions.h" -#include "global_variables.h" +#include "lobby.h" +#include "hardware_functions.h" +#include "file_functions.h" #include <QDebug> @@ -11,27 +11,40 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() { ao_app = p_ao_app; + char_button_mapper = new QSignalMapper(this); + ui_background = new AOImage(this, ao_app); //viewport elements like background, desk, etc. ui_ic_chatlog = new QPlainTextEdit(this); + ui_ic_chatlog->setReadOnly(true); ui_ms_chatlog = new QPlainTextEdit(this); - ui_server_chatlog = new QPlainTextEdit(this); + ui_ms_chatlog->setReadOnly(true); + ui_ms_chatlog->hide(); + ui_server_chatlog = new QPlainTextEdit(this); + ui_server_chatlog->setReadOnly(true); ui_mute_list = new QListWidget(this); ui_area_list = new QListWidget(this); ui_music_list = new QListWidget(this); ui_ic_chat_message = new QLineEdit(this); + ui_ic_chat_message->setFrame(false); ui_ooc_chat_message = new QLineEdit(this); + ui_ooc_chat_message->setFrame(false); + ui_ooc_chat_name = new QLineEdit(this); + ui_ooc_chat_name->setFrame(false); + ui_ooc_chat_name->setPlaceholderText("Name"); ui_area_password = new QLineEdit(this); + ui_area_password->setFrame(false); ui_music_search = new QLineEdit(this); + ui_music_search->setFrame(false); //emote buttons @@ -73,9 +86,17 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() ui_text_color = new QComboBox(this); - ui_music_slider = new QSlider(this); - ui_sfx_slider = new QSlider(this); - ui_blip_slider = new QSlider(this); + ui_music_slider = new QSlider(Qt::Horizontal, this); + ui_music_slider->setRange(0, 100); + ui_music_slider->setValue(50); + + ui_sfx_slider = new QSlider(Qt::Horizontal, this); + ui_sfx_slider->setRange(0, 100); + ui_sfx_slider->setValue(50); + + ui_blip_slider = new QSlider(Qt::Horizontal, this); + ui_blip_slider->setRange(0, 100); + ui_blip_slider->setValue(50); ui_muted = new AOImage(this, ao_app); @@ -83,7 +104,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() ui_char_select_background = new AOImage(this, ao_app); - //setting up the grid and positions + //constructing character button grid const int base_x_pos{25}; const int base_y_pos{36}; @@ -95,23 +116,52 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() for (int n = 0 ; n < 90 ; ++n) { - ui_char_button_list.append(new AOCharButton(ui_char_select_background, ao_app)); + int x_pos = base_x_pos + (x_modifier * x_mod_count); + int y_pos = base_y_pos + (y_modifier * y_mod_count); + + ui_char_button_list.append(new AOCharButton(ui_char_select_background, ao_app, x_pos, y_pos)); + + connect(ui_char_button_list.at(n), SIGNAL(clicked()), char_button_mapper, SLOT(map())) ; + char_button_mapper->setMapping (ui_char_button_list.at(n), n) ; + + ++x_mod_count; + + //if char number is divisible by ten with rest 9 then the next charicon should start on a new line + if (n % 10 == 9 && n != 0) + { + ++y_mod_count; + x_mod_count = 0; + } } - ui_char_select_background->hide(); + connect (char_button_mapper, SIGNAL(mapped(int)), this, SLOT(char_clicked(int))) ; ui_selector = new AOImage(ui_char_select_background, ao_app); + ui_selector->setAttribute(Qt::WA_TransparentForMouseEvents); + ui_selector->resize(62, 62); ui_back_to_lobby = new AOButton(ui_char_select_background, ao_app); ui_char_password = new QLineEdit(ui_char_select_background); + ui_char_select_left = new AOButton(ui_char_select_background, ao_app); + ui_char_select_right = new AOButton(ui_char_select_background, ao_app); + ui_spectator = new AOButton(ui_char_select_background, ao_app); + connect(ui_ooc_chat_message, SIGNAL(returnPressed()), this, SLOT(on_ooc_return_pressed())); + connect(ui_ooc_toggle, SIGNAL(clicked()), this, SLOT(on_ooc_toggle_clicked())); + connect(ui_change_character, SIGNAL(clicked()), this, SLOT(on_change_character_clicked())); + connect(ui_reload_theme, SIGNAL(clicked()), this, SLOT(on_reload_theme_clicked())); 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())); + connect(ui_char_select_right, SIGNAL(clicked()), this, SLOT(on_char_select_right_clicked())); + + connect(ui_spectator, SIGNAL(clicked()), this, SLOT(on_spectator_clicked())); + set_widgets(); } @@ -127,20 +177,31 @@ void Courtroom::set_widgets() //viewport elements like background, desk, etc. go here set_size_and_pos(ui_ic_chatlog, "ic_chatlog"); + ui_ic_chatlog->setStyleSheet("background-color: rgba(0, 0, 0, 0);"); set_size_and_pos(ui_ms_chatlog, "ms_chatlog"); + ui_ms_chatlog->setStyleSheet("background-color: rgba(0, 0, 0, 0);"); set_size_and_pos(ui_server_chatlog, "server_chatlog"); + ui_server_chatlog->setStyleSheet("background-color: rgba(0, 0, 0, 0);"); set_size_and_pos(ui_mute_list, "mute_list"); + ui_mute_list->hide(); + set_size_and_pos(ui_area_list, "area_list"); + ui_area_list->setStyleSheet("background-color: rgba(0, 0, 0, 0);"); set_size_and_pos(ui_music_list, "music_list"); + ui_area_list->setStyleSheet("background-color: rgba(0, 0, 0, 0);"); set_size_and_pos(ui_ic_chat_message, "ic_chat_message"); + ui_ic_chat_message->setStyleSheet("background-color: rgba(0, 0, 0, 0);"); set_size_and_pos(ui_ooc_chat_message, "ooc_chat_message"); + ui_ooc_chat_message->setStyleSheet("background-color: rgba(0, 0, 0, 0);"); + set_size_and_pos(ui_ooc_chat_name, "ooc_chat_name"); + ui_ooc_chat_name->setStyleSheet("background-color: rgba(0, 0, 0, 0);"); set_size_and_pos(ui_area_password, "area_password"); set_size_and_pos(ui_music_search, "music_search"); @@ -148,44 +209,77 @@ void Courtroom::set_widgets() //emote buttons set_size_and_pos(ui_emote_left, "emote_left"); + ui_emote_left->set_image("arrow_left.png"); + set_size_and_pos(ui_emote_right, "emote_right"); + ui_emote_right->set_image("arrow_right.png"); set_size_and_pos(ui_defense_bar, "defense_bar"); + ui_defense_bar->set_image("defensebar10.png"); + set_size_and_pos(ui_prosecution_bar, "prosecution_bar"); + ui_prosecution_bar->set_image("prosecutionbar10.png"); set_size_and_pos(ui_music_label, "music_label"); + ui_music_label->setText("Music"); set_size_and_pos(ui_sfx_label, "sfx_label"); + ui_sfx_label->setText("Sfx"); set_size_and_pos(ui_blip_label, "blip_label"); + ui_blip_label->setText("Blips"); set_size_and_pos(ui_hold_it, "hold_it"); + ui_hold_it->set_image("holdit.png"); set_size_and_pos(ui_objection, "objection"); + ui_objection->set_image("objection.png"); set_size_and_pos(ui_take_that, "take_that"); + ui_take_that->set_image("takethat.png"); set_size_and_pos(ui_ooc_toggle, "ooc_toggle"); + ui_ooc_toggle->setText("Server"); set_size_and_pos(ui_witness_testimony, "witness_testimony"); + ui_witness_testimony->set_image("witnesstestimony.png"); set_size_and_pos(ui_cross_examination, "cross_examination"); + ui_cross_examination->set_image("crossexamination.png"); set_size_and_pos(ui_change_character, "change_character"); + ui_change_character->setText("Change character"); set_size_and_pos(ui_reload_theme, "reload_theme"); ui_reload_theme->setText("Reload theme"); set_size_and_pos(ui_call_mod, "call_mod"); + ui_call_mod->setText("Call mod"); set_size_and_pos(ui_pre, "pre"); + ui_pre->setText("Pre"); + set_size_and_pos(ui_flip, "flip"); + ui_flip->setText("Flip"); + set_size_and_pos(ui_guard, "guard"); + ui_guard->setText("Guard"); set_size_and_pos(ui_custom_objection, "custom_objection"); + ui_custom_objection->set_image("custom.png"); + set_size_and_pos(ui_realization, "realization"); - set_size_and_pos(ui_mute, "mute"); + ui_realization->set_image("realization.png"); + + set_size_and_pos(ui_mute, "mute_button"); + ui_mute->set_image("mute.png"); set_size_and_pos(ui_defense_plus, "defense_plus"); + ui_defense_plus->set_image("defplus.png"); + set_size_and_pos(ui_defense_minus, "defense_minus"); + ui_defense_minus->set_image("defminus.png"); set_size_and_pos(ui_prosecution_plus, "prosecution_plus"); + ui_prosecution_plus->set_image("proplus.png"); + set_size_and_pos(ui_prosecution_minus, "prosecution_minus"); + ui_prosecution_minus->set_image("prominus.png"); set_size_and_pos(ui_text_color, "text_color"); @@ -202,10 +296,9 @@ void Courtroom::set_widgets() ui_char_select_background->move(0, 0); ui_char_select_background->resize(m_courtroom_width, m_courtroom_height); - //T0D0: uncomment and set position properly - //QVector<AOCharButton*> ui_char_button_list; + //buttons are in the constructor - ui_selector->set_image("selector.png"); + ui_selector->set_image("char_selector.png"); ui_selector->hide(); ui_back_to_lobby->setText("Back to Lobby"); @@ -213,7 +306,15 @@ void Courtroom::set_widgets() set_size_and_pos(ui_char_password, "char_password"); - ui_spectator->setText("spectator"); + ui_char_select_left->set_image("arrow_left.png"); + ui_char_select_left->move(2, 325); + ui_char_select_left->resize(20, 20); + + ui_char_select_right->set_image("arrow_right.png"); + ui_char_select_right->move(691, 325); + ui_char_select_right->resize(20, 20); + + ui_spectator->setText("Spectator"); set_size_and_pos(ui_spectator, "spectator"); } @@ -242,6 +343,151 @@ void Courtroom::set_size_and_pos(QWidget *p_widget, QString p_identifier) p_widget->resize(design_ini_result.width, design_ini_result.height); } +void Courtroom::set_taken(int n_char, bool p_taken) +{ + if (n_char >= char_list.size()) + { + qDebug() << "W: set_taken attempted to set an index bigger than char_list size"; + return; + } + + char_type f_char; + f_char.name = char_list.at(n_char).name; + f_char.description = char_list.at(n_char).description; + f_char.taken = p_taken; + + char_list.replace(n_char, f_char); +} + +void Courtroom::set_char_select_page() +{ + ui_char_select_background->show(); + + ui_char_select_left->hide(); + ui_char_select_right->hide(); + + for (AOCharButton *i_button : ui_char_button_list) + i_button->hide(); + + int total_pages = char_list.size() / 90; + int chars_on_page = 0; + + if (char_list.size() % 90 != 0) + { + ++total_pages; + //i. e. not on the last page + if (total_pages > current_char_page + 1) + chars_on_page = 90; + else + chars_on_page = char_list.size() % 90; + + } + else + chars_on_page = 90; + + qDebug() << "chars_on_page: " << chars_on_page; + + if (total_pages > current_char_page + 1) + ui_char_select_right->show(); + + if (current_char_page > 0) + ui_char_select_left->show(); + + for (int n_button = 0 ; n_button < chars_on_page ; ++n_button) + { + int n_real_char = n_button + current_char_page * 90; + + ui_char_button_list.at(n_button)->set_image(char_list.at(n_real_char).name); + ui_char_button_list.at(n_button)->show(); + } + +} + +void Courtroom::enter_courtroom(int p_cid) +{ + m_cid = p_cid; + QString f_char = char_list.at(m_cid).name; + + //T0D0: set emote buttons + + QString side = ao_app->get_char_side(f_char); + + if (side == "jud") + { + ui_witness_testimony->show(); + ui_cross_examination->show(); + ui_defense_minus->show(); + ui_defense_plus->show(); + ui_prosecution_minus->show(); + ui_prosecution_plus->show(); + } + else + { + ui_witness_testimony->hide(); + ui_cross_examination->hide(); + ui_defense_minus->hide(); + ui_defense_plus->hide(); + ui_prosecution_minus->hide(); + ui_prosecution_plus->hide(); + } + + ui_char_select_background->hide(); +} + +void Courtroom::append_ms_chatmessage(QString f_message) +{ + ui_ms_chatlog->appendPlainText(f_message); +} + +void Courtroom::append_server_chatmessage(QString f_message) +{ + ui_server_chatlog->appendPlainText(f_message); +} + +void Courtroom::on_ooc_return_pressed() +{ + if (ui_ooc_chat_message->text() == "" || ui_ooc_chat_name->text() == "") + return; + + QStringList packet_contents; + packet_contents.append(ui_ooc_chat_name->text()); + packet_contents.append(ui_ooc_chat_message->text()); + + AOPacket *f_packet = new AOPacket("CT", packet_contents); + + if (server_ooc) + ao_app->send_server_packet(f_packet); + else + ao_app->send_ms_packet(f_packet); + + ui_ooc_chat_message->clear(); +} + +void Courtroom::on_ooc_toggle_clicked() +{ + if (server_ooc) + { + ui_ms_chatlog->show(); + ui_server_chatlog->hide(); + ui_ooc_toggle->setText("Master"); + + server_ooc = false; + } + else + { + ui_ms_chatlog->hide(); + ui_server_chatlog->show(); + ui_ooc_toggle->setText("Server"); + + server_ooc = true; + } +} + +void Courtroom::on_change_character_clicked() +{ + ui_char_select_background->show(); +} + void Courtroom::on_reload_theme_clicked() { ao_app->set_user_theme(); @@ -252,9 +498,43 @@ void Courtroom::on_reload_theme_clicked() void Courtroom::on_back_to_lobby_clicked() { ao_app->construct_lobby(); + ao_app->w_lobby->list_servers(); ao_app->destruct_courtroom(); } +void Courtroom::on_char_select_left_clicked() +{ + --current_char_page; + set_char_select_page(); +} + +void Courtroom::on_char_select_right_clicked() +{ + ++current_char_page; + set_char_select_page(); +} + +void Courtroom::on_spectator_clicked() +{ + ui_char_select_background->hide(); +} + +void Courtroom::char_clicked(int n_char) +{ + int n_real_char = n_char + current_char_page * 90; + + QString char_ini_path = ao_app->get_character_path(char_list.at(n_real_char).name) + "char.ini"; + + if (!file_exists(char_ini_path)) + { + qDebug() << "did not find " << char_ini_path; + //T0D0: call error + return; + } + + ao_app->send_server_packet(new AOPacket("CC#" + QString::number(ao_app->s_pv) + "#" + QString::number(n_real_char) + "#" + get_hdid() + "#%")); +} + Courtroom::~Courtroom() { |
