Ver Fonte

The kernel data extractor now produces Lua scripts instead of XML files.
Those script are loaded at runtime, and the main menu can read and reflect the data.

Iñigo Valentin há 3 anos atrás
pai
commit
ed7b4ef6cf
100 ficheiros alterados com 536 adições e 729 exclusões
  1. 41 36
      V-Gears-Installer/include/KernelDataInstaller.h
  2. 1 1
      V-Gears-Installer/include/decompiler/field/instruction/FieldModelInstruction.h
  3. 23 42
      V-Gears-Installer/src/DataInstaller.cpp
  4. 356 591
      V-Gears-Installer/src/KernelDataInstaller.cpp
  5. 5 3
      V-Gears-Installer/src/decompiler/field/instruction/FieldModelInstruction.cpp
  6. 6 8
      V-Gears-Installer/src/decompiler/field/instruction/FieldPartyInstruction.cpp
  7. 14 19
      V-Gears/include/core/Entity.h
  8. 2 3
      V-Gears/include/core/EntityManager.h
  9. 6 3
      V-Gears/include/core/ScriptManagerBinds.h
  10. 8 4
      V-Gears/include/core/UiTextArea.h
  11. 45 2
      V-Gears/include/core/UiWidget.h
  12. 6 15
      V-Gears/src/core/Entity.cpp
  13. 2 2
      V-Gears/src/core/EntityManager.cpp
  14. 1 0
      V-Gears/src/core/ScriptManager.cpp
  15. 4 0
      V-Gears/src/core/UiTextArea.cpp
  16. 16 0
      V-Gears/src/core/UiWidget.cpp
  17. 0 0
      data/RenderSystem_GL.so.1.12.10
  18. 0 0
      data/data/README.md
  19. 0 0
      data/data/config.cfg
  20. 0 0
      data/data/fonts.xml
  21. 0 0
      data/data/fonts/ffvii.xml
  22. 0 0
      data/data/fonts/ffvii_digits.png
  23. 0 0
      data/data/fonts/ffvii_digits.xml
  24. 0 0
      data/data/fonts/ffvii_en.png
  25. 0 0
      data/data/fonts/ffvii_en.xml
  26. 0 0
      data/data/fonts/ffvii_jp.png
  27. 0 0
      data/data/fonts/ffvii_jp.xml
  28. 0 0
      data/data/fonts/ffvii_menu.png
  29. 0 0
      data/data/fonts/ffvii_menu.xml
  30. 0 0
      data/data/fonts/ffvii_timer.png
  31. 0 0
      data/data/fonts/ffvii_timer.xml
  32. 0 0
      data/data/maps.xml
  33. 0 0
      data/data/maps/empty.xml
  34. 0 0
      data/data/maps/ffvii/battle/300.lua
  35. 0 0
      data/data/maps/ffvii/battle/300.xml
  36. 0 0
      data/data/maps/ffvii/field/elevtr1.lua
  37. 0 0
      data/data/maps/ffvii/field/elevtr1.png
  38. 0 0
      data/data/maps/ffvii/field/elevtr1.xml
  39. 0 0
      data/data/maps/ffvii/field/elevtr1_bg.xml
  40. 0 0
      data/data/maps/ffvii/field/elevtr1_wm.xml
  41. 0 0
      data/data/maps/ffvii/field/md1_1.lua
  42. 0 0
      data/data/maps/ffvii/field/md1_1.png
  43. 0 0
      data/data/maps/ffvii/field/md1_1.xml
  44. 0 0
      data/data/maps/ffvii/field/md1_1_bg.xml
  45. 0 0
      data/data/maps/ffvii/field/md1_1_wm.xml
  46. 0 0
      data/data/maps/ffvii/field/md1_2.lua
  47. 0 0
      data/data/maps/ffvii/field/md1_2.png
  48. 0 0
      data/data/maps/ffvii/field/md1_2.xml
  49. 0 0
      data/data/maps/ffvii/field/md1_2_bg.xml
  50. 0 0
      data/data/maps/ffvii/field/md1_2_wm.xml
  51. 0 0
      data/data/maps/ffvii/field/md1stin.lua
  52. 0 0
      data/data/maps/ffvii/field/md1stin.png
  53. 0 0
      data/data/maps/ffvii/field/md1stin.xml
  54. 0 0
      data/data/maps/ffvii/field/md1stin_bg.xml
  55. 0 0
      data/data/maps/ffvii/field/md1stin_wm.xml
  56. 0 0
      data/data/maps/ffvii/field/nmkin_1.lua
  57. 0 0
      data/data/maps/ffvii/field/nmkin_1.png
  58. 0 0
      data/data/maps/ffvii/field/nmkin_1.xml
  59. 0 0
      data/data/maps/ffvii/field/nmkin_1_bg.xml
  60. 0 0
      data/data/maps/ffvii/field/nmkin_1_wm.xml
  61. 0 0
      data/data/maps/ffvii/field/nmkin_2.lua
  62. 0 0
      data/data/maps/ffvii/field/nmkin_2.png
  63. 0 0
      data/data/maps/ffvii/field/nmkin_2.xml
  64. 0 0
      data/data/maps/ffvii/field/nmkin_2_bg.xml
  65. 0 0
      data/data/maps/ffvii/field/nmkin_2_wm.xml
  66. 0 0
      data/data/maps/ffvii/field/nmkin_3.lua
  67. 0 0
      data/data/maps/ffvii/field/nmkin_3.png
  68. 0 0
      data/data/maps/ffvii/field/nmkin_3.xml
  69. 0 0
      data/data/maps/ffvii/field/nmkin_3_bg.xml
  70. 0 0
      data/data/maps/ffvii/field/nmkin_3_wm.xml
  71. 0 0
      data/data/maps/ffvii/field/nrthmk.lua
  72. 0 0
      data/data/maps/ffvii/field/nrthmk.png
  73. 0 0
      data/data/maps/ffvii/field/nrthmk.xml
  74. 0 0
      data/data/maps/ffvii/field/nrthmk_bg.xml
  75. 0 0
      data/data/maps/ffvii/field/nrthmk_wm.xml
  76. 0 0
      data/data/maps/ffvii/field/startmap.lua
  77. 0 0
      data/data/maps/ffvii/field/startmap.png
  78. 0 0
      data/data/maps/ffvii/field/startmap.xml
  79. 0 0
      data/data/maps/ffvii/field/startmap_bg.xml
  80. 0 0
      data/data/maps/ffvii/field/startmap_wm.xml
  81. 0 0
      data/data/maps/test/debug.lua
  82. 0 0
      data/data/maps/test/debug.png
  83. 0 0
      data/data/maps/test/debug.xml
  84. 0 0
      data/data/maps/test/debug_bg.xml
  85. 0 0
      data/data/maps/test/debug_wm.xml
  86. 0 0
      data/data/maps/test/test_1.jpg
  87. 0 0
      data/data/maps/test/test_1.lua
  88. 0 0
      data/data/maps/test/test_1.xml
  89. 0 0
      data/data/maps/test/test_1_bg.xml
  90. 0 0
      data/data/maps/test/test_1_wm.xml
  91. 0 0
      data/data/maps/test/test_2.lua
  92. 0 0
      data/data/maps/test/test_2.xml
  93. 0 0
      data/data/maps/test/test_2_bg.xml
  94. 0 0
      data/data/maps/test/test_2_wm.xml
  95. 0 0
      data/data/maps/test/test_3.xml
  96. 0 0
      data/data/maps/test/test_3_bg.xml
  97. 0 0
      data/data/maps/test/test_text.lua
  98. 0 0
      data/data/maps/test/test_text.xml
  99. 0 0
      data/data/models/ffvii/battle/stages/reactor_1.material
  100. 0 0
      data/data/models/ffvii/battle/stages/reactor_1.mesh

+ 41 - 36
V-Gears-Installer/include/KernelDataInstaller.h

@@ -36,6 +36,11 @@ class KernelDataInstaller{
          */
         ~KernelDataInstaller();
 
+        /**
+         * Reads items and materia prices from the executable.
+         *
+         * @param[in] menu_path PAth to the "ff7.exe" file.
+         */
         void ReadPrices(std::string menu_path);
 
         /**
@@ -46,11 +51,11 @@ class KernelDataInstaller{
         int ReadCommands();
 
         /**
-         * Saves command data to an xml file
+         * Saves command data to a Lua script.
          *
-         * @param file[in] Absolute path to the target XML file.
+         * @param[in] file Absolute path to the target Lua file.
          */
-        void WriteCommands(std::string file);
+        void WriteCommands(std::string file_name);
 
         /**
          * Reads the attack data from the kernel.
@@ -60,11 +65,11 @@ class KernelDataInstaller{
         int ReadAttacks();
 
         /**
-         * Saves command data to an xml file
+         * Saves command data to a Lua script.
          *
-         * @param file[in] Absolute path to the target XML file.
+         * @param[in] file Absolute path to the target Lua file.
          */
-        void WriteAttacks(std::string file);
+        void WriteAttacks(std::string file_name);
 
         /**
          * Reads character data from the kernel.
@@ -74,11 +79,11 @@ class KernelDataInstaller{
         int ReadCharacters();
 
         /**
-         * Saves character data to an xml file
+         * Saves character data to a Lua script.
          *
-         * @param file[in] Absolute path to the target XML file.
+         * @param[in] file Absolute path to the target Lua file.
          */
-        void WriteCharacters(std::string file);
+        void WriteCharacters(std::string file_name);
 
         /**
          * Reads growth data from the kernel.
@@ -86,11 +91,11 @@ class KernelDataInstaller{
         void ReadGrowth();
 
         /**
-         * Saves growth data to an xml file
+         * Saves growth data to a Lua script.
          *
-         * @param file[in] Absolute path to the target XML file.
+         * @param[in] file Absolute path to the target Lua file.
          */
-        void WriteGrowth(std::string file);
+        void WriteGrowth(std::string file_name);
 
         /**
          * Reads the items from the kernel.
@@ -100,11 +105,11 @@ class KernelDataInstaller{
         int ReadItems();
 
         /**
-         * Saves item data to an xml file
+         * Saves item data to a Lua script.
          *
-         * @param file[in] Absolute path to the target XML file.
+         * @param[in] file Absolute path to the target Lua file.
          */
-        void WriteItems(std::string file);
+        void WriteItems(std::string file_name);
 
         /**
          * Reads the weapon info from the kernel.
@@ -114,11 +119,11 @@ class KernelDataInstaller{
         int ReadWeapons();
 
         /**
-         * Saves weapon data to an xml file
+         * Saves weapon data to a Lua script.
          *
-         * @param file[in] Absolute path to the target XML file.
+         * @param[in] file Absolute path to the target Lua file.
          */
-        void WriteWeapons(std::string file);
+        void WriteWeapons(std::string file_name);
 
         /**
          * Reads the armor info from the kernel.
@@ -128,11 +133,11 @@ class KernelDataInstaller{
         int ReadArmors();
 
         /**
-         * Saves armor data to an xml file
+         * Saves armor data to a Lua script.
          *
-         * @param file[in] Absolute path to the target XML file.
+         * @param[in] file Absolute path to the target Lua file.
          */
-        void WriteArmors(std::string file);
+        void WriteArmors(std::string file_name);
 
         /**
          * Reads the accessory info from the kernel.
@@ -142,11 +147,11 @@ class KernelDataInstaller{
         int ReadAccessories();
 
         /**
-         * Saves accessory data to an xml file
+         * Saves accessory data to a Lua script.
          *
-         * @param file[in] Absolute path to the target XML file.
+         * @param[in] file Absolute path to the target Lua file.
          */
-        void WriteAccessories(std::string file);
+        void WriteAccessories(std::string file_name);
 
         /**
          * Reads materia info from the kernel.
@@ -156,11 +161,11 @@ class KernelDataInstaller{
         int ReadMateria();
 
         /**
-         * Saves materia data to an xml file
+         * Saves materia data to a Lua script.
          *
-         * @param file[in] Absolute path to the target XML file.
+         * @param[in] file Absolute path to the target Lua file.
          */
-        void WriteMateria(std::string file);
+        void WriteMateria(std::string file_name);
 
         /**
          * Reads key item info from the kernel.
@@ -170,11 +175,11 @@ class KernelDataInstaller{
         int ReadKeyItems();
 
         /**
-         * Saves key item data to an xml file
+         * Saves key item data to a Lua script.
          *
-         * @param file[in] Absolute path to the target XML file.
+         * @param[in] file Absolute path to the target Lua file.
          */
-        void WriteKeyItems(std::string file);
+        void WriteKeyItems(std::string file_name);
 
         /**
          * Reads summon name info from the kernel.
@@ -184,11 +189,11 @@ class KernelDataInstaller{
         int ReadSummonNames();
 
         /**
-         * Saves summon names data to an xml file
+         * Saves summon names data to a Lua script.
          *
-         * @param file[in] Absolute path to the target XML file.
+         * @param[in] file Absolute path to the target Lua file.
          */
-        void WriteSummonNames(std::string file);
+        void WriteSummonNames(std::string file_name);
 
         /**
          * Reads the initial savemap from the kernel.
@@ -196,11 +201,11 @@ class KernelDataInstaller{
         void ReadInitialSaveMap();
 
         /**
-         * Saves the initial savemap to an xml file
+         * Saves the initial savemap to a Lua script.
          *
-         * @param file[in] Absolute path to the target XML file.
+         * @param[in] file Absolute path to the target Lua file.
          */
-        void WriteInitialSaveMap(std::string file);
+        void WriteInitialSaveMap(std::string file_name);
 
     private:
 

+ 1 - 1
V-Gears-Installer/include/decompiler/field/instruction/FieldModelInstruction.h

@@ -136,7 +136,7 @@ class FieldModelInstruction : public KernelCallInstruction{
 
         void ProcessTLKON(CodeGenerator* code_gen, const std::string& entity);
 
-        void ProcessPC(CodeGenerator* code_gen, const std::string& entity);
+        void ProcessPC(CodeGenerator* code_gen, const std::string& entity, int char_id);
 
         void ProcessCHAR(CodeGenerator* code_gen, const std::string& entity);
 

+ 23 - 42
V-Gears-Installer/src/DataInstaller.cpp

@@ -102,50 +102,31 @@ int DataInstaller::Progress(){
               input_dir_ + "kernel/KERNEL.BIN"
             );
             kernel_installer_->ReadPrices(exe_path_);
-            if (kernel_installer_->ReadCommands() > 0){
-                CreateDir("game");
-                kernel_installer_->WriteCommands(output_dir_ + "game/commands.xml");
-            }
-            if (kernel_installer_->ReadAttacks() > 0){
-                CreateDir("game");
-                kernel_installer_->WriteAttacks(output_dir_ + "game/attacks.xml");
-            }
-            if (kernel_installer_->ReadCharacters() > 0){
-                CreateDir("game");
-                kernel_installer_->WriteCharacters(output_dir_ + "game/characters.xml");
-            }
-            if (kernel_installer_->ReadItems() > 0){
-                CreateDir("game");
-                kernel_installer_->WriteItems(output_dir_ + "game/items.xml");
-            }
+            CreateDir("game");
+            kernel_installer_->ReadCommands();
+            kernel_installer_->WriteCommands(output_dir_ + "game/commands.lua");
+            kernel_installer_->ReadAttacks();
+            kernel_installer_->WriteAttacks(output_dir_ + "game/attacks.lua");
+            kernel_installer_->ReadCharacters();
+            kernel_installer_->WriteCharacters(output_dir_ + "game/characters.lua");
+            kernel_installer_->ReadItems();
+            kernel_installer_->WriteItems(output_dir_ + "game/items.lua");
             kernel_installer_->ReadGrowth();
-            kernel_installer_->WriteGrowth(output_dir_ + "game/growth.xml");
-            if (kernel_installer_->ReadWeapons() > 0){
-                CreateDir("game");
-                kernel_installer_->WriteWeapons(output_dir_ + "game/weapons.xml");
-            }
-            if (kernel_installer_->ReadArmors() > 0){
-                CreateDir("game");
-                kernel_installer_->WriteArmors(output_dir_ + "game/armors.xml");
-            }
-            if (kernel_installer_->ReadAccessories() > 0){
-                CreateDir("game");
-                kernel_installer_->WriteAccessories(output_dir_ + "game/accessories.xml");
-            }
-            if (kernel_installer_->ReadMateria() > 0){
-                CreateDir("game");
-                kernel_installer_->WriteMateria(output_dir_ + "game/materia.xml");
-            }
-            if (kernel_installer_->ReadKeyItems() > 0){
-                CreateDir("game");
-                kernel_installer_->WriteKeyItems(output_dir_ + "game/key_items.xml");
-            }
-            if (kernel_installer_->ReadSummonNames() > 0){
-                CreateDir("game");
-                kernel_installer_->WriteSummonNames(output_dir_ + "game/summons.xml");
-            }
+            kernel_installer_->WriteGrowth(output_dir_ + "game/growth.lua");
+            kernel_installer_->ReadWeapons();
+            kernel_installer_->WriteWeapons(output_dir_ + "game/weapons.lua");
+            kernel_installer_->ReadArmors() > 0;
+            kernel_installer_->WriteArmors(output_dir_ + "game/armors.lua");
+            kernel_installer_->ReadAccessories();
+            kernel_installer_->WriteAccessories(output_dir_ + "game/accessories.lua");
+            kernel_installer_->ReadMateria();
+            kernel_installer_->WriteMateria(output_dir_ + "game/materia.lua");
+            kernel_installer_->ReadKeyItems();
+            kernel_installer_->WriteKeyItems(output_dir_ + "game/key_items.lua");
+            kernel_installer_->ReadSummonNames();
+            kernel_installer_->WriteSummonNames(output_dir_ + "game/summons.lua");
             kernel_installer_->ReadInitialSaveMap();
-            kernel_installer_->WriteInitialSaveMap(output_dir_ + "game/initial_savemap.xml");
+            kernel_installer_->WriteInitialSaveMap(output_dir_ + "game/initial_savemap.lua");
             //exit(0);
 
             installation_state_ = SPAWN_POINTS_AND_SCALE_FACTORS_INIT;

Diff do ficheiro suprimidas por serem muito extensas
+ 356 - 591
V-Gears-Installer/src/KernelDataInstaller.cpp


+ 5 - 3
V-Gears-Installer/src/decompiler/field/instruction/FieldModelInstruction.cpp

@@ -85,7 +85,7 @@ void FieldModelInstruction::ProcessInst(
         case OPCODES::PGTDR: code_gen->WriteTodo(md.GetEntityName(), "PGTDR"); break;
         case OPCODES::PXYZI: code_gen->WriteTodo(md.GetEntityName(), "PXYZI"); break;
         case OPCODES::TLKON: ProcessTLKON(code_gen, md.GetEntityName()); break;
-        case OPCODES::PC: ProcessPC(code_gen, md.GetEntityName()); break;
+        case OPCODES::PC: ProcessPC(code_gen, md.GetEntityName(), md.GetCharacterId()); break;
         case OPCODES::opCodeCHAR: ProcessCHAR(code_gen, md.GetEntityName()); break;
         case OPCODES::DFANM: ProcessDFANM(code_gen, md.GetEntityName(), md.GetCharacterId()); break;
         case OPCODES::ANIME1:
@@ -192,9 +192,11 @@ void FieldModelInstruction::ProcessTLKON(CodeGenerator* code_gen, const std::str
     ).str());
 }
 
-void FieldModelInstruction::ProcessPC(CodeGenerator* code_gen, const std::string& entity){
+void FieldModelInstruction::ProcessPC(
+  CodeGenerator* code_gen, const std::string& entity, int char_id
+){
     code_gen->AddOutputLine(
-      (boost::format("set_entity_to_character(\"%1%\", \"%1%\")") % entity).str()
+      (boost::format("set_entity_to_character(\"%1%\", %2%)") % entity % char_id).str()
     );
 }
 

+ 6 - 8
V-Gears-Installer/src/decompiler/field/instruction/FieldPartyInstruction.cpp

@@ -74,14 +74,12 @@ void FieldPartyInstruction::ProcessSTITM(CodeGenerator* code_gen){
 }
 
 void FieldPartyInstruction::ProcessPRTYE(CodeGenerator* code_gen){
-    FieldCodeGenerator* gc = static_cast<FieldCodeGenerator*>(code_gen);
-    auto char_id_1 = gc->GetFormatter().GetFriendlyCharName(params_[0]->GetUnsigned());
-    char_id_1 = (char_id_1 == "") ? "nil" : ("\"" + char_id_1 + "\"");
-    auto char_id_2 = gc->GetFormatter().GetFriendlyCharName(params_[1]->GetUnsigned());
-    char_id_2 = (char_id_2 == "") ? "nil" : ("\"" + char_id_2 + "\"");
-    auto char_id_3 = gc->GetFormatter().GetFriendlyCharName(params_[2]->GetUnsigned());
-    char_id_3 = (char_id_3 == "") ? "nil" : ("\"" + char_id_3 + "\"");
+    std::string chars[3];
+    for (int i = 0; i < 3; i ++){
+        if (params_[i]->GetUnsigned() < 254) chars[i] = params_[i]->GetString();
+        else chars[i] = "nil";
+    }
     code_gen->AddOutputLine((
-      boost::format("FFVII.set_party(%1%, %2%, %3%)") % char_id_1 % char_id_2 % char_id_3
+      boost::format("FFVII.set_party(%1%, %2%, %3%)") % chars[0] % chars[1] % chars[2]
     ).str());
 }

+ 14 - 19
V-Gears/include/core/Entity.h

@@ -1043,18 +1043,17 @@ class Entity{
         /**
          * Assigns the entity as a character.
          *
-         * Marks the entity as a character, and assigns a character name and
-         * ID.
+         * Marks the entity as a character, and assigns a character name and ID. If the ID is
+         * passed as a negative number, the entity will no longer be considered a character.
          *
-         * @param[in] character_name The character name.
+         * @param[in] char_id The character name.
          */
-        void SetCharacter(const char* character_name);
+        void SetCharacter(int char_id);
 
         /**
          * Checks if the entity is a character.
          *
-         * An entity is not a character until {@see SetCharacter} has been
-         * called.
+         * An entity is not a character until {@see SetCharacter} has been called.
          *
          * @return True if the entity is a character, false otherwise.
          */
@@ -1063,17 +1062,9 @@ class Entity{
         /**
          * Retrieves the entity's character ID.
          *
-         * @return The character ID, or 0 if the entity is not a character.
+         * @return The character ID, or a negative value if the entity is not a character.
          */
-        uint GetCharacterId();
-
-        /**
-         * Retrieves the entity's character name.
-         *
-         * @return The character name, or an empty string if the entity is not
-         * a character.
-         */
-        std::string GetCharacterName();
+        int GetCharacterId();
 
         /**
          * Checks if the entity is a line.
@@ -1399,11 +1390,15 @@ class Entity{
          */
         Ogre::Degree GetDirectionToEntity(Entity* entity) const;
 
+        /**
+         * Indicates if the entity is a playable character.
+         */
         bool is_character_;
 
-        uint character_id_;
-
-        std::string character_name_;
+        /**
+         * The ID of the playable character the entity is, if any.
+         */
+        int character_id_;
 
         /**
          * Index of the entity on the field.

+ 2 - 3
V-Gears/include/core/EntityManager.h

@@ -328,10 +328,9 @@ class EntityManager : public Ogre::Singleton<EntityManager>{
          * Assigns a character to an entity.
          *
          * @param[in] entity_name The entity name.
-         * @param[in] character_name The character name. Usually the same as
-         * the entity.
+         * @param[in] charid The character ID.
          */
-        void SetEntityToCharacter(const char* entity_name, const char* character_name);
+        void SetEntityToCharacter(const char* entity_name, unsigned int char_id);
 
     private:
 

+ 6 - 3
V-Gears/include/core/ScriptManagerBinds.h

@@ -250,7 +250,7 @@ void ScriptManager::InitBinds(){
           .def("is_key_off", (bool(EntityManager::*)(unsigned int)) &EntityManager::IsKeyOff)
           .def(
             "set_entity_to_character",
-            (void(EntityManager::*)(const char*, const char*)) &EntityManager::SetEntityToCharacter
+            (void(EntityManager::*)(const char*, unsigned int)) &EntityManager::SetEntityToCharacter
           )
     ];
 
@@ -370,8 +370,11 @@ void ScriptManager::InitBinds(){
           .def("set_x", (void(UiWidget::*)(const float, const float)) &UiWidget::SetX)
           .def("set_y", (void(UiWidget::*)(const float, const float)) &UiWidget::SetY)
           .def("set_z", (void(UiWidget::*)(const float)) &UiWidget::SetZ)
-          .def("set_width", (void(UiWidget::*)(const float, const float)) &UiWidget::SetWidth)
-          .def("set_height", (void(UiWidget::*)(const float, const float)) &UiWidget::SetHeight)
+          .def("get_width", (float(UiWidget::*)()) &UiWidget::ScriptGetWidth)
+          .def("set_width", (void(UiWidget::*)(const float)) &UiWidget::ScriptSetWidth)
+          .def("get_height", (float(UiWidget::*)()) &UiWidget::ScriptGetHeight)
+          .def("set_height", (void(UiWidget::*)(const float)) &UiWidget::ScriptSetHeight)
+          .def("set_text", (void(UiWidget::*)(const char*)) &UiWidget::SetText)
     ];
 
     // UI manager commands. Use to get a specific widget.

+ 8 - 4
V-Gears/include/core/UiTextArea.h

@@ -212,10 +212,7 @@ class UiTextArea : public UiWidget{
          * @param[in] bottom Padding from the bottom, in pixels.
          * @param[in] left Padding from the left, in pixels.
          */
-        void SetPadding(
-          const float top, const float right,
-          const float bottom, const float left
-        );
+        void SetPadding(const float top, const float right, const float bottom, const float left);
 
         /**
          * Sets the text from a string.
@@ -224,6 +221,13 @@ class UiTextArea : public UiWidget{
          */
         void SetText(const Ogre::UTFString& text);
 
+        /**
+         * Sets the text from a string.
+         *
+         * @param[in] text Text to set.
+         */
+        void SetText(const char* text) override;
+
         /**
          * Sets the text from an XML node.
          *

+ 45 - 2
V-Gears/include/core/UiWidget.h

@@ -483,8 +483,6 @@ class UiWidget{
         /**
          * Sets the widget colour.
          *
-         * It set the same colour for all corners.
-         *
          * @param[in] r Colour red component (0-255).
          * @param[in] g Colour green component (0-255).
          * @param[in] b Colour blue component (0-255).
@@ -531,6 +529,51 @@ class UiWidget{
          */
         void SetAlpha(const float a);
 
+        /**
+         * Sets the text of the widget.
+         *
+         * If the widget dones't have text, it won't do anything.
+         *
+         * @param[in] Text the text to set.
+         */
+        virtual void SetText(const char* text);
+
+        /**
+         * Retrieves the absolute width of the widget.
+         *
+         * Doesn't consider percentages.
+         *
+         * @return Absolute width.
+         */
+        float ScriptGetWidth();
+
+        /**
+         * Sets the absolute width of the widget.
+         *
+         * Doesn't modify percentages.
+         *
+         * @param[in] Absolute width.
+         */
+        void ScriptSetWidth(float width);
+
+        /**
+         * Retrieves the absolute height of the widget.
+         *
+         * Doesn't consider percentages.
+         *
+         * @return Absolute height.
+         */
+        float ScriptGetHeight();
+
+        /**
+         * Sets the absolute height of the widget.
+         *
+         * Doesn't modify percentages.
+         *
+         * @param[in] Absolute height.
+         */
+        void ScriptSetHeight(float height);
+
     protected:
 
         /**

+ 6 - 15
V-Gears/src/core/Entity.cpp

@@ -69,8 +69,7 @@ Entity::Entity(const Ogre::String& name, Ogre::SceneNode* node):
   animation_current_name_(""),
   animation_auto_play_(true),
   is_character_(false),
-  character_id_(0),
-  character_name_(""),
+  character_id_(-1),
   is_line_(false)
 {
     model_root_node_ = scene_node_->createChildSceneNode();
@@ -756,23 +755,15 @@ int Entity::ScriptAnimationSync(){
     return -1;
 }
 
-void Entity::SetCharacter(const char* character_name){
-    is_character_ = true;
-    character_name_ = character_name;
-    if (character_name_ == "Cloud") character_id_ = 0;
-    else if (character_name_ == "Barret") character_id_ = 1;
-    else if (character_name_ == "Tifa") character_id_ = 2;
-    else if (character_name_ == "Aeris") character_id_ = 3;
-    else if (character_name_ == "Red XIII") character_id_ = 4;
-    // TODO: Continue this list.
-    // TODO: Or better event, look IDs up somewhere.
+void Entity::SetCharacter(int char_id){
+    if (char_id >= 0) is_character_ = true;
+    else is_character_ = false;
+    character_id_ = char_id;
 }
 
 bool Entity::IsCharacter(){return is_character_;}
 
-uint Entity::GetCharacterId(){return character_id_;}
-
-std::string Entity::GetCharacterName(){return character_name_;}
+int Entity::GetCharacterId(){return character_id_;}
 
 bool Entity::IsLine(){return is_line_;}
 

+ 2 - 2
V-Gears/src/core/EntityManager.cpp

@@ -587,10 +587,10 @@ bool EntityManager::IsKeyOn(unsigned int key_code){
 
 bool EntityManager::IsKeyOff(unsigned int key_code){return !IsKeyOn(key_code);}
 
-void EntityManager::SetEntityToCharacter(const char* entity_name, const char* character_name){
+void EntityManager::SetEntityToCharacter(const char* entity_name, unsigned int char_id){
     for (unsigned int i = 0; i < entity_.size(); ++ i){
         if (entity_[i]->GetName() == entity_name){
-            entity_[i]->SetCharacter(character_name);
+            entity_[i]->SetCharacter(char_id);
         }
     }
 }

+ 1 - 0
V-Gears/src/core/ScriptManager.cpp

@@ -54,6 +54,7 @@ ScriptManager::ScriptManager():
     luaopen_string(lua_state_);
     luaopen_table(lua_state_);
     luaopen_math(lua_state_);
+    luaopen_io(lua_state_);
     LOG_TRIVIAL("ScriptManager starting ... 1");
     InitBinds();
     LOG_TRIVIAL("ScriptManager starting ... 2");

+ 4 - 0
V-Gears/src/core/UiTextArea.cpp

@@ -251,6 +251,10 @@ void UiTextArea::SetPadding(
     padding_left_ = left;
 }
 
+void UiTextArea::SetText(const char* text){
+    SetText(Ogre::UTFString(text));
+}
+
 void UiTextArea::SetText(const Ogre::UTFString& text){
     TiXmlDocument doc;
     Ogre::UTFString xml_text = "<container>" + text + "</container>";

+ 16 - 0
V-Gears/src/core/UiWidget.cpp

@@ -629,3 +629,19 @@ void UiWidget::SetAlpha(const float a){
     colour_4_.a = a;
     SetUpdateTransformation();
 }
+
+void UiWidget::SetText(const char* text){}
+
+float UiWidget::ScriptGetWidth(){return width_;}
+
+void UiWidget::ScriptSetWidth(float width){
+    width_ = width;
+    SetUpdateTransformation();
+}
+
+float UiWidget::ScriptGetHeight(){return width_;}
+
+void UiWidget::ScriptSetHeight(float height){
+    height_ = height;
+    SetUpdateTransformation();
+}

+ 0 - 0
output/RenderSystem_GL.so.1.12.10 → data/RenderSystem_GL.so.1.12.10


+ 0 - 0
output/data/README.md → data/data/README.md


+ 0 - 0
output/data/config.cfg → data/data/config.cfg


+ 0 - 0
output/data/fonts.xml → data/data/fonts.xml


+ 0 - 0
output/data/fonts/ffvii.xml → data/data/fonts/ffvii.xml


+ 0 - 0
output/data/fonts/ffvii_digits.png → data/data/fonts/ffvii_digits.png


+ 0 - 0
output/data/fonts/ffvii_digits.xml → data/data/fonts/ffvii_digits.xml


+ 0 - 0
output/data/fonts/ffvii_en.png → data/data/fonts/ffvii_en.png


+ 0 - 0
output/data/fonts/ffvii_en.xml → data/data/fonts/ffvii_en.xml


+ 0 - 0
output/data/fonts/ffvii_jp.png → data/data/fonts/ffvii_jp.png


+ 0 - 0
output/data/fonts/ffvii_jp.xml → data/data/fonts/ffvii_jp.xml


+ 0 - 0
output/data/fonts/ffvii_menu.png → data/data/fonts/ffvii_menu.png


+ 0 - 0
output/data/fonts/ffvii_menu.xml → data/data/fonts/ffvii_menu.xml


+ 0 - 0
output/data/fonts/ffvii_timer.png → data/data/fonts/ffvii_timer.png


+ 0 - 0
output/data/fonts/ffvii_timer.xml → data/data/fonts/ffvii_timer.xml


+ 0 - 0
output/data/maps.xml → data/data/maps.xml


+ 0 - 0
output/data/maps/empty.xml → data/data/maps/empty.xml


+ 0 - 0
output/data/maps/ffvii/battle/300.lua → data/data/maps/ffvii/battle/300.lua


+ 0 - 0
output/data/maps/ffvii/battle/300.xml → data/data/maps/ffvii/battle/300.xml


+ 0 - 0
output/data/maps/ffvii/field/elevtr1.lua → data/data/maps/ffvii/field/elevtr1.lua


+ 0 - 0
output/data/maps/ffvii/field/elevtr1.png → data/data/maps/ffvii/field/elevtr1.png


+ 0 - 0
output/data/maps/ffvii/field/elevtr1.xml → data/data/maps/ffvii/field/elevtr1.xml


+ 0 - 0
output/data/maps/ffvii/field/elevtr1_bg.xml → data/data/maps/ffvii/field/elevtr1_bg.xml


+ 0 - 0
output/data/maps/ffvii/field/elevtr1_wm.xml → data/data/maps/ffvii/field/elevtr1_wm.xml


+ 0 - 0
output/data/maps/ffvii/field/md1_1.lua → data/data/maps/ffvii/field/md1_1.lua


+ 0 - 0
output/data/maps/ffvii/field/md1_1.png → data/data/maps/ffvii/field/md1_1.png


+ 0 - 0
output/data/maps/ffvii/field/md1_1.xml → data/data/maps/ffvii/field/md1_1.xml


+ 0 - 0
output/data/maps/ffvii/field/md1_1_bg.xml → data/data/maps/ffvii/field/md1_1_bg.xml


+ 0 - 0
output/data/maps/ffvii/field/md1_1_wm.xml → data/data/maps/ffvii/field/md1_1_wm.xml


+ 0 - 0
output/data/maps/ffvii/field/md1_2.lua → data/data/maps/ffvii/field/md1_2.lua


+ 0 - 0
output/data/maps/ffvii/field/md1_2.png → data/data/maps/ffvii/field/md1_2.png


+ 0 - 0
output/data/maps/ffvii/field/md1_2.xml → data/data/maps/ffvii/field/md1_2.xml


+ 0 - 0
output/data/maps/ffvii/field/md1_2_bg.xml → data/data/maps/ffvii/field/md1_2_bg.xml


+ 0 - 0
output/data/maps/ffvii/field/md1_2_wm.xml → data/data/maps/ffvii/field/md1_2_wm.xml


+ 0 - 0
output/data/maps/ffvii/field/md1stin.lua → data/data/maps/ffvii/field/md1stin.lua


+ 0 - 0
output/data/maps/ffvii/field/md1stin.png → data/data/maps/ffvii/field/md1stin.png


+ 0 - 0
output/data/maps/ffvii/field/md1stin.xml → data/data/maps/ffvii/field/md1stin.xml


+ 0 - 0
output/data/maps/ffvii/field/md1stin_bg.xml → data/data/maps/ffvii/field/md1stin_bg.xml


+ 0 - 0
output/data/maps/ffvii/field/md1stin_wm.xml → data/data/maps/ffvii/field/md1stin_wm.xml


+ 0 - 0
output/data/maps/ffvii/field/nmkin_1.lua → data/data/maps/ffvii/field/nmkin_1.lua


+ 0 - 0
output/data/maps/ffvii/field/nmkin_1.png → data/data/maps/ffvii/field/nmkin_1.png


+ 0 - 0
output/data/maps/ffvii/field/nmkin_1.xml → data/data/maps/ffvii/field/nmkin_1.xml


+ 0 - 0
output/data/maps/ffvii/field/nmkin_1_bg.xml → data/data/maps/ffvii/field/nmkin_1_bg.xml


+ 0 - 0
output/data/maps/ffvii/field/nmkin_1_wm.xml → data/data/maps/ffvii/field/nmkin_1_wm.xml


+ 0 - 0
output/data/maps/ffvii/field/nmkin_2.lua → data/data/maps/ffvii/field/nmkin_2.lua


+ 0 - 0
output/data/maps/ffvii/field/nmkin_2.png → data/data/maps/ffvii/field/nmkin_2.png


+ 0 - 0
output/data/maps/ffvii/field/nmkin_2.xml → data/data/maps/ffvii/field/nmkin_2.xml


+ 0 - 0
output/data/maps/ffvii/field/nmkin_2_bg.xml → data/data/maps/ffvii/field/nmkin_2_bg.xml


+ 0 - 0
output/data/maps/ffvii/field/nmkin_2_wm.xml → data/data/maps/ffvii/field/nmkin_2_wm.xml


+ 0 - 0
output/data/maps/ffvii/field/nmkin_3.lua → data/data/maps/ffvii/field/nmkin_3.lua


+ 0 - 0
output/data/maps/ffvii/field/nmkin_3.png → data/data/maps/ffvii/field/nmkin_3.png


+ 0 - 0
output/data/maps/ffvii/field/nmkin_3.xml → data/data/maps/ffvii/field/nmkin_3.xml


+ 0 - 0
output/data/maps/ffvii/field/nmkin_3_bg.xml → data/data/maps/ffvii/field/nmkin_3_bg.xml


+ 0 - 0
output/data/maps/ffvii/field/nmkin_3_wm.xml → data/data/maps/ffvii/field/nmkin_3_wm.xml


+ 0 - 0
output/data/maps/ffvii/field/nrthmk.lua → data/data/maps/ffvii/field/nrthmk.lua


+ 0 - 0
output/data/maps/ffvii/field/nrthmk.png → data/data/maps/ffvii/field/nrthmk.png


+ 0 - 0
output/data/maps/ffvii/field/nrthmk.xml → data/data/maps/ffvii/field/nrthmk.xml


+ 0 - 0
output/data/maps/ffvii/field/nrthmk_bg.xml → data/data/maps/ffvii/field/nrthmk_bg.xml


+ 0 - 0
output/data/maps/ffvii/field/nrthmk_wm.xml → data/data/maps/ffvii/field/nrthmk_wm.xml


+ 0 - 0
output/data/maps/ffvii/field/startmap.lua → data/data/maps/ffvii/field/startmap.lua


+ 0 - 0
output/data/maps/ffvii/field/startmap.png → data/data/maps/ffvii/field/startmap.png


+ 0 - 0
output/data/maps/ffvii/field/startmap.xml → data/data/maps/ffvii/field/startmap.xml


+ 0 - 0
output/data/maps/ffvii/field/startmap_bg.xml → data/data/maps/ffvii/field/startmap_bg.xml


+ 0 - 0
output/data/maps/ffvii/field/startmap_wm.xml → data/data/maps/ffvii/field/startmap_wm.xml


+ 0 - 0
output/data/maps/test/debug.lua → data/data/maps/test/debug.lua


+ 0 - 0
output/data/maps/test/debug.png → data/data/maps/test/debug.png


+ 0 - 0
output/data/maps/test/debug.xml → data/data/maps/test/debug.xml


+ 0 - 0
output/data/maps/test/debug_bg.xml → data/data/maps/test/debug_bg.xml


+ 0 - 0
output/data/maps/test/debug_wm.xml → data/data/maps/test/debug_wm.xml


+ 0 - 0
output/data/maps/test/test_1.jpg → data/data/maps/test/test_1.jpg


+ 0 - 0
output/data/maps/test/test_1.lua → data/data/maps/test/test_1.lua


+ 0 - 0
output/data/maps/test/test_1.xml → data/data/maps/test/test_1.xml


+ 0 - 0
output/data/maps/test/test_1_bg.xml → data/data/maps/test/test_1_bg.xml


+ 0 - 0
output/data/maps/test/test_1_wm.xml → data/data/maps/test/test_1_wm.xml


+ 0 - 0
output/data/maps/test/test_2.lua → data/data/maps/test/test_2.lua


+ 0 - 0
output/data/maps/test/test_2.xml → data/data/maps/test/test_2.xml


+ 0 - 0
output/data/maps/test/test_2_bg.xml → data/data/maps/test/test_2_bg.xml


+ 0 - 0
output/data/maps/test/test_2_wm.xml → data/data/maps/test/test_2_wm.xml


+ 0 - 0
output/data/maps/test/test_3.xml → data/data/maps/test/test_3.xml


+ 0 - 0
output/data/maps/test/test_3_bg.xml → data/data/maps/test/test_3_bg.xml


+ 0 - 0
output/data/maps/test/test_text.lua → data/data/maps/test/test_text.lua


+ 0 - 0
output/data/maps/test/test_text.xml → data/data/maps/test/test_text.xml


+ 0 - 0
output/data/models/ffvii/battle/stages/reactor_1.material → data/data/models/ffvii/battle/stages/reactor_1.material


+ 0 - 0
output/data/models/ffvii/battle/stages/reactor_1.mesh → data/data/models/ffvii/battle/stages/reactor_1.mesh


Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff