@@ -4,7 +4,7 @@ use binrw::{BinReaderExt, VecArgs};
44use eframe:: egui:: { self , Color32 , RichText } ;
55use egui_extras:: { Column , TableBuilder } ;
66use rayon:: iter:: { IntoParallelRefIterator , ParallelIterator } ;
7- use tiger_pkg:: { GameVersion , TagHash , package_manager} ;
7+ use tiger_pkg:: { DestinyVersion , GameVersion , TagHash , package_manager} ;
88
99use 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 } )
0 commit comments