Fixed pressing enter on character creation screen attempting to log in instead of create the character. Fixed deleting a character with no characters remaining resulting in the deleted character still being selected internally.

This commit is contained in:
Ben Wallis
2022-05-28 16:28:26 +01:00
parent bba81c65d9
commit c001de7409

View File

@ -400,15 +400,29 @@ impl Controls {
ref mut yes_button, ref mut yes_button,
ref mut no_button, ref mut no_button,
} => { } => {
match self.selected {
Some(character_id) => {
// If the selected character no longer exists, deselect it.
if !client
.character_list()
.characters
.iter()
.any(|char| char.character.id.map_or(false, |id| id == character_id))
{
self.selected = None;
}
},
None => {
// If no character is selected then select the first one // If no character is selected then select the first one
// Note: we don't need to persist this because it is the default // Note: we don't need to persist this because it is the default
if self.selected.is_none() {
self.selected = client self.selected = client
.character_list() .character_list()
.characters .characters
.get(0) .get(0)
.and_then(|i| i.character.id); .and_then(|i| i.character.id);
},
} }
// Get the index of the selected character // Get the index of the selected character
let selected = self.selected.and_then(|id| { let selected = self.selected.and_then(|id| {
client client
@ -1725,7 +1739,10 @@ impl CharSelectionUi {
if self.enter_pressed { if self.enter_pressed {
self.enter_pressed = false; self.enter_pressed = false;
messages.push(Message::EnterWorld); messages.push(match self.controls.mode {
Mode::Select { .. } => Message::EnterWorld,
Mode::CreateOrEdit { .. } => Message::CreateCharacter,
});
} }
if let Some(id) = self.select_character.take() { if let Some(id) = self.select_character.take() {