modified: outdb
modified: src/main.rs modified: src/objects.rs modified: src/xobjects.rs
This commit is contained in:
parent
4cfabd239b
commit
96a1210461
@ -41,13 +41,14 @@ fn main() {
|
||||
item.args = xargs;
|
||||
item.data.number_of_strings = 3;
|
||||
item.data.unique_id = unique_id;
|
||||
item.data.dbid = rand::thread_rng().gen_range(0..10000);
|
||||
item.data.dbid2 = rand::thread_rng().gen_range(0..10000);
|
||||
item.data.dbid = rand::thread_rng().gen_range(10000..100000);
|
||||
item.data.dbid2 = item.data.dbid;
|
||||
tracks.push(item);
|
||||
}
|
||||
|
||||
if let XSomeList::Playlists(playlists) = &mut xdb.find_dataset(2).child {
|
||||
let playlist = playlists.last_mut().unwrap();
|
||||
playlist.data.playlist_item_count = playlist.data.playlist_item_count + 1;
|
||||
let elem = playlist.elems.last().unwrap();
|
||||
let mut pl_item = elem.0.clone();
|
||||
pl_item.track_id = unique_id;
|
||||
@ -63,6 +64,7 @@ fn main() {
|
||||
|
||||
if let XSomeList::Playlists(playlists) = &mut xdb.find_dataset(3).child {
|
||||
let playlist = playlists.last_mut().unwrap();
|
||||
playlist.data.playlist_item_count = playlist.data.playlist_item_count + 1;
|
||||
let elem = playlist.elems.last().unwrap();
|
||||
let mut pl_item = elem.0.clone();
|
||||
pl_item.track_id = unique_id;
|
||||
|
@ -212,7 +212,7 @@ pub struct JumpTable {
|
||||
#[derive(Serialize, Deserialize, PartialEq, Debug)]
|
||||
pub struct Playlist {
|
||||
data_object_child_count: u32,
|
||||
playlist_item_count: u32,
|
||||
pub playlist_item_count: u32,
|
||||
is_master_playlist_flag: u8,
|
||||
unk: [u8; 3],
|
||||
timestamp: u32,
|
||||
|
@ -1,3 +1,5 @@
|
||||
use rand::Rng;
|
||||
|
||||
use crate::objects::{AlbumItem, ChunkHeader, DataSet, Database, JumpTable, LetterJumpEntry, Playlist, PlaylistIndexEntry, PlaylistItem, TrackItem};
|
||||
|
||||
|
||||
@ -74,4 +76,32 @@ impl XDatabase {
|
||||
pub fn find_dataset(&mut self, data_type: u32) -> &mut XDataSet {
|
||||
self.children.iter_mut().find(|d| d.data.data_type == data_type).unwrap()
|
||||
}
|
||||
|
||||
pub fn add_track(&mut self, track: XTrackItem) {
|
||||
self.add_track_to_playlists(2, &track);
|
||||
self.add_track_to_playlists(3, &track);
|
||||
|
||||
if let XSomeList::TrackList(tracks) = &mut self.find_dataset(1).child {
|
||||
tracks.push(track);
|
||||
}
|
||||
}
|
||||
|
||||
fn add_track_to_playlists(&mut self, n: u32, track: &XTrackItem) {
|
||||
if let XSomeList::Playlists(playlists) = &mut self.find_dataset(n).child {
|
||||
let playlist = playlists.last_mut().unwrap();
|
||||
playlist.data.playlist_item_count = playlist.data.playlist_item_count + 1;
|
||||
|
||||
let elem = playlist.elems.last().unwrap();
|
||||
let mut pl_item = elem.0.clone();
|
||||
pl_item.track_id = track.data.unique_id;
|
||||
|
||||
pl_item.group_id = rand::thread_rng().gen_range(10..255);
|
||||
let mut args = elem.1.clone();
|
||||
if let XPlArgument::RawArgument(raw) = args.last_mut().unwrap() {
|
||||
raw[24] = pl_item.group_id as u8;
|
||||
}
|
||||
|
||||
playlist.elems.push((pl_item, args));
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user