V-Gears 0
Free Final Fantasy VII engine.
VGearsFLevelFileSerializer.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2022 The V-Gears Team
3 *
4 * This file is part of V-Gears
5 *
6 * V-Gears is free software: you can redistribute it and/or modify it under
7 * terms of the GNU General Public License as published by the Free Software
8 * Foundation, version 3.0 (GPLv3) of the License.
9 *
10 * V-Gears is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 */
15
16#pragma once
17
18#include "common/TypeDefine.h"
19#include "VGearsFLevelFile.h"
20#include "VGearsSerializer.h"
21
22namespace VGears{
23
28
29 public:
30
35
39 virtual ~FLevelFileSerializer();
40
41 virtual void ImportFLevelFile(
42 Ogre::DataStreamPtr &stream, FLevelFile* dest
43 );
44
45 enum{
46
51
56
61
66
71
76
81
86
91
96 };
97
101 struct Header{
102
107
112 };
113
114 protected:
115
121 void ReadFileHeader(Ogre::DataStreamPtr &stream);
122
131 void ReadSectionData(
132 Ogre::DataStreamPtr &stream, Ogre::DataStreamPtr &out_buffer,
133 size_t section_size
134 );
135
143 virtual void ReadSection(
144 Ogre::DataStreamPtr &stream, FLevelFile* dest,
145 const size_t section_index
146 );
147
154 template<typename ResourceManagerType>
155 Ogre::ResourcePtr CreateResource(
156 FLevelFile *dest, const String &extension
157 );
158
165 void ReadCameraMatrix(
166 Ogre::DataStreamPtr &stream, FLevelFile* dest
167 );
168
175 void ReadModelList(Ogre::DataStreamPtr &stream, FLevelFile* dest);
176
183 void ReadPalette(Ogre::DataStreamPtr &stream, FLevelFile* dest);
184
191 void ReadWalkmesh(Ogre::DataStreamPtr &stream, FLevelFile* dest);
192
199 void ReadBackground(Ogre::DataStreamPtr &stream, FLevelFile* dest);
200
207 void ReadTriggers(Ogre::DataStreamPtr &stream, FLevelFile* dest);
208
214 void ReadEnd(Ogre::DataStreamPtr &stream);
215
223 template<typename ValueType> void ReadVector(
224 Ogre::DataStreamPtr &stream, std::vector<ValueType> &dest,
225 size_t count
226 );
227
234 virtual String GetBaseName(const FLevelFile* dest) const;
235
239 static const String TAG_FILE_END;
240
241 private:
242
247 };
248}
Handles the serialization of flevel files.
Definition: VGearsFLevelFileSerializer.h:27
void ReadCameraMatrix(Ogre::DataStreamPtr &stream, FLevelFile *dest)
Reads camera matrix data from a flevel file.
Definition: VGearsFLevelFileSerializer.cpp:189
@ SECTION_ENCOUNTER
Battle encounter section.
Definition: VGearsFLevelFileSerializer.h:80
@ SECTION_CAMERA_MATRIX
Camera matrix section/.
Definition: VGearsFLevelFileSerializer.h:55
@ SECTION_TRIGGER
Triggers section.
Definition: VGearsFLevelFileSerializer.h:85
@ SECTION_PALETTE
Color palette section/.
Definition: VGearsFLevelFileSerializer.h:65
@ SECTION_BACKGROUND
Background section.
Definition: VGearsFLevelFileSerializer.h:90
@ SECTION_TILE_MAP
Tile map section.
Definition: VGearsFLevelFileSerializer.h:75
@ SECTION_COUNT
Definition: VGearsFLevelFileSerializer.h:95
@ SECTION_WALKMESH
Walkmesh section.
Definition: VGearsFLevelFileSerializer.h:70
@ SECTION_SCRIPT
Scripts section.
Definition: VGearsFLevelFileSerializer.h:50
@ SECTION_MODEL_LOADER
Model section.
Definition: VGearsFLevelFileSerializer.h:60
virtual String GetBaseName(const FLevelFile *dest) const
Retrieves the base name of a flevel file.
Definition: VGearsFLevelFileSerializer.cpp:267
FLevelFileSerializer()
Constructor.
Definition: VGearsFLevelFileSerializer.cpp:38
Ogre::ResourcePtr CreateResource(FLevelFile *dest, const String &extension)
Creates a resource.
Definition: VGearsFLevelFileSerializer.cpp:176
virtual void ReadSection(Ogre::DataStreamPtr &stream, FLevelFile *dest, const size_t section_index)
Reads a file section.
Definition: VGearsFLevelFileSerializer.cpp:136
void ReadFileHeader(Ogre::DataStreamPtr &stream)
Reads the file header and sets instance data.
Definition: VGearsFLevelFileSerializer.cpp:92
void ReadVector(Ogre::DataStreamPtr &stream, std::vector< ValueType > &dest, size_t count)
Reads a stream as a vector.
Definition: VGearsFLevelFileSerializer.cpp:277
static const String TAG_FILE_END
End-of-file tag.
Definition: VGearsFLevelFileSerializer.h:239
void ReadSectionData(Ogre::DataStreamPtr &stream, Ogre::DataStreamPtr &out_buffer, size_t section_size)
Reads a section data.
Definition: VGearsFLevelFileSerializer.cpp:114
void ReadEnd(Ogre::DataStreamPtr &stream)
Definition: VGearsFLevelFileSerializer.cpp:273
void ReadBackground(Ogre::DataStreamPtr &stream, FLevelFile *dest)
Reads background data from a flevel file.
Definition: VGearsFLevelFileSerializer.cpp:245
void ReadPalette(Ogre::DataStreamPtr &stream, FLevelFile *dest)
Reads color palette data from a flevel file.
Definition: VGearsFLevelFileSerializer.cpp:211
virtual void ImportFLevelFile(Ogre::DataStreamPtr &stream, FLevelFile *dest)
Definition: VGearsFLevelFileSerializer.cpp:42
void ReadTriggers(Ogre::DataStreamPtr &stream, FLevelFile *dest)
Reads trigger data from a flevel file.
Definition: VGearsFLevelFileSerializer.cpp:256
void ReadWalkmesh(Ogre::DataStreamPtr &stream, FLevelFile *dest)
Reads walkmesh data from a flevel file.
Definition: VGearsFLevelFileSerializer.cpp:222
virtual ~FLevelFileSerializer()
Destructor.
Definition: VGearsFLevelFileSerializer.cpp:40
Header header_
The file header.
Definition: VGearsFLevelFileSerializer.h:246
void ReadModelList(Ogre::DataStreamPtr &stream, FLevelFile *dest)
Reads model list data from a flevel file.
Definition: VGearsFLevelFileSerializer.cpp:200
A flevel file.
Definition: VGearsFLevelFile.h:43
Handles file serialization.
Definition: VGearsSerializer.h:30
Definition: FF7NameLookup.h:24
Ogre::uint16 uint16
Definition: TypeDefine.h:32
Ogre::String String
Definition: TypeDefine.h:37
Ogre::uint32 uint32
Definition: TypeDefine.h:33
A flevel file header.
Definition: VGearsFLevelFileSerializer.h:101
uint16 version
File format version.
Definition: VGearsFLevelFileSerializer.h:106
uint32 section_count
Number of sections in the file.
Definition: VGearsFLevelFileSerializer.h:111