From 2dfc88e925398f0b58de2dab9335044fa0ba5569 Mon Sep 17 00:00:00 2001 From: lzwdgc Date: Fri, 28 Jul 2017 18:24:50 +0300 Subject: [PATCH] Initial preparation for refactoring. --- cppan.yml | 3 ++- src/CMakeLists.txt | 20 ++++++++++++++++---- src/common/CMakeLists.txt | 3 --- src/mmm_extractor/mmm_extractor.cpp | 24 ++++++++++++++++++++---- src/mod_converter/model.cpp | 5 ++++- src/mod_converter/model.h | 4 ++-- src/tm_converter/tm_converter.cpp | 2 +- 7 files changed, 45 insertions(+), 16 deletions(-) delete mode 100644 src/common/CMakeLists.txt diff --git a/cppan.yml b/cppan.yml index 2a05418..82df841 100644 --- a/cppan.yml +++ b/cppan.yml @@ -2,4 +2,5 @@ local_settings: dependencies: - pvt.lzwdgc.polygon4.data_manager.data_manager: master - pvt.cppan.demo.eigen: 3 - + - pvt.egorpugin.primitives.filesystem: master + - pvt.egorpugin.primitives.executor: master diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b26cc8a..4b887ce 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,4 +1,11 @@ -include_directories(common) +file(GLOB common_src "common/*") +add_library(common ${common_src}) +target_include_directories(common PUBLIC common) +target_link_libraries(common + pvt.egorpugin.primitives.filesystem + pvt.egorpugin.primitives.executor +) +add_dependencies(common version) if (WIN32) file(GLOB unpaker_src "unpaker/*") @@ -11,11 +18,17 @@ endif() file(GLOB mmm_extractor_src "mmm_extractor/*") add_executable(mmm_extractor ${mmm_extractor_src}) -target_link_libraries(mmm_extractor common pvt.lzwdgc.polygon4.data_manager.data_manager) +target_link_libraries(mmm_extractor + common + pvt.lzwdgc.polygon4.data_manager.data_manager +) file(GLOB mmo_extractor_src "mmo_extractor/*") add_executable(mmo_extractor ${mmo_extractor_src}) -target_link_libraries(mmo_extractor common pvt.lzwdgc.polygon4.data_manager.data_manager) +target_link_libraries(mmo_extractor + common + pvt.lzwdgc.polygon4.data_manager.data_manager +) file(GLOB mmp_extractor_src "mmp_extractor/*") add_executable(mmp_extractor ${mmp_extractor_src}) @@ -52,5 +65,4 @@ file(GLOB save_loader_src "save_loader/*") add_executable(save_loader ${save_loader_src}) target_link_libraries(save_loader common) -add_subdirectory(common) add_subdirectory(script2txt) diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt deleted file mode 100644 index 4ab3e86..0000000 --- a/src/common/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -file(GLOB common_src "*.h" "*.cpp") -add_library(common ${common_src}) -add_dependencies(common version) \ No newline at end of file diff --git a/src/mmm_extractor/mmm_extractor.cpp b/src/mmm_extractor/mmm_extractor.cpp index 87ec2d7..00f7ba1 100644 --- a/src/mmm_extractor/mmm_extractor.cpp +++ b/src/mmm_extractor/mmm_extractor.cpp @@ -24,6 +24,8 @@ #include #include +#include + using namespace std; struct mmm @@ -40,7 +42,7 @@ struct mmm } }; -mmm read_mmm(string fn) +mmm read_mmm(const path &fn) { buffer b(readFile(fn)); mmm m; @@ -55,16 +57,30 @@ mmm read_mmm(string fn) return m; } +void process_mmm(const path &fn) +{ + auto m = read_mmm(argv[1]); + write_mat_bmp(std::string(argv[1]) + ".bmp", m.data.unpack_mmm()); +} + int main(int argc, char *argv[]) try { if (argc != 2) { - cout << "Usage:\n" << argv[0] << " file.mmp" << "\n"; + cout << "Usage:\n" << argv[0] << " {file.mmm,dir}" << "\n"; return 1; } - auto m = read_mmm(argv[1]); - write_mat_bmp(std::string(argv[1]) + ".bmp", m.data.unpack_mmm()); + auto p = argv[1]; + if (fs::is_regular_file(p)) + process_mmm(p); + else if (fs::is_directory(p)) + { + auto f = enumerate_files(p, false); + + } + else + throw std::runtime_error("Bad fs object"); return 0; } catch (std::exception &e) diff --git a/src/mod_converter/model.cpp b/src/mod_converter/model.cpp index 1f0d909..832bed8 100644 --- a/src/mod_converter/model.cpp +++ b/src/mod_converter/model.cpp @@ -374,13 +374,16 @@ void block::load(const buffer &b) if (type == BlockType::ParticleEmitter) return; + // anims uint32_t n_animations; READ(data, n_animations); animations.resize(n_animations); + + // mat mat.load(data); + READ(data, mat_type); // unk - READ(data, effect); READ(data, unk7); READ(data, unk9); READ(data, unk10); diff --git a/src/mod_converter/model.h b/src/mod_converter/model.h index e146bca..1ff5dd8 100644 --- a/src/mod_converter/model.h +++ b/src/mod_converter/model.h @@ -55,7 +55,7 @@ enum class BlockType : uint32_t ParticleEmitter, }; -enum class EffectType : uint32_t +enum class MaterialType : uint32_t { Texture = 0x0, TextureWithGlareMap = 0x1, @@ -198,9 +198,9 @@ struct block // data material mat; + MaterialType mat_type; //unk (anim + transform settings?) - EffectType effect; uint32_t auto_animation; float animation_cycle; uint32_t triangles_mult_7; diff --git a/src/tm_converter/tm_converter.cpp b/src/tm_converter/tm_converter.cpp index 6a0e117..b002ffc 100644 --- a/src/tm_converter/tm_converter.cpp +++ b/src/tm_converter/tm_converter.cpp @@ -73,7 +73,7 @@ void convert(string fn) convert_simple(dst2, src, width, height); dst2.reset(); memcpy(&m(0,0), dst2.getPtr(), dst2.size()); - m = m.flip(); // flip tga (normal) to bmp (inverse) + m = m.flip(); // flip tga (normal rows order) to bmp (inverse rows order) } write_mat_bmp(fn, m); }