impl cmp<str> for FString, so comparing to other string types will be as easy as now it is. Add get_type_idx for EntityList

This commit is contained in:
mykola2312 2023-09-05 00:23:59 +03:00
parent 88003c2997
commit 676b7b598f
3 changed files with 15 additions and 7 deletions

View file

@ -44,6 +44,10 @@ impl EntityList {
self.types.len() - 1
}
pub fn get_type_idx(&self, type_name: &str) -> Option<usize> {
self.types.iter().position(|f| f.eq(type_name))
}
pub fn add_or_get_type(&mut self, type_name: FString) -> usize {
match self.types.iter().position(|f| f.eq(&type_name)) {
Some(idx) => idx,

View file

@ -89,6 +89,12 @@ impl PartialEq for FString {
}
}
impl std::cmp::PartialEq<str> for FString {
fn eq(&self, other: &str) -> bool {
self.str == other
}
}
impl Hash for FString {
fn hash<H: Hasher>(&self, state: &mut H) {
self.str.hash(state);

View file

@ -33,13 +33,11 @@ impl World {
const WORLD_HDR_LEN: usize = 0x13;
pub fn test(&mut self) -> Result<()> {
/*self.entlist.convert(EntityEncoding::File);
self.entlist
.encode(EntityEncoding::File)?
.dump(Path::new("D:\\entlist.ent"))?;*/
for (id, ent) in &self.entlist {
println!("{} {}", id, ent.type_idx);
}
let actor_type = self.entlist.get_type_idx("Actor").unwrap();
println!("Actor type {}", actor_type);
//for (id, ent) in &self.entlist {
// println!("{} {}", id, ent.type_idx);
//}
Ok(())
}