wip server chunks

This commit is contained in:
griffi-gh 2023-03-07 17:05:55 +01:00
parent f4bbfd3e8a
commit a470543325
5 changed files with 20 additions and 5 deletions

View file

@ -54,6 +54,7 @@ fn process_chunk_requests(
} else {
let mut chunk = Chunk::new(chunk_position);
chunk.state = ChunkState::Loading;
chunk.subscriptions.insert(*client_id);
chunk_manager.chunks.insert(chunk_position, chunk);
task_manager.spawn_task(ChunkTask::LoadChunk {
position: chunk_position,
@ -88,6 +89,7 @@ fn process_finished_tasks(
queued: queue.iter().map(|item| (item.position.to_array(), item.block_type)).collect()
}).map_err(log_error).ok();
}
log::debug!("Chunk {chunk_position} loaded, {} subs", chunk.subscriptions.len())
}
}

View file

@ -80,7 +80,7 @@ fn test_connection() {
log::info!("client received message");
assert_eq!(data, STC_MSG, "Received message not equal");
message_received = true;
client.disconnect();
client.disconnect().unwrap();
},
_ => ()
}

View file

@ -1,4 +1,5 @@
use shipyard::{UniqueView, UniqueViewMut, Workload, IntoWorkload, EntityId, Unique, AllStoragesViewMut, ViewMut, Get, SystemModificator, track};
use glium::glutin::event::VirtualKeyCode;
use glam::{Mat3, vec2};
use crate::{
world::ChunkStorage,
@ -7,7 +8,9 @@ use crate::{
gui::{
GuiComponent,
progressbar::ProgressbarComponent
}, rendering::{WindowSize, if_resized},
},
rendering::{WindowSize, if_resized},
input::RawKbmInputState,
};
#[derive(Unique, Clone, Copy)]
@ -69,6 +72,15 @@ fn switch_to_ingame_if_loaded(
}
}
fn override_loading(
kbm_state: UniqueView<RawKbmInputState>,
mut state: UniqueViewMut<NextState>
) {
if kbm_state.keyboard_state.contains(&VirtualKeyCode::F) {
state.0 = Some(GameState::InGame);
}
}
fn despawn_loading_screen_if_switching_state(
mut storages: AllStoragesViewMut,
) {
@ -85,6 +97,7 @@ pub fn update_loading_screen() -> Workload {
spawn_loading_screen.run_if_missing_unique::<ProgressbarId>(),
resize_progress_bar.run_if(if_resized),
update_progress_bar_progress,
override_loading,
switch_to_ingame_if_loaded,
despawn_loading_screen_if_switching_state.run_if(is_changing_state),
).into_workload()

View file

@ -110,7 +110,7 @@ fn update() -> Workload {
(
update_networking,
inject_network_responses_into_manager_queue,
).into_workload().run_if(is_multiplayer),
).into_sequential_workload().run_if(is_multiplayer),
(
switch_to_loading_if_connected
).into_workload().run_if(is_connecting),

View file

@ -1,7 +1,7 @@
use flume::{Sender, Receiver};
use glam::IVec3;
use kubi_shared::{
networking::messages::{ClientToServerMessage, ServerToClientMessage},
networking::messages::ServerToClientMessage,
worldgen::QueuedBlock
};
use shipyard::{Unique, UniqueView, View, IntoIter};
@ -13,7 +13,7 @@ use super::{
};
use crate::{
rendering::world::ChunkVertex,
networking::{UdpClient, NetworkEvent}
networking::NetworkEvent,
};
use kubi_udp::client::ClientEvent;