aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCerapter <cerap@protonmail.com>2018-09-01 21:54:36 +0200
committerCerapter <cerap@protonmail.com>2018-09-01 21:54:36 +0200
commitdffd48711a1bd68421832867d69f589da64e972b (patch)
treea28c39db7f81fed8dc049931e1c17eb0c58ae720
parentc3e29d685079dd1090c305b84172983ed347a63c (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.cpp5
-rw-r--r--server/client_manager.py15
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.')