rvpacker-txt-rs-lib
is a library for rvpacker-txt-rs CLI, that provides the function to extract the text from RPG Maker .rxdata
, .rvdata
, .rvdata2
and .json
files to .txt
format.
It also provides the json
module to convert .rxdata
, .rvdata
and .rvdata2
files to JSON and back.
cargo add rvpacker-txt-rs-lib
This crate provides core structs and functions in core
module, but also exports wrappers around those, like Purger
, Writer
, Reader
.
These structs abstract over the core
module and process files, handling all system calls.
use rvpacker_txt_rs_lib::{Reader, Writer, Purger, Error, FileFlags, EngineType};
fn main() -> Result<(), Error> {
let mut reader = Reader::new();
reader.set_flags(FileFlags::Map | FileFlags::Other);
reader.read("C:/Game/Data", "C:/Game/translation", EngineType::VXAce)?;
let mut writer = Writer::new();
writer.set_flags(FileFlags::Map | FileFlags::Other);
writer.write("C:/Game/Data", "C:/Game/translation", "C:/Game/output", EngineType::VXAce)?;
let mut purger = Purger::new();
purger.set_flags(FileFlags::Map | FileFlags::Other);
purger.purge("C:/Game/Data", "C:/Game/translation", EngineType::VXAce)?;
Ok(())
}
This module provides structs Base
, MapBase
, OtherBase
, SystemBase
, PluginBase
and ScriptBase
.
use rvpacker_txt_rs_lib::{Base, MapBase, Mode, EngineType, ReadMode};
use std::fs::read;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut base = Base::new(Mode::Read, EngineType::VXAce);
base.read_mode = ReadMode::Force;
let mut map_base = MapBase::new(&mut base);
let mapinfos = read("C:/Game/Data/Mapinfos.rvdata2")?;
map_base.initialize_mapinfos(&mapinfos)?;
let map_file_content = read("C:/Game/Data/Map001.rvdata2")?;
map_base.process("Map001.rvdata2", &map_file_content)?;
// To get the translation, you must use `translation` after processing all the maps.
let translation_data = map_base.translation();
Ok(())
}
json
module provides generate
and write
functions to generate JSON representations of older engines' files and write them back respectively.
use rvpacker_txt_rs_lib::{json::{generate, write}, EngineType, Error};
fn main() -> Result<(), Error> {
generate("C:/Game/Data", "C:/Game/json", false)?;
write("C:/Game/json", "C:/Game/json-output", EngineType::VXAce)?;
Ok(())
}
All public enums and structs in this crate are serializable with serde
.
Flat enums that contain only number variants are serialized with #[serde(into = "u8", try_from = "u8")]
attribute, which converts enums to a single u8 integer, representing the variant. The same applies to FileFlags
struct.
Project is licensed under WTFPL.