Skip to content

Commit f803ccc

Browse files
committed
events: Rise of Iron support
1 parent 7abb4b3 commit f803ccc

File tree

2 files changed

+70
-35
lines changed

2 files changed

+70
-35
lines changed

src/gui/audio_events.rs

Lines changed: 69 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use binrw::{BinReaderExt, VecArgs};
44
use eframe::egui::{self, Color32, RichText};
55
use egui_extras::{Column, TableBuilder};
66
use rayon::iter::{IntoParallelRefIterator, ParallelIterator};
7-
use tiger_pkg::{GameVersion, TagHash, package_manager};
7+
use tiger_pkg::{DestinyVersion, GameVersion, TagHash, package_manager};
88

99
use crate::gui::{
1010
View, ViewAction, audio_list::wwise_event_type, common::ResponseExt, get_string_for_hash,
@@ -34,44 +34,78 @@ impl AudioEventView {
3434
.map(|(t, _)| {
3535
let data = package_manager().read_tag(*t).expect("Failed to read tag");
3636
let mut data = Cursor::new(data);
37-
if package_manager().version
38-
>= GameVersion::Destiny(tiger_pkg::DestinyVersion::Destiny2BeyondLight)
39-
{
40-
data.set_position(0x18);
41-
let bank_tag: TagHash = data.read_le().unwrap();
42-
let bank_hash = package_manager().get_entry(bank_tag).unwrap().reference;
43-
let name = get_string_for_hash(bank_hash);
4437

45-
data.set_position(0x20);
46-
let event_count: u64 = data.read_le().unwrap();
47-
data.set_position(0x50);
48-
let streams: Vec<TagHash> = data
49-
.read_le_args(VecArgs::builder().count(event_count as usize).finalize())
50-
.unwrap();
38+
match package_manager().version {
39+
v if v >= GameVersion::Destiny(DestinyVersion::Destiny2BeyondLight) => {
40+
data.set_position(0x18);
41+
let bank_tag: TagHash = data.read_le().unwrap();
42+
let bank_hash =
43+
package_manager().get_entry(bank_tag).unwrap().reference;
44+
let name = get_string_for_hash(bank_hash);
45+
46+
data.set_position(0x20);
47+
let event_count: u64 = data.read_le().unwrap();
48+
data.set_position(0x50);
49+
let streams: Vec<TagHash> = data
50+
.read_le_args(
51+
VecArgs::builder().count(event_count as usize).finalize(),
52+
)
53+
.unwrap();
54+
55+
AudioEvent {
56+
tag: *t,
57+
bank_hash,
58+
name,
59+
streams,
60+
}
61+
}
62+
GameVersion::Destiny(DestinyVersion::Destiny2Shadowkeep) => {
63+
data.set_position(0x14);
64+
let bank_tag: TagHash = data.read_le().unwrap();
65+
let bank_hash =
66+
package_manager().get_entry(bank_tag).unwrap().reference;
67+
let name = get_string_for_hash(bank_hash);
68+
data.set_position(0x18);
69+
let event_count: u64 = data.read_le().unwrap();
70+
data.set_position(0x50);
71+
let streams: Vec<TagHash> = data
72+
.read_le_args(
73+
VecArgs::builder().count(event_count as usize).finalize(),
74+
)
75+
.unwrap();
5176

52-
AudioEvent {
53-
tag: *t,
54-
bank_hash,
55-
name,
56-
streams,
77+
AudioEvent {
78+
tag: *t,
79+
bank_hash,
80+
name,
81+
streams,
82+
}
5783
}
58-
} else {
59-
data.set_position(0x14);
60-
let bank_tag: TagHash = data.read_le().unwrap();
61-
let bank_hash = package_manager().get_entry(bank_tag).unwrap().reference;
62-
let name = get_string_for_hash(bank_hash);
63-
data.set_position(0x18);
64-
let event_count: u64 = data.read_le().unwrap();
65-
data.set_position(0x50);
66-
let streams: Vec<TagHash> = data
67-
.read_le_args(VecArgs::builder().count(event_count as usize).finalize())
68-
.unwrap();
84+
GameVersion::Destiny(DestinyVersion::DestinyRiseOfIron) => {
85+
data.set_position(0x34);
86+
let bank_tag: TagHash = data.read_le().unwrap();
87+
let bank_hash =
88+
package_manager().get_entry(bank_tag).unwrap().reference;
89+
let name = get_string_for_hash(bank_hash);
90+
91+
data.set_position(0x38);
92+
let event_count: u64 = data.read_le().unwrap();
93+
data.set_position(0x70);
94+
let streams: Vec<TagHash> = data
95+
.read_le_args(
96+
VecArgs::builder().count(event_count as usize).finalize(),
97+
)
98+
.unwrap();
6999

70-
AudioEvent {
71-
tag: *t,
72-
bank_hash,
73-
name,
74-
streams,
100+
AudioEvent {
101+
tag: *t,
102+
bank_hash,
103+
name,
104+
streams,
105+
}
106+
}
107+
_ => {
108+
panic!("Unsupported game version for Wwise Event parsing");
75109
}
76110
}
77111
})

src/gui/audio_list.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ pub fn wwise_event_type() -> Option<u32> {
8686
| DestinyVersion::Destiny2Lightfall
8787
| DestinyVersion::Destiny2TheFinalShape
8888
| DestinyVersion::Destiny2TheEdgeOfFate => Some(0x80809738),
89+
DestinyVersion::DestinyRiseOfIron => Some(0x8080080A),
8990
_ => None,
9091
},
9192
_ => None,

0 commit comments

Comments
 (0)