diff --git a/src/chardat.rs b/src/chardat.rs index 1bde100..370db02 100644 --- a/src/chardat.rs +++ b/src/chardat.rs @@ -1,9 +1,9 @@ // SPDX-FileCopyrightText: 2023 Joshua Goins // SPDX-License-Identifier: GPL-3.0-or-later -use std::io::Cursor; +use std::io::{BufWriter, Cursor}; -use binrw::BinRead; +use binrw::{BinRead, BinWrite}; use binrw::binrw; use crate::gamedata::MemoryBuffer; @@ -150,4 +150,18 @@ impl CharDat { Some(CharDat::read(&mut cursor).ok()?) } + + // Writes a new dat file + pub fn write_to_buffer(&self) -> Option { + let mut buffer = MemoryBuffer::new(); + + { + let cursor = Cursor::new(&mut buffer); + let mut writer = BufWriter::new(cursor); + + self.write_le(&mut writer).unwrap(); + } + + Some(buffer) + } } \ No newline at end of file