mirror of
https://github.com/horizon-rust/horizon.git
synced 2026-11-08 17:19:10 -10:00
server list: F5 refreshes it, as in vanilla
This commit is contained in:
1 parent
12e0094f1f
commit
4c4fcedf40
4 files changed
+40
No files matched your search
@@ -12530,6 +12530,11 @@ impl ApplicationHandler for Game<'_> {
|
||||
}
|
||||
self.save_title_options();
|
||||
}
|
||||
PhysicalKey::Code(KeyCode::F5) => {
|
||||
if let Some(t) = self.title.as_mut() {
|
||||
t.refresh_servers();
|
||||
}
|
||||
}
|
||||
_ => self.title_edit(event.text.as_deref(), false),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -167,6 +167,7 @@ impl StartupMenu {
|
||||
}
|
||||
match event.physical_key {
|
||||
PhysicalKey::Code(KeyCode::Escape) => title.escape(),
|
||||
PhysicalKey::Code(KeyCode::F5) => title.refresh_servers(),
|
||||
PhysicalKey::Code(KeyCode::Tab) => title.tab(),
|
||||
PhysicalKey::Code(KeyCode::Enter | KeyCode::NumpadEnter) => title.confirm_edit(),
|
||||
PhysicalKey::Code(
|
||||
|
||||
@@ -1673,6 +1673,14 @@ impl Title {
|
||||
_ => self.mode = Mode::Main,
|
||||
}
|
||||
}
|
||||
/// `JoinMultiplayerScreen.keyPressed`: F5 refreshes the server list as
|
||||
/// Refresh does (`refreshServerList`).
|
||||
pub fn refresh_servers(&mut self) {
|
||||
if let Mode::Multiplayer(screen @ crate::multiplayer::Screen::List { .. }) = &mut self.mode
|
||||
{
|
||||
*screen = crate::multiplayer::Screen::list(&self.saves);
|
||||
}
|
||||
}
|
||||
}
|
||||
fn centered(atlas: &HudAtlas, batch: &mut HudBatch, text: &str, y: f32, color: u32) {
|
||||
batch.text(
|
||||
|
||||
@@ -117,6 +117,32 @@ fn direct_connection_remembers_the_address_on_cancel_escape_and_join() {
|
||||
assert!(f.title.focused_field().unwrap().1.is_empty());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn f5_reloads_the_server_list() {
|
||||
let mut f = Fixture::new();
|
||||
f.click("Multiplayer");
|
||||
let file = crate::multiplayer::servers_file(&f.title.saves);
|
||||
horizon_protocol::servers::save(
|
||||
&file,
|
||||
&[horizon_protocol::servers::ServerEntry::new(
|
||||
"Local",
|
||||
"127.0.0.1:1",
|
||||
)],
|
||||
)
|
||||
.unwrap();
|
||||
let listed = |f: &Fixture| match &f.title.mode {
|
||||
Mode::Multiplayer(crate::multiplayer::Screen::List { servers, .. }) => servers.len(),
|
||||
_ => usize::MAX,
|
||||
};
|
||||
assert_eq!(listed(&f), 0);
|
||||
f.title.refresh_servers();
|
||||
assert_eq!(listed(&f), 1);
|
||||
// Only the list refreshes.
|
||||
f.title.mode = Mode::Main;
|
||||
f.title.refresh_servers();
|
||||
assert!(matches!(f.title.mode, Mode::Main));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn empty_singleplayer_opens_creation_and_cancel_returns_to_title() {
|
||||
let mut f = Fixture::new();
|
||||
|
||||
Reference in new issue
Block a user