Guilty / Not Guilty buttons for the judge position.

This commit is contained in:
Cerapter 2018-08-16 20:04:19 +02:00
parent 331bca5f73
commit 0368e7dc45
4 changed files with 67 additions and 5 deletions

View File

@ -157,6 +157,8 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
ui_ooc_toggle = new AOButton(this, ao_app); ui_ooc_toggle = new AOButton(this, ao_app);
ui_witness_testimony = new AOButton(this, ao_app); ui_witness_testimony = new AOButton(this, ao_app);
ui_cross_examination = new AOButton(this, ao_app); ui_cross_examination = new AOButton(this, ao_app);
ui_guilty = new AOButton(this, ao_app);
ui_not_guilty = new AOButton(this, ao_app);
ui_change_character = new AOButton(this, ao_app); ui_change_character = new AOButton(this, ao_app);
ui_reload_theme = new AOButton(this, ao_app); ui_reload_theme = new AOButton(this, ao_app);
@ -276,6 +278,8 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
connect(ui_witness_testimony, SIGNAL(clicked()), this, SLOT(on_witness_testimony_clicked())); connect(ui_witness_testimony, SIGNAL(clicked()), this, SLOT(on_witness_testimony_clicked()));
connect(ui_cross_examination, SIGNAL(clicked()), this, SLOT(on_cross_examination_clicked())); connect(ui_cross_examination, SIGNAL(clicked()), this, SLOT(on_cross_examination_clicked()));
connect(ui_guilty, SIGNAL(clicked()), this, SLOT(on_guilty_clicked()));
connect(ui_not_guilty, SIGNAL(clicked()), this, SLOT(on_not_guilty_clicked()));
connect(ui_change_character, SIGNAL(clicked()), this, SLOT(on_change_character_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_reload_theme, SIGNAL(clicked()), this, SLOT(on_reload_theme_clicked()));
@ -483,6 +487,11 @@ void Courtroom::set_widgets()
set_size_and_pos(ui_cross_examination, "cross_examination"); set_size_and_pos(ui_cross_examination, "cross_examination");
ui_cross_examination->set_image("crossexamination.png"); ui_cross_examination->set_image("crossexamination.png");
set_size_and_pos(ui_guilty, "guilty");
ui_guilty->set_image("guilty.png");
set_size_and_pos(ui_not_guilty, "not_guilty");
ui_not_guilty->set_image("notguilty.png");
set_size_and_pos(ui_change_character, "change_character"); set_size_and_pos(ui_change_character, "change_character");
ui_change_character->setText("Change character"); ui_change_character->setText("Change character");
@ -739,6 +748,8 @@ void Courtroom::enter_courtroom(int p_cid)
{ {
ui_witness_testimony->show(); ui_witness_testimony->show();
ui_cross_examination->show(); ui_cross_examination->show();
ui_not_guilty->show();
ui_guilty->show();
ui_defense_minus->show(); ui_defense_minus->show();
ui_defense_plus->show(); ui_defense_plus->show();
ui_prosecution_minus->show(); ui_prosecution_minus->show();
@ -748,6 +759,8 @@ void Courtroom::enter_courtroom(int p_cid)
{ {
ui_witness_testimony->hide(); ui_witness_testimony->hide();
ui_cross_examination->hide(); ui_cross_examination->hide();
ui_guilty->hide();
ui_not_guilty->hide();
ui_defense_minus->hide(); ui_defense_minus->hide();
ui_defense_plus->hide(); ui_defense_plus->hide();
ui_prosecution_minus->hide(); ui_prosecution_minus->hide();
@ -2167,7 +2180,7 @@ void Courtroom::handle_song(QStringList *p_contents)
} }
} }
void Courtroom::handle_wtce(QString p_wtce) void Courtroom::handle_wtce(QString p_wtce, int variant)
{ {
QString sfx_file = "courtroom_sounds.ini"; QString sfx_file = "courtroom_sounds.ini";
@ -2186,6 +2199,20 @@ void Courtroom::handle_wtce(QString p_wtce)
ui_vp_wtce->play("crossexamination"); ui_vp_wtce->play("crossexamination");
testimony_in_progress = false; testimony_in_progress = false;
} }
else if (p_wtce == "judgeruling")
{
if (variant == 0)
{
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"));
ui_vp_wtce->play("guilty");
testimony_in_progress = false;
}
}
} }
void Courtroom::set_hp_bar(int p_bar, int p_state) void Courtroom::set_hp_bar(int p_bar, int p_state)
@ -2606,6 +2633,26 @@ void Courtroom::on_cross_examination_clicked()
ui_ic_chat_message->setFocus(); ui_ic_chat_message->setFocus();
} }
void Courtroom::on_not_guilty_clicked()
{
if (is_muted)
return;
ao_app->send_server_packet(new AOPacket("RT#judgeruling#0#%"));
ui_ic_chat_message->setFocus();
}
void Courtroom::on_guilty_clicked()
{
if (is_muted)
return;
ao_app->send_server_packet(new AOPacket("RT#judgeruling#1#%"));
ui_ic_chat_message->setFocus();
}
void Courtroom::on_change_character_clicked() void Courtroom::on_change_character_clicked()
{ {
music_player->set_volume(0); music_player->set_volume(0);

View File

@ -133,7 +133,7 @@ public:
void play_preanim(); void play_preanim();
//plays the witness testimony or cross examination animation based on argument //plays the witness testimony or cross examination animation based on argument
void handle_wtce(QString p_wtce); void handle_wtce(QString p_wtce, int variant);
//sets the hp bar of defense(p_bar 1) or pro(p_bar 2) //sets the hp bar of defense(p_bar 1) or pro(p_bar 2)
//state is an number between 0 and 10 inclusive //state is an number between 0 and 10 inclusive
@ -366,6 +366,8 @@ private:
AOButton *ui_witness_testimony; AOButton *ui_witness_testimony;
AOButton *ui_cross_examination; AOButton *ui_cross_examination;
AOButton *ui_guilty;
AOButton *ui_not_guilty;
AOButton *ui_change_character; AOButton *ui_change_character;
AOButton *ui_reload_theme; AOButton *ui_reload_theme;
@ -525,6 +527,8 @@ private slots:
void on_witness_testimony_clicked(); void on_witness_testimony_clicked();
void on_cross_examination_clicked(); void on_cross_examination_clicked();
void on_not_guilty_clicked();
void on_guilty_clicked();
void on_change_character_clicked(); void on_change_character_clicked();
void on_reload_theme_clicked(); void on_reload_theme_clicked();

View File

@ -490,7 +490,13 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
if (f_contents.size() < 1) if (f_contents.size() < 1)
goto end; goto end;
if (courtroom_constructed) if (courtroom_constructed)
w_courtroom->handle_wtce(f_contents.at(0)); {
if (f_contents.size() == 1)
w_courtroom->handle_wtce(f_contents.at(0), 0);
else if (f_contents.size() == 2) {
w_courtroom->handle_wtce(f_contents.at(0), f_contents.at(1).toInt());
}
}
} }
else if (header == "HP") else if (header == "HP")
{ {

View File

@ -533,18 +533,23 @@ class AOProtocol(asyncio.Protocol):
if not self.client.can_wtce: if not self.client.can_wtce:
self.client.send_host_message('You were blocked from using judge signs by a moderator.') self.client.send_host_message('You were blocked from using judge signs by a moderator.')
return return
if not self.validate_net_cmd(args, self.ArgType.STR): if not self.validate_net_cmd(args, self.ArgType.STR) and not self.validate_net_cmd(args, self.ArgType.STR, self.ArgType.INT):
return return
if args[0] == 'testimony1': if args[0] == 'testimony1':
sign = 'WT' sign = 'WT'
elif args[0] == 'testimony2': elif args[0] == 'testimony2':
sign = 'CE' sign = 'CE'
elif args[0] == 'judgeruling':
sign = 'JR'
else: else:
return return
if self.client.wtce_mute(): if self.client.wtce_mute():
self.client.send_host_message('You used witness testimony/cross examination signs too many times. Please try again after {} seconds.'.format(int(self.client.wtce_mute()))) self.client.send_host_message('You used witness testimony/cross examination signs too many times. Please try again after {} seconds.'.format(int(self.client.wtce_mute())))
return return
if len(args) == 1:
self.client.area.send_command('RT', args[0]) self.client.area.send_command('RT', args[0])
elif len(args) == 2:
self.client.area.send_command('RT', args[0], args[1])
self.client.area.add_to_judgelog(self.client, 'used {}'.format(sign)) self.client.area.add_to_judgelog(self.client, 'used {}'.format(sign))
logger.log_server("[{}]{} Used WT/CE".format(self.client.area.id, self.client.get_char_name()), self.client) logger.log_server("[{}]{} Used WT/CE".format(self.client.area.id, self.client.get_char_name()), self.client)