1
Fork 0
mirror of https://github.com/redstrate/Physis.git synced 2025-04-24 13:37:44 +00:00

Switch a lot more parsers from binread -> binrw

This doesn't necessarily mean that these formats support writing (yet)
but just to solve the initial compilation errors.
This commit is contained in:
Joshua Goins 2022-10-13 17:11:03 -04:00
parent c3c3df7c68
commit 177523831b
6 changed files with 61 additions and 58 deletions

View file

@ -1,13 +1,13 @@
use crate::common::Language; use crate::common::Language;
use crate::exh::{ColumnDataType, ExcelColumnDefinition, ExcelDataPagination, EXH}; use crate::exh::{ColumnDataType, ExcelColumnDefinition, ExcelDataPagination, EXH};
use crate::gamedata::MemoryBuffer; use crate::gamedata::MemoryBuffer;
use binrw::BinRead; use binrw::binrw;
use binrw::{binread, Endian, ReadOptions}; use binrw::{BinRead, Endian, ReadOptions};
use std::io::{Cursor, Seek, SeekFrom}; use std::io::{Cursor, Seek, SeekFrom};
#[binread] #[binrw]
#[br(magic = b"EXDF")] #[brw(magic = b"EXDF")]
#[br(big)] #[brw(big)]
#[allow(dead_code)] #[allow(dead_code)]
struct EXDHeader { struct EXDHeader {
version: u16, version: u16,
@ -17,23 +17,23 @@ struct EXDHeader {
index_size: u32, index_size: u32,
} }
#[binread] #[binrw]
#[br(big)] #[brw(big)]
struct ExcelDataOffset { struct ExcelDataOffset {
row_id: u32, row_id: u32,
pub offset: u32, pub offset: u32,
} }
#[binread] #[binrw]
#[br(big)] #[brw(big)]
#[allow(dead_code)] #[allow(dead_code)]
struct ExcelDataRowHeader { struct ExcelDataRowHeader {
data_size: u32, data_size: u32,
row_count: u16, row_count: u16,
} }
#[binread] #[binrw]
#[br(big)] #[brw(big)]
#[allow(dead_code)] #[allow(dead_code)]
pub struct EXD { pub struct EXD {
header: EXDHeader, header: EXDHeader,
@ -41,7 +41,7 @@ pub struct EXD {
#[br(count = header.index_size / core::mem::size_of::<ExcelDataOffset>() as u32)] #[br(count = header.index_size / core::mem::size_of::<ExcelDataOffset>() as u32)]
data_offsets: Vec<ExcelDataOffset>, data_offsets: Vec<ExcelDataOffset>,
#[br(ignore)] #[brw(ignore)]
pub rows: Vec<ExcelRow>, pub rows: Vec<ExcelRow>,
} }

View file

@ -7,7 +7,7 @@ use std::io::Cursor;
#[binrw] #[binrw]
#[brw(magic = b"FileInfo")] #[brw(magic = b"FileInfo")]
#[derive(Debug)] #[derive(Debug)]
#[br(little)] #[brw(little)]
pub struct FileInfo { pub struct FileInfo {
#[brw(pad_before = 16)] #[brw(pad_before = 16)]
#[br(ignore)] #[br(ignore)]

View file

@ -1,11 +1,11 @@
use crate::gamedata::MemoryBuffer; use crate::gamedata::MemoryBuffer;
use binrw::binread; use binrw::binrw;
use binrw::BinRead; use binrw::BinRead;
use std::io::{Cursor, Seek, SeekFrom}; use std::io::{Cursor, Seek, SeekFrom};
#[binread] #[binrw]
#[allow(dead_code)] #[allow(dead_code)]
#[br(little)] #[brw(little)]
pub struct ChatLogHeader { pub struct ChatLogHeader {
content_size: u32, content_size: u32,
file_size: u32, file_size: u32,
@ -14,8 +14,8 @@ pub struct ChatLogHeader {
offset_entries: Vec<u32>, offset_entries: Vec<u32>,
} }
#[binread] #[binrw]
#[br(repr = u8)] #[brw(repr = u8)]
#[derive(Debug)] #[derive(Debug)]
enum EventFilter { enum EventFilter {
SystemMessages = 3, SystemMessages = 3,
@ -28,9 +28,9 @@ enum EventFilter {
EnemyBattle = 170, EnemyBattle = 170,
} }
#[binread] #[binrw]
#[derive(Debug)] #[derive(Debug)]
#[br(repr = u8)] #[brw(repr = u8)]
enum EventChannel { enum EventChannel {
System = 0, System = 0,
ServerAnnouncement = 3, ServerAnnouncement = 3,
@ -44,19 +44,20 @@ enum EventChannel {
Unknown6 = 170, Unknown6 = 170,
} }
#[binread] #[binrw]
#[derive(Debug)] #[derive(Debug)]
#[allow(dead_code)] #[allow(dead_code)]
#[br(little)] #[brw(little)]
pub struct ChatLogEntry { pub struct ChatLogEntry {
timestamp: u32, timestamp: u32,
filter: EventFilter, filter: EventFilter,
channel: EventChannel, channel: EventChannel,
#[br(temp)] #[br(temp)]
#[bw(calc = 1)]
garbage: u32, garbage: u32,
#[br(ignore)] #[brw(ignore)]
message: String, message: String,
} }

View file

@ -33,8 +33,8 @@ pub struct ModelFileHeader {
pub has_edge_geometry: bool, pub has_edge_geometry: bool,
} }
#[binread] #[binrw]
#[br(repr = u8)] #[brw(repr = u8)]
#[derive(Debug)] #[derive(Debug)]
enum ModelFlags1 { enum ModelFlags1 {
DustOcclusionEnabled = 0x80, DustOcclusionEnabled = 0x80,
@ -47,8 +47,8 @@ enum ModelFlags1 {
ShadowDisabled = 0x01, ShadowDisabled = 0x01,
} }
#[binread] #[binrw]
#[br(repr = u8)] #[brw(repr = u8)]
#[derive(Debug)] #[derive(Debug)]
enum ModelFlags2 { enum ModelFlags2 {
None = 0x0, None = 0x0,
@ -62,7 +62,7 @@ enum ModelFlags2 {
Unknown3 = 0x01, Unknown3 = 0x01,
} }
#[binread] #[binrw]
#[derive(Debug)] #[derive(Debug)]
#[allow(dead_code)] #[allow(dead_code)]
pub struct ModelHeader { pub struct ModelHeader {
@ -107,7 +107,7 @@ pub struct ModelHeader {
bg_crest_change_material_index: u8, bg_crest_change_material_index: u8,
} }
#[binread] #[binrw]
#[derive(Debug)] #[derive(Debug)]
#[allow(dead_code)] #[allow(dead_code)]
struct MeshLod { struct MeshLod {
@ -142,7 +142,7 @@ struct MeshLod {
index_data_offset: u32, index_data_offset: u32,
} }
#[binread] #[binrw]
#[derive(Debug)] #[derive(Debug)]
#[allow(dead_code)] #[allow(dead_code)]
struct Mesh { struct Mesh {
@ -163,7 +163,7 @@ struct Mesh {
vertex_stream_count: u8, vertex_stream_count: u8,
} }
#[binread] #[binrw]
#[derive(Debug)] #[derive(Debug)]
#[allow(dead_code)] #[allow(dead_code)]
struct Submesh { struct Submesh {
@ -176,7 +176,7 @@ struct Submesh {
bone_count: u16, bone_count: u16,
} }
#[binread] #[binrw]
#[derive(Debug)] #[derive(Debug)]
#[allow(dead_code)] #[allow(dead_code)]
struct BoneTable { struct BoneTable {
@ -186,7 +186,7 @@ struct BoneTable {
bone_count: u8, bone_count: u8,
} }
#[binread] #[binrw]
#[derive(Debug)] #[derive(Debug)]
#[allow(dead_code)] #[allow(dead_code)]
struct BoundingBox { struct BoundingBox {
@ -194,10 +194,10 @@ struct BoundingBox {
max: [f32; 4], max: [f32; 4],
} }
#[binread] #[binrw]
#[derive(Debug)] #[derive(Debug)]
#[allow(dead_code)] #[allow(dead_code)]
#[br(little)] #[brw(little)]
struct ModelData { struct ModelData {
header: ModelHeader, header: ModelHeader,
@ -229,12 +229,14 @@ struct ModelData {
// TODO: implement shapes // TODO: implement shapes
#[br(temp)] #[br(temp)]
#[bw(ignore)]
submesh_bone_map_size: u32, submesh_bone_map_size: u32,
#[br(count = submesh_bone_map_size / 2, err_context("lods = {:#?}", lods))] #[br(count = submesh_bone_map_size / 2, err_context("lods = {:#?}", lods))]
submesh_bone_map: Vec<u16>, submesh_bone_map: Vec<u16>,
#[br(temp)] #[br(temp)]
#[bw(ignore)]
padding_amount: u8, padding_amount: u8,
#[br(pad_before = padding_amount)] #[br(pad_before = padding_amount)]
@ -247,7 +249,7 @@ struct ModelData {
bone_bounding_boxes: Vec<BoundingBox>, bone_bounding_boxes: Vec<BoundingBox>,
} }
#[binread] #[binrw]
#[derive(Debug)] #[derive(Debug)]
#[allow(dead_code)] #[allow(dead_code)]
struct ElementId { struct ElementId {
@ -257,8 +259,8 @@ struct ElementId {
rotate: [f32; 3], rotate: [f32; 3],
} }
#[binread] #[binrw]
#[br(repr = u8)] #[brw(repr = u8)]
#[derive(Copy, Clone, Debug, PartialEq)] #[derive(Copy, Clone, Debug, PartialEq)]
enum VertexType { enum VertexType {
Invalid = 0, Invalid = 0,
@ -270,8 +272,8 @@ enum VertexType {
Half4 = 14, Half4 = 14,
} }
#[binread] #[binrw]
#[br(repr = u8)] #[brw(repr = u8)]
#[derive(Copy, Clone, Debug)] #[derive(Copy, Clone, Debug)]
enum VertexUsage { enum VertexUsage {
Position = 0, Position = 0,
@ -284,10 +286,10 @@ enum VertexUsage {
Color = 7, Color = 7,
} }
#[binread] #[binrw]
#[derive(Copy, Clone, Debug)] #[derive(Copy, Clone, Debug)]
#[allow(dead_code)] #[allow(dead_code)]
#[br(little)] #[brw(little)]
struct VertexElement { struct VertexElement {
stream: u8, stream: u8,
offset: u8, offset: u8,

View file

@ -1,8 +1,8 @@
use crate::gamedata::MemoryBuffer; use crate::gamedata::MemoryBuffer;
use binrw::{binread, BinRead}; use binrw::{binread, BinRead, binrw};
use std::io::Cursor; use std::io::Cursor;
#[binread] #[binrw]
#[derive(Debug)] #[derive(Debug)]
#[allow(dead_code)] #[allow(dead_code)]
struct MaterialFileHeader { struct MaterialFileHeader {
@ -17,7 +17,7 @@ struct MaterialFileHeader {
additional_data_size: u8, additional_data_size: u8,
} }
#[binread] #[binrw]
#[derive(Debug)] #[derive(Debug)]
struct MaterialHeader { struct MaterialHeader {
shader_value_list_size: u16, shader_value_list_size: u16,
@ -27,7 +27,7 @@ struct MaterialHeader {
sampler_count: u16, sampler_count: u16,
} }
#[binread] #[binrw]
#[derive(Debug)] #[derive(Debug)]
#[allow(dead_code)] #[allow(dead_code)]
struct ColorSet { struct ColorSet {
@ -36,7 +36,7 @@ struct ColorSet {
index: u8, index: u8,
} }
#[binread] #[binrw]
#[derive(Debug)] #[derive(Debug)]
#[allow(dead_code)] #[allow(dead_code)]
struct ColorSetInfo { struct ColorSetInfo {
@ -44,7 +44,7 @@ struct ColorSetInfo {
data: Vec<u16>, data: Vec<u16>,
} }
#[binread] #[binrw]
#[derive(Debug)] #[derive(Debug)]
#[allow(dead_code)] #[allow(dead_code)]
struct ColorSetDyeInfo { struct ColorSetDyeInfo {
@ -52,7 +52,7 @@ struct ColorSetDyeInfo {
data: Vec<u16>, data: Vec<u16>,
} }
#[binread] #[binrw]
#[derive(Debug)] #[derive(Debug)]
#[allow(dead_code)] #[allow(dead_code)]
struct ShaderKey { struct ShaderKey {
@ -60,7 +60,7 @@ struct ShaderKey {
value: u32, value: u32,
} }
#[binread] #[binrw]
#[derive(Debug)] #[derive(Debug)]
#[allow(dead_code)] #[allow(dead_code)]
struct Constant { struct Constant {
@ -69,7 +69,7 @@ struct Constant {
value_size: u16, value_size: u16,
} }
#[binread] #[binrw]
#[derive(Debug)] #[derive(Debug)]
#[allow(dead_code)] #[allow(dead_code)]
struct Sampler { struct Sampler {
@ -79,7 +79,7 @@ struct Sampler {
texture_index: u8, texture_index: u8,
} }
#[binread] #[binrw]
#[derive(Debug)] #[derive(Debug)]
#[allow(dead_code)] #[allow(dead_code)]
#[br(little)] #[br(little)]

View file

@ -1,5 +1,5 @@
use crate::gamedata::MemoryBuffer; use crate::gamedata::MemoryBuffer;
use binrw::binread; use binrw::{binread, binrw};
use binrw::BinRead; use binrw::BinRead;
use bitflags::bitflags; use bitflags::bitflags;
use std::cmp::min; use std::cmp::min;
@ -8,7 +8,7 @@ use texpresso::Format;
// Attributes and Format are adapted from Lumina (https://github.com/NotAdam/Lumina/blob/master/src/Lumina/Data/Files/TexFile.cs) // Attributes and Format are adapted from Lumina (https://github.com/NotAdam/Lumina/blob/master/src/Lumina/Data/Files/TexFile.cs)
bitflags! { bitflags! {
#[binread] #[binrw]
struct TextureAttribute : u32 { struct TextureAttribute : u32 {
const DISCARD_PER_FRAME = 0x1; const DISCARD_PER_FRAME = 0x1;
const DISCARD_PER_MAP = 0x2; const DISCARD_PER_MAP = 0x2;
@ -37,8 +37,8 @@ bitflags! {
} }
} }
#[binread] #[binrw]
#[br(repr = u32)] #[brw(repr = u32)]
#[derive(Debug)] #[derive(Debug)]
enum TextureFormat { enum TextureFormat {
B8G8R8A8 = 0x1450, B8G8R8A8 = 0x1450,
@ -46,10 +46,10 @@ enum TextureFormat {
BC5 = 0x3431, BC5 = 0x3431,
} }
#[binread] #[binrw]
#[derive(Debug)] #[derive(Debug)]
#[allow(dead_code)] #[allow(dead_code)]
#[br(little)] #[brw(little)]
struct TexHeader { struct TexHeader {
attribute: TextureAttribute, attribute: TextureAttribute,
format: TextureFormat, format: TextureFormat,