diff options
| author | Cerapter <cerap@protonmail.com> | 2018-09-01 21:54:36 +0200 |
|---|---|---|
| committer | Cerapter <cerap@protonmail.com> | 2018-09-01 21:54:36 +0200 |
| commit | dffd48711a1bd68421832867d69f589da64e972b (patch) | |
| tree | a28c39db7f81fed8dc049931e1c17eb0c58ae720 | |
| parent | c3e29d685079dd1090c305b84172983ed347a63c (diff) | |
Character selection enhancements.
- Changing areas or switching characters updates the character
availability list for everyone.
- Taken and passworded on by default.
| -rw-r--r-- | charselect.cpp | 5 | ||||
| -rw-r--r-- | server/client_manager.py | 15 |
2 files changed, 15 insertions, 5 deletions
diff --git a/charselect.cpp b/charselect.cpp index 961c0906..ac73ac27 100644 --- a/charselect.cpp +++ b/charselect.cpp @@ -39,6 +39,9 @@ void Courtroom::construct_char_select() ui_char_taken->setText("Taken"); set_size_and_pos(ui_char_taken, "char_taken"); + ui_char_taken->setChecked(true); + ui_char_passworded->setChecked(true); + set_size_and_pos(ui_char_buttons, "char_buttons"); connect (char_button_mapper, SIGNAL(mapped(int)), this, SLOT(char_clicked(int))); @@ -71,6 +74,8 @@ void Courtroom::set_char_select() ui_char_select_background->resize(f_charselect.width, f_charselect.height); ui_char_select_background->set_image("charselect_background.png"); + filter_character_list(); + ui_char_search->setFocus(); } diff --git a/server/client_manager.py b/server/client_manager.py index c5e0b10c..83232993 100644 --- a/server/client_manager.py +++ b/server/client_manager.py @@ -122,6 +122,7 @@ class ClientManager: self.char_id = char_id self.pos = '' self.send_command('PV', self.id, 'CID', self.char_id) + self.area.send_command('CharsCheck', *self.get_available_char_list()) logger.log_server('[{}]Changed character from {} to {}.' .format(self.area.id, old_char, self.get_char_name()), self) @@ -193,6 +194,7 @@ class ClientManager: logger.log_server( '[{}]Changed area from {} ({}) to {} ({}).'.format(self.get_char_name(), old_area.name, old_area.id, self.area.name, self.area.id), self) + self.area.send_command('CharsCheck', *self.get_available_char_list()) self.send_command('HP', 1, self.area.hp_def) self.send_command('HP', 2, self.area.hp_pro) self.send_command('BN', self.area.background) @@ -276,11 +278,7 @@ class ClientManager: self.send_host_message(info) def send_done(self): - avail_char_ids = set(range(len(self.server.char_list))) - set([x.char_id for x in self.area.clients]) - char_list = [-1] * len(self.server.char_list) - for x in avail_char_ids: - char_list[x] = 0 - self.send_command('CharsCheck', *char_list) + self.send_command('CharsCheck', *self.get_available_char_list()) self.send_command('HP', 1, self.area.hp_def) self.send_command('HP', 2, self.area.hp_pro) self.send_command('BN', self.area.background) @@ -292,6 +290,13 @@ class ClientManager: self.char_id = -1 self.send_done() + def get_available_char_list(self): + avail_char_ids = set(range(len(self.server.char_list))) - set([x.char_id for x in self.area.clients]) + char_list = [-1] * len(self.server.char_list) + for x in avail_char_ids: + char_list[x] = 0 + return char_list + def auth_mod(self, password): if self.is_mod: raise ClientError('Already logged in.') |
