V-Gears 0
Free Final Fantasy VII engine.
BattleDataInstaller.h
Go to the documentation of this file.
1/*
2 * V-Gears
3 * Copyright (C) 2022 V-Gears Team
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * This program 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 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19#pragma once
20
21#include "common/BinGZipFile.h"
22#include "common/TypeDefine.h"
25
30
31
32 public:
33
42 const std::string input_dir, const std::string output_dir,
43 Ogre::ResourceGroupManager* res_mgr
44 );
45
50
56 unsigned int InitializeScenes();
57
63 unsigned int InitializeModels();
64
70 unsigned int ProcessScene();
71
80 unsigned int ProcessModel();
81
87 unsigned int ConvertModelsInit();
88
94 unsigned int ConvertModel();
95
99 void WriteEnemies();
100
104 void WriteAttacks();
105
109 void WriteFormations();
110
114 void WriteCharacterData();
115
119 void WriteSceneData();
120
121 private:
122
126 struct Model{
127
131 std::string id;
132
136 std::string hrc;
137
141 std::string anim;
142
146 std::vector<std::string> p;
147
151 std::vector<std::string> tex;
152
156 std::vector<std::string> a;
157
161 Model(): id(""), hrc(""), anim(""){
162 p.clear();
163 tex.clear();
164 a.clear();
165 }
166
167 };
168
173
177 std::string name;
178
182 std::string model;
183 };
184
189
193 int id;
194
198 std::string model;
199
203 std::string description;
204 };
205
210
214 unsigned int id;
215
219 std::vector<CharacterModel> models;
220 };
221
230
241 std::string BuildEnemyFileName(Enemy enemy);
242
253 std::string BuildAttackFileName(Attack attack);
254
263 void ExportMesh(const std::string outdir, const Ogre::MeshPtr &mesh);
264
271 void GenerateRsdFiles(Model model, std::string path);
272
286 void DecompileHrc(File compiled, Model model, std::string path, std::string skeleton_name);
287
302 File compiled, Model model, std::string path, std::string skeleton_name
303 );
304
308 std::string input_dir_;
309
313 std::string output_dir_;
314
318 Ogre::ResourceGroupManager* res_mgr_;
319
323 std::function<void(std::string)> write_output_line_;
324
328 unsigned int next_scene_;
329
333 unsigned int total_scenes_;
334
339
343 std::vector<File*> scenes_uncompressed_;
344
348 std::vector<BattleSceneFile> scenes_;
349
353 std::vector<Enemy> enemies_;
354
358 std::vector<CharacterData> character_data_;
359
363 std::vector<SceneModel> scene_data_;
364
368 std::map<int, std::string> enemy_map_;
369
373 std::vector<Attack> attacks_;
374
378 std::map<int, std::string> attack_map_;
379
383 std::vector<Formation> formations_;
384
388 std::map<int, std::string> formation_map_;
389
393 std::vector<File> battle_lgp_files_;
394
398 std::vector<std::string> battle_lgp_file_names_;
399
404
409
413 std::vector<Model> models_;
414
418 std::vector<std::string> materials_;
419
420
421};
The battle data installer.
Definition: BattleDataInstaller.h:29
std::vector< File > battle_lgp_files_
The files in the original battle.lgp file.
Definition: BattleDataInstaller.h:393
void GenerateRsdFiles(Model model, std::string path)
Generates all required .rsd models for a model.
Definition: BattleDataInstaller.cpp:896
File scene_bin_
The original scene.bin file.
Definition: BattleDataInstaller.h:338
std::vector< std::string > materials_
List of model materials;.
Definition: BattleDataInstaller.h:418
unsigned int total_scenes_
Number of scenes in SCENE.BIN;.
Definition: BattleDataInstaller.h:333
unsigned int InitializeModels()
Prepares the installer for 3D model processing.
Definition: BattleDataInstaller.cpp:73
void WriteCharacterData()
Writes playable character data.
Definition: BattleDataInstaller.cpp:699
File * ExtractGZipScene(File file)
Extract a gzipped file.
Definition: BattleDataInstaller.cpp:757
std::vector< Formation > formations_
Formations data read from the scenes;.
Definition: BattleDataInstaller.h:383
std::string BuildEnemyFileName(Enemy enemy)
Constructs a file name for the XML file to save an enemy to.
Definition: BattleDataInstaller.cpp:731
BattleDataInstaller(const std::string input_dir, const std::string output_dir, Ogre::ResourceGroupManager *res_mgr)
Constructor.
Definition: BattleDataInstaller.cpp:34
~BattleDataInstaller()
Destructor.
Definition: BattleDataInstaller.cpp:42
unsigned int next_scene_
Next scene file to process;.
Definition: BattleDataInstaller.h:328
void WriteSceneData()
Writes battle scene data.
Definition: BattleDataInstaller.cpp:717
std::vector< Model > models_
List of models files found in battle.lgp.
Definition: BattleDataInstaller.h:413
unsigned int ProcessModel()
Processes the 3D model.
Definition: BattleDataInstaller.cpp:137
std::string input_dir_
The path to the directory from which to read the PC game data.
Definition: BattleDataInstaller.h:308
unsigned int ProcessScene()
Processes the next battle scene.
Definition: BattleDataInstaller.cpp:97
std::vector< Enemy > enemies_
Enemy data read from the scenes;.
Definition: BattleDataInstaller.h:353
void ExportMesh(const std::string outdir, const Ogre::MeshPtr &mesh)
Exports a mesh to a file.
Definition: BattleDataInstaller.cpp:841
unsigned int InitializeScenes()
Prepares the installer for scene processing.
Definition: BattleDataInstaller.cpp:44
void WriteEnemies()
Writes enemy data to files.
Definition: BattleDataInstaller.cpp:380
std::string output_dir_
The path to the directory where to save the V-Gears data.
Definition: BattleDataInstaller.h:313
std::map< int, std::string > formation_map_
Map of formations, ID and xml file path.
Definition: BattleDataInstaller.h:388
std::vector< CharacterData > character_data_
List of models for playable character;.
Definition: BattleDataInstaller.h:358
std::vector< std::string > battle_lgp_file_names_
File names for the files in {.
Definition: BattleDataInstaller.h:398
std::map< int, std::string > attack_map_
Map of attacks, ID and xml file path.
Definition: BattleDataInstaller.h:378
std::vector< File * > scenes_uncompressed_
List of uncompressed scenes.
Definition: BattleDataInstaller.h:343
unsigned int ConvertModelsInit()
Prepres the installer for model conversion.
Definition: BattleDataInstaller.cpp:302
Ogre::ResourceGroupManager * res_mgr_
Pointer to the application resource manager.
Definition: BattleDataInstaller.h:318
std::string BuildAttackFileName(Attack attack)
Constructs a file name for the XML file to save an attack to.
Definition: BattleDataInstaller.cpp:739
void WriteFormations()
Writes formation data to files.
Definition: BattleDataInstaller.cpp:631
unsigned int next_model_to_convert_
Next model to convert.
Definition: BattleDataInstaller.h:408
std::function< void(std::string)> write_output_line_
Function used to print text to the log output, line by line.
Definition: BattleDataInstaller.h:323
std::map< int, std::string > enemy_map_
Map of enemies, ID and xml file path.
Definition: BattleDataInstaller.h:368
void DecompileHrc(File compiled, Model model, std::string path, std::string skeleton_name)
Decompiles a compiled HRC file.
Definition: BattleDataInstaller.cpp:915
std::vector< Attack > attacks_
Attack data read from the scenes;.
Definition: BattleDataInstaller.h:373
unsigned int next_model_to_process_
Next model to process;.
Definition: BattleDataInstaller.h:403
std::vector< BattleSceneFile > scenes_
Processed scenes.
Definition: BattleDataInstaller.h:348
std::vector< SceneModel > scene_data_
List of models for battle scenes;.
Definition: BattleDataInstaller.h:363
unsigned int ConvertModel()
Converts a model.
Definition: BattleDataInstaller.cpp:307
void WriteAttacks()
Writes attack data to files.
Definition: BattleDataInstaller.cpp:486
void DecompileSceneHrc(File compiled, Model model, std::string path, std::string skeleton_name)
Decompiles a compiled HRC file.
Definition: BattleDataInstaller.cpp:957
Any enemy in a battle.
Definition: Enemy.h:24
Represents a file.
Definition: File.h:24
An attack structure.
Definition: Attack.h:26
Playable character model info.
Definition: BattleDataInstaller.h:209
std::vector< CharacterModel > models
List of models for the character.
Definition: BattleDataInstaller.h:219
unsigned int id
Character ID.
Definition: BattleDataInstaller.h:214
Models for playable characters.
Definition: BattleDataInstaller.h:172
std::string model
Model file.
Definition: BattleDataInstaller.h:182
std::string name
Descriptive name for the model.
Definition: BattleDataInstaller.h:177
Files to compose a model.
Definition: BattleDataInstaller.h:126
std::string hrc
Name of the model .hrc file.
Definition: BattleDataInstaller.h:136
std::string id
Model identifier, two letters.
Definition: BattleDataInstaller.h:131
std::vector< std::string > a
List of .a animation files associated to the model.
Definition: BattleDataInstaller.h:156
Model()
Constructor, initializes default values.
Definition: BattleDataInstaller.h:161
std::vector< std::string > tex
List of .tex texture files associated to the model.
Definition: BattleDataInstaller.h:151
std::vector< std::string > p
List of .p polygon files associated to the model.
Definition: BattleDataInstaller.h:146
std::string anim
Name of the "da" animation file.
Definition: BattleDataInstaller.h:141
Models for battle scenes.
Definition: BattleDataInstaller.h:188
std::string model
Model file.
Definition: BattleDataInstaller.h:198
int id
Scene ID.
Definition: BattleDataInstaller.h:193
std::string description
Scene description.
Definition: BattleDataInstaller.h:203