Fix (clippy) warnings

This commit is contained in:
Lol3rrr
2024-09-22 22:25:15 +02:00
parent 041aa14fa9
commit 8b41ad5108
12 changed files with 122 additions and 141 deletions

View File

@@ -89,7 +89,7 @@ pub fn find_decoder(field: &super::sendtables::ConstructorField, qf_map: &mut Qf
}
match BASETYPE_DECODERS.get(field.field_type.base_type.as_str()) {
Some(d) => d.clone(),
Some(d) => *d,
None => match field.field_type.base_type.as_str() {
"float32" => float_decoder(field, qf_map),
"Vector" => find_vector_type(3, field, qf_map),
@@ -138,7 +138,7 @@ fn float_decoder(field: &super::sendtables::ConstructorField, qf_map: &mut QfMap
"m_flSimulationTime" => Decoder::FloatSimulationTimeDecoder,
_ => {
if field.bitcount <= 0 || field.bitcount >= 32 {
return Decoder::NoscaleDecoder;
Decoder::NoscaleDecoder
} else {
let qf = QuantalizedFloat::new(
field.bitcount as u32,
@@ -213,7 +213,7 @@ impl Decoder {
impl<'b> crate::bitreader::Bitreader<'b> {
pub fn read_bit_coord_pres(&mut self) -> Result<f32, super::FirstPassError> {
return Ok(self.read_nbits(20)? as f32 * 360.0 / (1 << 20) as f32 - 180.0);
Ok(self.read_nbits(20)? as f32 * 360.0 / (1 << 20) as f32 - 180.0)
}
pub fn decode_qfloat(
@@ -232,7 +232,7 @@ impl<'b> crate::bitreader::Bitreader<'b> {
if ammo > 0 {
return Ok(ammo - 1);
}
return Ok(ammo);
Ok(ammo)
}
pub fn decode_uint64(&mut self) -> Result<u64, super::FirstPassError> {
@@ -306,7 +306,7 @@ impl<'b> crate::bitreader::Bitreader<'b> {
Ok(v)
}
pub fn read_angle(&mut self, n: usize) -> Result<f32, super::FirstPassError> {
return Ok(self.decode_noscale()? / ((1 << n) as f32));
Ok(self.decode_noscale()? / ((1 << n) as f32))
}
pub fn decode_normal(&mut self) -> Result<f32, super::FirstPassError> {
@@ -331,7 +331,7 @@ impl<'b> crate::bitreader::Bitreader<'b> {
let neg_z = self.read_boolean()?;
let prod_sum = v[0] * v[0] + v[1] * v[1];
if prod_sum < 1.0 {
v[2] = (1.0 - prod_sum).sqrt() as f32;
v[2] = (1.0 - prod_sum).sqrt();
} else {
v[2] = 0.0;
}

View File

@@ -182,25 +182,19 @@ impl QuantalizedFloat {
steps = 1 << qf.bit_count;
}
qf.offset = range_2 as f32 / steps as f32;
qf.high = qf.low + ((range_2 as f32 - qf.offset) as f32);
qf.high = qf.low + (range_2 as f32 - qf.offset);
}
qf.assign_multipliers(steps);
if (qf.flags & QFF_ROUNDDOWN) != 0 {
if qf.quantize(qf.low) == qf.low {
qf.flags &= !QFF_ROUNDDOWN;
}
if (qf.flags & QFF_ROUNDDOWN) != 0 && qf.quantize(qf.low) == qf.low {
qf.flags &= !QFF_ROUNDDOWN;
}
if (qf.flags & QFF_ROUNDUP) != 0 {
if qf.quantize(qf.high) == qf.high {
qf.flags &= !QFF_ROUNDUP
}
if (qf.flags & QFF_ROUNDUP) != 0 && qf.quantize(qf.high) == qf.high {
qf.flags &= !QFF_ROUNDUP
}
if (qf.flags & QFF_ENCODE_ZERO) != 0 {
if qf.quantize(0.0) == 0.0 {
qf.flags &= !QFF_ENCODE_ZERO;
}
if (qf.flags & QFF_ENCODE_ZERO) != 0 && qf.quantize(0.0) == 0.0 {
qf.flags &= !QFF_ENCODE_ZERO;
}
qf

View File

@@ -7,6 +7,12 @@ pub struct FieldPath {
pub last: usize,
}
impl Default for Paths {
fn default() -> Self {
Self::new()
}
}
impl Paths {
pub fn new() -> Self {
Self(Vec::new())

View File

@@ -1,3 +1,5 @@
#![allow(dead_code)]
pub const PLAYER_ENTITY_HANDLE_MISSING: i32 = 2047;
pub const SPECTATOR_TEAM_NUM: u32 = 1;
pub const BUTTONS_BASEID: u32 = 100000;
@@ -136,11 +138,8 @@ impl PropController {
path.clone(),
);
}
Field::Array(ser) => match &mut ser.field_enum.as_mut() {
Field::Value(v) => {
self.handle_prop(&(ser_name.clone() + "." + &v.name), v, path);
}
_ => {}
Field::Array(ser) => if let Field::Value(v) = &mut ser.field_enum.as_mut() {
self.handle_prop(&(ser_name.clone() + "." + &v.name), v, path);
},
Field::Vector(_x) => {
let vec_path = path.clone();
@@ -150,17 +149,14 @@ impl PropController {
for (inner_idx, f) in
&mut s.serializer.fields.iter_mut().enumerate()
{
match f {
Field::Value(v) => {
let mut myp = vec_path.clone();
myp.push(inner_idx as i32);
self.handle_prop(
&(ser_name.clone() + "." + &v.name),
v,
myp,
);
}
_ => {}
if let Field::Value(v) = f {
let mut myp = vec_path.clone();
myp.push(inner_idx as i32);
self.handle_prop(
&(ser_name.clone() + "." + &v.name),
v,
myp,
);
}
}
self.traverse_fields(
@@ -219,53 +215,50 @@ impl PropController {
self.path_to_name.insert(a, prop_name.to_string());
let prop_already_exists = self.name_to_id.contains_key(&(prop_name).to_string());
self.set_id(&prop_name, f, is_grenade_or_weapon);
self.set_id(&prop_name, f);
if !prop_already_exists {
self.insert_propinfo(&prop_name, f);
}
f.should_parse = true;
if full_name == "CCSPlayerPawn.CCSPlayer_WeaponServices.m_hMyWeapons" {
f.prop_id = MY_WEAPONS_OFFSET as u32;
f.prop_id = MY_WEAPONS_OFFSET;
}
if full_name
== "CCSPlayerPawn.CCSPlayer_ActionTrackingServices.WeaponPurchaseCount_t.m_nCount"
{
f.prop_id = ITEM_PURCHASE_COUNT as u32;
f.prop_id = ITEM_PURCHASE_COUNT;
}
if full_name == "CCSPlayerPawn.CCSPlayer_BuyServices.SellbackPurchaseEntry_t.m_unDefIdx" {
f.prop_id = ITEM_PURCHASE_DEF_IDX as u32;
f.prop_id = ITEM_PURCHASE_DEF_IDX;
}
if full_name == "CCSPlayerPawn.CCSPlayer_BuyServices.SellbackPurchaseEntry_t.m_nCost" {
f.prop_id = ITEM_PURCHASE_COST as u32;
f.prop_id = ITEM_PURCHASE_COST;
}
if full_name == "CCSPlayerPawn.CCSPlayer_ActionTrackingServices.WeaponPurchaseCount_t.m_nItemDefIndex" {
f.prop_id = ITEM_PURCHASE_NEW_DEF_IDX as u32;
f.prop_id = ITEM_PURCHASE_NEW_DEF_IDX;
}
if full_name == "CCSPlayerPawn.CCSPlayer_BuyServices.SellbackPurchaseEntry_t.m_hItem" {
f.prop_id = ITEM_PURCHASE_HANDLE as u32;
f.prop_id = ITEM_PURCHASE_HANDLE;
}
if prop_name.contains("CEconItemAttribute.m_iRawValue32") {
f.prop_id = WEAPON_SKIN_ID as u32;
f.prop_id = WEAPON_SKIN_ID;
}
self.id += 1;
}
fn set_id(&mut self, weap_prop: &str, f: &mut ValueField, is_grenade_or_weapon: bool) {
fn set_id(&mut self, weap_prop: &str, f: &mut ValueField) {
match self.name_to_id.get(weap_prop) {
// If we already have an id for prop of same name then use that id.
// Mainly for weapon props. For example CAK47.m_iClip1 and CWeaponSCAR20.m_iClip1
// are the "same" prop. (they have same path and we want to refer to it with one id not ~20)
Some(id) => {
f.prop_id = *id as u32;
f.prop_id = *id;
self.id_to_name.insert(*id, weap_prop.to_string());
self.set_special_ids(&weap_prop, is_grenade_or_weapon, *id);
return;
}
None => {
self.name_to_id.insert(weap_prop.to_string(), self.id);
self.id_to_name.insert(self.id, weap_prop.to_string());
f.prop_id = self.id as u32;
self.set_special_ids(&weap_prop, is_grenade_or_weapon, self.id);
f.prop_id = self.id;
}
}
}
@@ -274,24 +267,11 @@ impl PropController {
self.prop_infos.insert(
f.prop_id,
PropInfo {
id: f.prop_id as u32,
id: f.prop_id,
prop_name: prop_name.into(),
},
);
}
pub fn set_special_ids(&mut self, weap_prop: &str, is_grenade_or_weapon: bool, id: u32) {
// TODO
if is_grenade_or_weapon {
match weap_prop {
_ => {}
};
} else {
match weap_prop {
_ => {}
};
}
}
}
impl SpecialIDs {

View File

@@ -1,8 +1,5 @@
use super::decoder;
#[derive(Debug)]
pub enum ParseSendTables {}
#[derive(Debug, Clone, PartialEq)]
pub struct Serializer {
pub name: String,
@@ -138,7 +135,7 @@ fn generate_field_data(
) -> Result<ConstructorField, super::FirstPassError> {
let name = msg.symbols.get(field.var_type_sym() as usize).unwrap();
let ft = find_field_type(&name, field_type_map)?;
let ft = find_field_type(name, field_type_map)?;
let mut field = field_from_msg(field, msg, ft.clone())?;
field.category = find_category(&field);
@@ -166,7 +163,7 @@ fn generate_field_data(
fn generate_serializer(
serializer: &crate::csgo_proto::ProtoFlattenedSerializerT,
field_data: &mut Vec<Option<ConstructorField>>,
field_data: &mut [Option<ConstructorField>],
msg: &crate::csgo_proto::CsvcMsgFlattenedSerializer,
serializers: &mut std::collections::HashMap<String, Serializer>,
) -> Result<Serializer, super::FirstPassError> {
@@ -188,7 +185,7 @@ fn generate_serializer(
};
if f.field_enum_type.is_none() {
f.field_enum_type = Some(create_field(&symbol, f, serializers)?);
f.field_enum_type = Some(create_field(f, serializers)?);
}
if let Some(Some(f)) = &field_data.get(fi) {
if let Some(field) = &f.field_enum_type {
@@ -221,6 +218,7 @@ pub enum FieldCategory {
}
#[derive(Debug, Clone)]
#[allow(dead_code)]
pub struct ConstructorField {
pub var_name: String,
pub var_type: String,
@@ -245,7 +243,7 @@ static RE: std::sync::LazyLock<regex::Regex> = std::sync::LazyLock::new(|| {
regex::Regex::new(r"([^<\[\*]+)(<\s(.*)\s>)?(\*)?(\[(.*)\])?").unwrap()
});
const POINTER_TYPES: &'static [&'static str] = &[
const POINTER_TYPES: &[&str] = &[
"CBodyComponent",
"CLightComponent",
"CPhysicsComponent",
@@ -417,7 +415,7 @@ impl FieldType {
if let Some(gt) = self.generic_type.as_ref() {
s += "< ";
s += &FieldType::to_string(&gt, true);
s += &FieldType::to_string(gt, true);
s += "< ";
}
if self.pointer {
@@ -450,7 +448,6 @@ fn for_string(
}
fn create_field(
symbol: &String,
fd: &mut ConstructorField,
serializers: &mut std::collections::HashMap<String, Serializer>,
) -> Result<Field, super::FirstPassError> {
@@ -578,7 +575,8 @@ impl Field {
fi.prop_id = ITEM_PURCHASE_NEW_DEF_IDX + path.path[2] as u32;
}
}
return Some(fi);
Some(fi)
}
pub fn get_decoder(&self) -> Result<decoder::Decoder, super::FirstPassError> {