The charselect's "shadows" correctly update based on what chars are taken.

This was purely a graphical bug. The characters were correctly
recognised as taken by the client, but there was no way to update the
"taken-shadow" over their icons.
Which meant that they were locked into the way they were when the user
first joined the server.

As a result of this, a `CharsCheck` package from the server will
correctly display the taken characters to the client in the character
selection.
This commit is contained in:
Cerapter 2018-12-12 19:22:34 +01:00
parent 941a32d99c
commit f217c68f85
3 changed files with 20 additions and 4 deletions

View File

@ -40,13 +40,22 @@ void AOCharButton::reset()
ui_selector->hide(); ui_selector->hide();
} }
void AOCharButton::set_taken() void AOCharButton::set_taken(bool is_taken)
{
taken = is_taken;
}
void AOCharButton::apply_taken_image()
{ {
if (taken) if (taken)
{ {
ui_taken->move(0,0); ui_taken->move(0,0);
ui_taken->show(); ui_taken->show();
} }
else
{
ui_taken->hide();
}
} }
void AOCharButton::set_passworded() void AOCharButton::set_passworded()

View File

@ -20,9 +20,11 @@ public:
void refresh(); void refresh();
void reset(); void reset();
void set_taken(); void set_taken(bool is_taken);
void set_passworded(); void set_passworded();
void apply_taken_image();
void set_image(QString p_character); void set_image(QString p_character);
private: private:

View File

@ -168,8 +168,7 @@ void Courtroom::put_button_in_place(int starting, int chars_on_this_page)
ui_char_button_list_filtered.at(n)->move(x_pos, y_pos); ui_char_button_list_filtered.at(n)->move(x_pos, y_pos);
ui_char_button_list_filtered.at(n)->show(); ui_char_button_list_filtered.at(n)->show();
ui_char_button_list_filtered.at(n)->apply_taken_image();
ui_char_button_list_filtered.at(n)->set_taken();
++x_mod_count; ++x_mod_count;
@ -240,6 +239,12 @@ void Courtroom::filter_character_list()
if (!char_list.at(i).name.contains(ui_char_search->text(), Qt::CaseInsensitive)) if (!char_list.at(i).name.contains(ui_char_search->text(), Qt::CaseInsensitive))
continue; 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); ui_char_button_list_filtered.append(current_char);
} }