Skip to content

Commit 890543f

Browse files
committed
Remove type_name and id arguments now that we have proper traits for them
1 parent b6e04c4 commit 890543f

22 files changed

+278
-363
lines changed

src/handlers.rs

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,7 @@ use tes3::esp::{Cell, Dialogue, DialogueInfo, FixedString, Reference, TES3Object
55

66
#[allow(unused_variables)]
77
pub trait Handler<'a> {
8-
fn on_record(
9-
&mut self,
10-
context: &Context,
11-
record: &'a TES3Object,
12-
typename: &'static str,
13-
id: &str,
14-
) {
15-
}
8+
fn on_record(&mut self, context: &Context, record: &'a TES3Object) {}
169

1710
fn on_cellref(
1811
&mut self,
@@ -95,15 +88,9 @@ impl Handlers<'_> {
9588
}
9689

9790
impl<'a> Handler<'a> for Handlers<'a> {
98-
fn on_record(
99-
&mut self,
100-
context: &Context,
101-
record: &'a TES3Object,
102-
typename: &'static str,
103-
id: &str,
104-
) {
91+
fn on_record(&mut self, context: &Context, record: &'a TES3Object) {
10592
for handler in &mut self.handlers {
106-
handler.on_record(context, record, typename, id);
93+
handler.on_record(context, record);
10794
}
10895
}
10996

src/validators.rs

Lines changed: 40 additions & 139 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ use crate::{
2929
};
3030
use clap::ArgMatches;
3131
use std::error::Error;
32-
use tes3::esp::{Dialogue, FixedString, TES3Object, TypeInfo};
32+
use tes3::esp::{Dialogue, FixedString, TES3Object};
3333

3434
pub struct Validator<'a> {
3535
handlers: Handlers<'a>,
@@ -49,37 +49,15 @@ impl<'a> Validator<'a> {
4949
let mut current_topic = &dummy;
5050
for record in records {
5151
match record {
52-
TES3Object::Activator(r) => {
53-
self.handlers
54-
.on_record(&self.context, record, r.type_name(), &r.id)
55-
}
56-
TES3Object::Alchemy(r) => {
57-
self.handlers
58-
.on_record(&self.context, record, r.type_name(), &r.id)
59-
}
60-
TES3Object::Apparatus(r) => {
61-
self.handlers
62-
.on_record(&self.context, record, r.type_name(), &r.id)
63-
}
64-
TES3Object::Armor(r) => {
65-
self.handlers
66-
.on_record(&self.context, record, r.type_name(), &r.id)
67-
}
68-
TES3Object::Birthsign(r) => {
69-
self.handlers
70-
.on_record(&self.context, record, r.type_name(), &r.id)
71-
}
72-
TES3Object::Bodypart(r) => {
73-
self.handlers
74-
.on_record(&self.context, record, r.type_name(), &r.id)
75-
}
76-
TES3Object::Book(r) => {
77-
self.handlers
78-
.on_record(&self.context, record, r.type_name(), &r.id)
79-
}
52+
TES3Object::Activator(_) => self.handlers.on_record(&self.context, record),
53+
TES3Object::Alchemy(_) => self.handlers.on_record(&self.context, record),
54+
TES3Object::Apparatus(_) => self.handlers.on_record(&self.context, record),
55+
TES3Object::Armor(_) => self.handlers.on_record(&self.context, record),
56+
TES3Object::Birthsign(_) => self.handlers.on_record(&self.context, record),
57+
TES3Object::Bodypart(_) => self.handlers.on_record(&self.context, record),
58+
TES3Object::Book(_) => self.handlers.on_record(&self.context, record),
8059
TES3Object::Cell(r) => {
81-
self.handlers
82-
.on_record(&self.context, record, r.type_name(), &r.name);
60+
self.handlers.on_record(&self.context, record);
8361
let refs: Vec<_> = r.references.values().collect();
8462
for (i, reference) in refs.iter().enumerate() {
8563
self.handlers.on_cellref(
@@ -92,143 +70,66 @@ impl<'a> Validator<'a> {
9270
);
9371
}
9472
}
95-
TES3Object::Class(r) => {
96-
self.handlers
97-
.on_record(&self.context, record, r.type_name(), &r.id)
98-
}
99-
TES3Object::Clothing(r) => {
100-
self.handlers
101-
.on_record(&self.context, record, r.type_name(), &r.id)
102-
}
73+
TES3Object::Class(_) => self.handlers.on_record(&self.context, record),
74+
TES3Object::Clothing(_) => self.handlers.on_record(&self.context, record),
10375
TES3Object::Container(r) => {
104-
self.handlers
105-
.on_record(&self.context, record, r.type_name(), &r.id);
76+
self.handlers.on_record(&self.context, record);
10677
self.on_inventory(record, &r.inventory);
10778
}
10879
TES3Object::Creature(r) => {
109-
self.handlers
110-
.on_record(&self.context, record, r.type_name(), &r.id);
80+
self.handlers.on_record(&self.context, record);
11181
self.on_inventory(record, &r.inventory);
11282
}
11383
TES3Object::Dialogue(r) => {
114-
self.handlers
115-
.on_record(&self.context, record, r.type_name(), &r.id);
84+
self.handlers.on_record(&self.context, record);
11685
current_topic = r;
11786
}
118-
TES3Object::Door(r) => {
119-
self.handlers
120-
.on_record(&self.context, record, r.type_name(), &r.id)
121-
}
122-
TES3Object::Enchanting(r) => {
123-
self.handlers
124-
.on_record(&self.context, record, r.type_name(), &r.id)
125-
}
126-
TES3Object::Faction(r) => {
127-
self.handlers
128-
.on_record(&self.context, record, r.type_name(), &r.id)
129-
}
130-
TES3Object::GameSetting(r) => {
131-
self.handlers
132-
.on_record(&self.context, record, r.type_name(), &r.id)
133-
}
134-
TES3Object::GlobalVariable(r) => {
135-
self.handlers
136-
.on_record(&self.context, record, r.type_name(), &r.id)
137-
}
87+
TES3Object::Door(_) => self.handlers.on_record(&self.context, record),
88+
TES3Object::Enchanting(_) => self.handlers.on_record(&self.context, record),
89+
TES3Object::Faction(_) => self.handlers.on_record(&self.context, record),
90+
TES3Object::GameSetting(_) => self.handlers.on_record(&self.context, record),
91+
TES3Object::GlobalVariable(_) => self.handlers.on_record(&self.context, record),
13892
TES3Object::Header(_) => {}
13993
TES3Object::DialogueInfo(r) => {
140-
self.handlers
141-
.on_record(&self.context, record, r.type_name(), &r.id);
94+
self.handlers.on_record(&self.context, record);
14295
self.handlers.on_info(&self.context, r, current_topic);
14396
self.on_script(record, &r.script_text, current_topic);
14497
}
145-
TES3Object::Ingredient(r) => {
146-
self.handlers
147-
.on_record(&self.context, record, r.type_name(), &r.id)
148-
}
98+
TES3Object::Ingredient(_) => self.handlers.on_record(&self.context, record),
14999
TES3Object::Landscape(_) => {}
150100
TES3Object::LandscapeTexture(_) => {}
151101
TES3Object::LeveledCreature(r) => {
152-
self.handlers
153-
.on_record(&self.context, record, r.type_name(), &r.id);
102+
self.handlers.on_record(&self.context, record);
154103
self.on_leveled(record, &r.creatures);
155104
}
156105
TES3Object::LeveledItem(r) => {
157-
self.handlers
158-
.on_record(&self.context, record, r.type_name(), &r.id);
106+
self.handlers.on_record(&self.context, record);
159107
self.on_leveled(record, &r.items);
160108
}
161-
TES3Object::Light(r) => {
162-
self.handlers
163-
.on_record(&self.context, record, r.type_name(), &r.id)
164-
}
165-
TES3Object::Lockpick(r) => {
166-
self.handlers
167-
.on_record(&self.context, record, r.type_name(), &r.id)
168-
}
169-
TES3Object::MagicEffect(r) => {
170-
self.handlers
171-
.on_record(&self.context, record, r.type_name(), "")
172-
}
173-
TES3Object::MiscItem(r) => {
174-
self.handlers
175-
.on_record(&self.context, record, r.type_name(), &r.id)
176-
}
109+
TES3Object::Light(_) => self.handlers.on_record(&self.context, record),
110+
TES3Object::Lockpick(_) => self.handlers.on_record(&self.context, record),
111+
TES3Object::MagicEffect(_) => self.handlers.on_record(&self.context, record),
112+
TES3Object::MiscItem(_) => self.handlers.on_record(&self.context, record),
177113
TES3Object::Npc(r) => {
178-
self.handlers
179-
.on_record(&self.context, record, r.type_name(), &r.id);
114+
self.handlers.on_record(&self.context, record);
180115
self.on_inventory(record, &r.inventory);
181116
}
182-
TES3Object::PathGrid(r) => {
183-
self.handlers
184-
.on_record(&self.context, record, r.type_name(), "")
185-
}
186-
TES3Object::Probe(r) => {
187-
self.handlers
188-
.on_record(&self.context, record, r.type_name(), &r.id)
189-
}
190-
TES3Object::Race(r) => {
191-
self.handlers
192-
.on_record(&self.context, record, r.type_name(), &r.id)
193-
}
194-
TES3Object::Region(r) => {
195-
self.handlers
196-
.on_record(&self.context, record, r.type_name(), &r.id)
197-
}
198-
TES3Object::RepairItem(r) => {
199-
self.handlers
200-
.on_record(&self.context, record, r.type_name(), &r.id)
201-
}
117+
TES3Object::PathGrid(_) => self.handlers.on_record(&self.context, record),
118+
TES3Object::Probe(_) => self.handlers.on_record(&self.context, record),
119+
TES3Object::Race(_) => self.handlers.on_record(&self.context, record),
120+
TES3Object::Region(_) => self.handlers.on_record(&self.context, record),
121+
TES3Object::RepairItem(_) => self.handlers.on_record(&self.context, record),
202122
TES3Object::Script(r) => {
203-
self.handlers
204-
.on_record(&self.context, record, r.type_name(), &r.id);
123+
self.handlers.on_record(&self.context, record);
205124
self.on_script(record, &r.text, &dummy);
206125
}
207126
TES3Object::Skill(_) => {}
208-
TES3Object::Sound(r) => {
209-
self.handlers
210-
.on_record(&self.context, record, r.type_name(), &r.id)
211-
}
212-
TES3Object::SoundGen(r) => {
213-
self.handlers
214-
.on_record(&self.context, record, r.type_name(), &r.id)
215-
}
216-
TES3Object::Spell(r) => {
217-
self.handlers
218-
.on_record(&self.context, record, r.type_name(), &r.id)
219-
}
220-
TES3Object::StartScript(r) => {
221-
self.handlers
222-
.on_record(&self.context, record, r.type_name(), &r.id)
223-
}
224-
TES3Object::Static(r) => {
225-
self.handlers
226-
.on_record(&self.context, record, r.type_name(), &r.id)
227-
}
228-
TES3Object::Weapon(r) => {
229-
self.handlers
230-
.on_record(&self.context, record, r.type_name(), &r.id)
231-
}
127+
TES3Object::Sound(_) => self.handlers.on_record(&self.context, record),
128+
TES3Object::SoundGen(_) => self.handlers.on_record(&self.context, record),
129+
TES3Object::Spell(_) => self.handlers.on_record(&self.context, record),
130+
TES3Object::StartScript(_) => self.handlers.on_record(&self.context, record),
131+
TES3Object::Static(_) => self.handlers.on_record(&self.context, record),
132+
TES3Object::Weapon(_) => self.handlers.on_record(&self.context, record),
232133
}
233134
}
234135
self.handlers.on_end(&self.context);

src/validators/autocalc.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use tes3::esp::{SpellFlags, TES3Object};
55
pub struct AutoCalcValidator {}
66

77
impl Handler<'_> for AutoCalcValidator {
8-
fn on_record(&mut self, _: &Context, record: &TES3Object, _: &str, _: &str) {
8+
fn on_record(&mut self, _: &Context, record: &TES3Object) {
99
if let TES3Object::Spell(spell) = record {
1010
if spell.data.flags.contains(SpellFlags::AUTO_CALCULATE) {
1111
println!("Spell {} is auto calculated", spell.id);

src/validators/books.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use tes3::esp::{Book, TES3Object};
66
pub struct BookValidator {}
77

88
impl Handler<'_> for BookValidator {
9-
fn on_record(&mut self, _: &Context, record: &TES3Object, _: &str, _: &str) {
9+
fn on_record(&mut self, _: &Context, record: &TES3Object) {
1010
if let TES3Object::Book(book) = record {
1111
if is_marker(book) {
1212
return;

src/validators/cells.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ fn get_water_height(cell: &Cell) -> Option<f32> {
4646
}
4747

4848
impl Handler<'_> for CellValidator {
49-
fn on_record(&mut self, context: &Context, record: &TES3Object, _: &str, _: &str) {
49+
fn on_record(&mut self, context: &Context, record: &TES3Object) {
5050
match record {
5151
TES3Object::Cell(cell) => {
5252
if cell.is_interior()

src/validators/classes.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ pub struct ClassValidator {
1212
}
1313

1414
impl Handler<'_> for ClassValidator {
15-
fn on_record(&mut self, context: &Context, record: &TES3Object, _: &str, _: &str) {
15+
fn on_record(&mut self, context: &Context, record: &TES3Object) {
1616
if let TES3Object::Npc(npc) = record {
1717
if !npc.class.is_empty() {
1818
if let Some(replacement) = self.get_replacement(&npc.class, context) {

src/validators/corpse.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,17 @@ use crate::{
33
handlers::Handler,
44
util::{is_dead, is_persistent},
55
};
6-
use tes3::esp::TES3Object;
6+
use tes3::esp::{EditorId, TES3Object, TypeInfo};
77

88
pub struct CorpseValidator {}
99

1010
impl Handler<'_> for CorpseValidator {
11-
fn on_record(&mut self, _: &Context, record: &TES3Object, typename: &str, id: &str) {
11+
fn on_record(&mut self, _: &Context, record: &TES3Object) {
1212
if is_dead(record) && !is_persistent(record) {
1313
println!(
1414
"{} {} is dead but does not have corpse persists checked",
15-
typename, id
15+
record.type_name(),
16+
record.editor_id()
1617
);
1718
}
1819
}

src/validators/doors.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use tes3::esp::{Cell, EditorId, Reference, TES3Object};
55
pub struct DoorValidator {}
66

77
impl Handler<'_> for DoorValidator {
8-
fn on_record(&mut self, _: &Context, record: &TES3Object, _: &str, _: &str) {
8+
fn on_record(&mut self, _: &Context, record: &TES3Object) {
99
if let TES3Object::Door(door) = record {
1010
if door.mesh.eq_ignore_ascii_case("i\\in_lava_blacksquare.nif") {
1111
println!("Door {} uses mesh {}", door.id, door.mesh);

0 commit comments

Comments
 (0)