1
2
Fork 0
mirror of https://github.com/mat-1/azalea.git synced 2025-08-02 23:44:38 +00:00

simplify some code

This commit is contained in:
mat 2023-11-18 00:07:25 -06:00
commit e39de79a6b
6 changed files with 26 additions and 15 deletions

9
.gitignore vendored
View file

@ -1,10 +1,13 @@
/target /target
/doc /doc
flamegraph.svg
perf.data
perf.data.old
.vscode .vscode
# created by azalea-auth/examples/auth, defined in the main .gitignore because # created by azalea-auth/examples/auth, defined in the main .gitignore because
# the example could be run from anywhere # the example could be run from anywhere
example_cache.json example_cache.json
# these are created by profiling tools
flamegraph.svg
perf.data
perf.data.old
heaptrack.*

View file

@ -681,6 +681,9 @@ async fn run_schedule_loop(
loop { loop {
// whenever we get an event from run_schedule_receiver, run the schedule // whenever we get an event from run_schedule_receiver, run the schedule
run_schedule_receiver.recv().await; run_schedule_receiver.recv().await;
// get rid of any queued events
while let Ok(()) = run_schedule_receiver.try_recv() {}
let mut ecs = ecs.lock(); let mut ecs = ecs.lock();
ecs.run_schedule(outer_schedule_label); ecs.run_schedule(outer_schedule_label);
ecs.clear_trackers(); ecs.clear_trackers();

View file

@ -54,7 +54,7 @@ pub fn send_packet_events(
}; };
packet_events.send(PacketEvent { packet_events.send(PacketEvent {
entity: player_entity, entity: player_entity,
packet: packet.clone(), packet,
}); });
} }
// clear the packets right after we read them // clear the packets right after we read them

View file

@ -163,10 +163,13 @@ pub fn send_packet_events(
continue; continue;
} }
}; };
packet_events.send(PacketEvent { if let ClientboundGamePacket::LevelChunkWithLight(_) = packet {
entity: player_entity, } else {
packet: packet.clone(), packet_events.send(PacketEvent {
}); entity: player_entity,
packet,
});
}
} }
// clear the packets right after we read them // clear the packets right after we read them
packets.clear(); packets.clear();

View file

@ -47,7 +47,7 @@ async fn main() -> anyhow::Result<()> {
let mut accounts = Vec::new(); let mut accounts = Vec::new();
for i in 0..1 { for i in 0..200 {
accounts.push(Account::offline(&format!("bot{i}"))); accounts.push(Account::offline(&format!("bot{i}")));
} }
@ -98,10 +98,7 @@ async fn handle(mut bot: Client, event: Event, _state: State) -> anyhow::Result<
// .find(|e| e.name() == Some(sender)); // .find(|e| e.name() == Some(sender));
// let entity = bot.entity_by::<With<Player>>(|name: &Name| name == sender); // let entity = bot.entity_by::<With<Player>>(|name: &Name| name == sender);
let entity = bot.entity_by::<With<Player>, (&GameProfileComponent,)>( let entity = bot.entity_by::<With<Player>, (&GameProfileComponent,)>(
|(profile,): &(&GameProfileComponent,)| { |(profile,): &(&GameProfileComponent,)| profile.name == sender,
println!("entity {profile:?}");
profile.name == sender
},
); );
println!("sender entity: {entity:?}"); println!("sender entity: {entity:?}");
match m.content().as_str() { match m.content().as_str() {

View file

@ -393,7 +393,10 @@ where
if let Some(handler) = &self.handler { if let Some(handler) = &self.handler {
let first_bot_state = first_bot.component::<S>(); let first_bot_state = first_bot.component::<S>();
let first_bot_entity = first_bot.entity; let first_bot_entity = first_bot.entity;
tokio::spawn((handler)(first_bot, first_event, first_bot_state.clone()));
let mut tasks = Vec::new();
tasks.push((handler)(first_bot, first_event, first_bot_state.clone()));
// this makes it not have to keep locking the ecs // this makes it not have to keep locking the ecs
let mut states = HashMap::new(); let mut states = HashMap::new();
@ -402,8 +405,10 @@ where
let state = states let state = states
.entry(bot.entity) .entry(bot.entity)
.or_insert_with(|| bot.component::<S>().clone()); .or_insert_with(|| bot.component::<S>().clone());
tokio::spawn((handler)(bot, event, state.clone())); tasks.push((handler)(bot, event, state.clone()));
} }
tokio::spawn(join_all(tasks));
} }
} }