Paul пре 11 година
родитељ
комит
11f8da9659
1 измењених фајлова са 30 додато и 7 уклоњено
  1. 30 7
      utilities/q-gears-launcher/src/ff7DataInstaller.cpp

+ 30 - 7
utilities/q-gears-launcher/src/ff7DataInstaller.cpp

@@ -132,23 +132,46 @@ void FF7DataInstaller::ConvertFieldModels(std::string archive, std::string outDi
     */
 }
 
+static void FF7PcFieldToQGearsField(QGears::FLevelFilePtr& field, const std::string& outDir)
+{
+    // Save out the tiles as a PNG image
+    const QGears::BackgroundFilePtr& bg = field->getBackground();
+    const QGears::PaletteFilePtr& pal = field->getPalette();
+    std::unique_ptr<Ogre::Image> bgImage(bg->createImage(pal));
+    bgImage->save(outDir + "/" + field->getName() + ".png");
+
+    // Save out the walk mesh as XML
+    const QGears::WalkmeshFilePtr& walkmesh = field->getWalkmesh();
+
+    TiXmlDocument doc;
+    TiXmlElement * element = new TiXmlElement("walkmesh");
+    for (QGears::WalkmeshFile::Triangle& tri : walkmesh->getTriangles())
+    {
+        TiXmlElement * xmlElement = new TiXmlElement("triangle");
+        xmlElement->SetAttribute("a", Ogre::StringConverter::toString(tri.a));
+        xmlElement->SetAttribute("b", Ogre::StringConverter::toString(tri.b));
+        xmlElement->SetAttribute("c", Ogre::StringConverter::toString(tri.c));
+        xmlElement->SetAttribute("a_b", std::to_string(tri.access_side[0]));
+        xmlElement->SetAttribute("b_c", std::to_string(tri.access_side[1]));
+        xmlElement->SetAttribute("c_a", std::to_string(tri.access_side[2]));
+        element->LinkEndChild(xmlElement);
+    }
+    doc.LinkEndChild(element);
+    doc.SaveFile(outDir + "/" + field->getName() +  "_wm.xml");
+}
+
 void FF7DataInstaller::ConvertFields(std::string archive, std::string outDir)
 {
     // Everything in here is a field
     Ogre::StringVectorPtr resources = mApp.ResMgr()->listResourceNames("FFVIIFields", "*");
     for (auto& resourceName : *resources)
     {
-        if (!QGears::StringUtil::endsWith(resourceName, ".tex") /*&& resourceName == "blin67_4"*/)
+        if (!QGears::StringUtil::endsWith(resourceName, ".tex") && resourceName == "md1_2")
         {
             //try
             {
                 QGears::FLevelFilePtr field = QGears::LZSFLevelFileManager::getSingleton().load(resourceName, "FFVIIFields").staticCast<QGears::FLevelFile>();
-
-                const QGears::BackgroundFilePtr& bg = field->getBackground();
-                const QGears::PaletteFilePtr& pal = field->getPalette();
-                Ogre::Image* bgImage = bg->createImage(pal);
-                bgImage->save(outDir + "/" + field->getName() + ".png");
-                delete bgImage;
+                FF7PcFieldToQGearsField(field, outDir);
             }
             /*
             catch (const Ogre::Exception& ex)