fix QueryDoesNotMatch and improve error

This commit is contained in:
mat 2023-10-06 15:23:36 -05:00
parent 177864be60
commit 30702d94f6
3 changed files with 10 additions and 8 deletions

View file

@ -270,6 +270,7 @@ impl Client {
received_registries: ReceivedRegistries::default(),
local_player_events: LocalPlayerEvents(tx),
game_profile: GameProfileComponent(game_profile),
client_information: crate::ClientInformation::default(),
account: account.to_owned(),
},
InConfigurationState,
@ -593,6 +594,7 @@ pub struct LocalPlayerBundle {
pub received_registries: ReceivedRegistries,
pub local_player_events: LocalPlayerEvents,
pub game_profile: GameProfileComponent,
pub client_information: ClientInformation,
pub account: Account,
}
@ -604,7 +606,6 @@ pub struct JoinedClientBundle {
pub instance_holder: InstanceHolder,
pub physics_state: PhysicsState,
pub inventory: InventoryComponent,
pub client_information: ClientInformation,
pub tab_list: TabList,
pub current_sequence_number: CurrentSequenceNumber,
pub last_sent_direction: LastSentLookDirection,

View file

@ -23,9 +23,10 @@ impl Client {
/// # }
/// ```
pub fn query<'w, Q: WorldQuery>(&self, ecs: &'w mut World) -> <Q as WorldQuery>::Item<'w> {
ecs.query::<Q>()
.get_mut(ecs, self.entity)
.expect("Our client is missing a required component.")
ecs.query::<Q>().get_mut(ecs, self.entity).expect(&format!(
"Our client is missing a required component {:?}",
std::any::type_name::<Q>()
))
}
/// Return a lightweight [`Entity`] for the entity that matches the given
@ -66,9 +67,10 @@ impl Client {
pub fn entity_component<Q: Component + Clone>(&mut self, entity: Entity) -> Q {
let mut ecs = self.ecs.lock();
let mut q = ecs.query::<&Q>();
let components = q
.get(&ecs, entity)
.expect("Entity components must be present in Client::entity)components.");
let components = q.get(&ecs, entity).expect(&format!(
"Entity is missing a required component {:?}",
std::any::type_name::<Q>()
));
components.clone()
}

View file

@ -134,7 +134,6 @@ pub fn process_packet_events(ecs: &mut World) {
instance_holder,
physics_state: crate::PhysicsState::default(),
inventory: crate::inventory::InventoryComponent::default(),
client_information: crate::ClientInformation::default(),
tab_list: crate::local_player::TabList::default(),
current_sequence_number: crate::interact::CurrentSequenceNumber::default(),
last_sent_direction: crate::movement::LastSentLookDirection::default(),