Use vd setting when creating client

Former-commit-id: b9a32c6b2f1a61a407991507c63ba7d708723410
This commit is contained in:
Imbris 2019-05-26 16:13:42 -04:00
parent ec3176a471
commit 045f41dae7
4 changed files with 14 additions and 7 deletions

View File

@ -105,7 +105,7 @@ impl Client {
}
pub fn set_view_distance(&mut self, view_distance: u32) {
self.view_distance = Some(view_distance.max(5).min(25));
self.view_distance = Some(view_distance.max(1).min(25));
self.postbox
.send_message(ClientMsg::SetViewDistance(self.view_distance.unwrap())); // Can't fail
}
@ -230,9 +230,9 @@ impl Client {
// Request chunks from the server.
// TODO: This is really inefficient.
'outer: for dist in 0..view_distance as i32 {
for i in chunk_pos.x - dist..chunk_pos.x + dist + 1 {
for j in chunk_pos.y - dist..chunk_pos.y + dist + 1 {
'outer: for dist in 0..=view_distance as i32 {
for i in chunk_pos.x - dist..=chunk_pos.x + dist {
for j in chunk_pos.y - dist..=chunk_pos.y + dist {
let key = Vec2::new(i, j);
if self.state.terrain().get_key(key).is_none()
&& !self.pending_chunks.contains_key(&key)

View File

@ -295,7 +295,7 @@ impl Server {
.map(|e: i32| e.abs())
.reduce_max() as u32;
if player.view_distance.map(|vd| dist < vd).unwrap_or(false) {
if player.view_distance.map(|vd| dist <= vd).unwrap_or(false) {
self.clients.notify(
entity,
ServerMsg::TerrainChunkUpdate {
@ -329,6 +329,7 @@ impl Server {
if player.view_distance.map(|vd| dist <= vd).unwrap_or(false) {
should_drop = false;
break;
}
}

View File

@ -106,7 +106,10 @@ impl PlayState for MainMenuState {
// Don't try to connect if there is already a connection in progress.
client_init = client_init.or(Some(ClientInit::new(
(server_address, DEFAULT_PORT, false),
comp::Player::new(username.clone(), Some(10)),
comp::Player::new(
username.clone(),
Some(global_state.settings.graphics.view_distance),
),
false,
)));
}

View File

@ -30,7 +30,10 @@ impl PlayState for StartSingleplayerState {
let client_init = ClientInit::new(
(server_address.clone(), self.sock.port(), true),
comp::Player::new(username.clone(), Some(10)),
comp::Player::new(
username.clone(),
Some(global_state.settings.graphics.view_distance),
),
true,
);