소스 검색

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 3 년 전
부모
커밋
ed7b4ef6cf
100개의 변경된 파일536개의 추가작업 그리고 729개의 파일을 삭제
  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;

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 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


이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.