mirror of
https://codeberg.org/demostf/edit.git
synced 2026-10-01 23:54:04 +02:00
separate option for invalid deletes
This commit is contained in:
parent
e95a9e4a2c
commit
fabf773f72
8 changed files with 177 additions and 116 deletions
|
|
@ -1,10 +1,9 @@
|
|||
use crate::mutate::MessageMutator;
|
||||
use log::{info, warn};
|
||||
use crate::mutate::{MessageMutator, MutatorList};
|
||||
use log::warn;
|
||||
use std::cell::RefCell;
|
||||
use std::collections::{BTreeMap, BTreeSet};
|
||||
use tf_demo_parser::demo::message::packetentities::{EntityId, PacketEntity, UpdateType};
|
||||
use std::collections::BTreeSet;
|
||||
use tf_demo_parser::demo::message::packetentities::{EntityId, UpdateType};
|
||||
use tf_demo_parser::demo::message::Message;
|
||||
use tf_demo_parser::demo::packet::datatable::{ClassId, ServerClass};
|
||||
use tf_demo_parser::ParserState;
|
||||
|
||||
#[derive(Default)]
|
||||
|
|
@ -34,14 +33,16 @@ impl MessageMutator for RemoveInvalidPreserveEntity {
|
|||
}
|
||||
}
|
||||
UpdateType::Delete => {
|
||||
self.known_entities.borrow_mut().remove(&entity.entity_index);
|
||||
},
|
||||
self.known_entities
|
||||
.borrow_mut()
|
||||
.remove(&entity.entity_index);
|
||||
}
|
||||
_ => {}
|
||||
};
|
||||
}
|
||||
ent_message.removed_entities.retain(|id| {
|
||||
if self.known_entities.borrow().contains(&id) {
|
||||
// just not deleting makes the demo play, but with some ERROR entities
|
||||
// just not deleting makes the demo play but seems like it could cause further issues
|
||||
// having a Delete or Leave makes it crash further in the demo
|
||||
|
||||
// warn!("inserting delete for {}", id);
|
||||
|
|
@ -63,9 +64,15 @@ impl MessageMutator for RemoveInvalidPreserveEntity {
|
|||
true
|
||||
}
|
||||
});
|
||||
ent_message.entities.sort_by(|a, b| a.entity_index.cmp(&b.entity_index));
|
||||
ent_message
|
||||
.entities
|
||||
.sort_by(|a, b| a.entity_index.cmp(&b.entity_index));
|
||||
ent_message.removed_entities.extend(deferred_deletes);
|
||||
ent_message.removed_entities.sort();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn removed_invalid_deletes(mutators: &mut MutatorList) {
|
||||
mutators.push_message_mutator(RemoveInvalidPreserveEntity::default())
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue