Parcourir la source

Resource manager re-organized. Each resource type now has it's own resource group.

Reorganization in the data folder to account for the new resource directory structure. Changes in the installer to implement those changes in the generated files. Battle model textures can now coexist along th field model ones.
Iñigo Valentin il y a 3 ans
Parent
commit
f7b6997084
70 fichiers modifiés avec 459 ajouts et 390 suppressions
  1. 1 1
      data/data/audio/musics/README.txt
  2. 1 1
      data/data/audio/sounds/README.txt
  3. 0 0
      data/data/config/config.cfg
  4. 0 10
      data/data/fonts.xml
  5. 10 0
      data/data/fonts/_fonts.xml
  6. 1 1
      data/data/fonts/ffvii.xml
  7. 1 1
      data/data/fonts/ffvii_digits.xml
  8. 1 1
      data/data/fonts/ffvii_en.xml
  9. 1 1
      data/data/fonts/ffvii_jp.xml
  10. 1 1
      data/data/fonts/ffvii_menu.xml
  11. 1 1
      data/data/fonts/ffvii_timer.xml
  12. 0 0
      data/data/gamedata/README.txt
  13. BIN
      data/data/images/empty.png
  14. 0 4
      data/data/maps.xml
  15. 10 0
      data/data/models/battle/characters/README.txt
  16. 10 0
      data/data/models/battle/enemies/README.txt
  17. 9 0
      data/data/models/battle/scenes/README.txt
  18. 0 0
      data/data/models/fields/README.txt
  19. 0 6
      data/data/musics.xml
  20. 0 0
      data/data/screens/_screens.xml
  21. 2 2
      data/data/screens/begin_menu/begin_menu.xml
  22. 1 1
      data/data/screens/dialog/prototypes.xml
  23. 18 18
      data/data/screens/equip_menu/equip_menu.xml
  24. 26 26
      data/data/screens/item_menu/item_menu.xml
  25. 1 1
      data/data/screens/item_menu/prototypes.xml
  26. 11 11
      data/data/screens/main_menu/main_menu.xml
  27. 2 2
      data/data/screens/main_menu/prototypes.xml
  28. 86 86
      data/data/screens/materia_menu/materia_menu.xml
  29. 3 3
      data/data/screens/name_menu/name_menu.xml
  30. 1 1
      data/data/screens/pause_menu/pause_menu.xml
  31. 8 8
      data/data/screens/prototypes.xml
  32. 3 3
      data/data/screens/save_menu/prototypes.xml
  33. 1 1
      data/data/screens/save_menu/save_menu.xml
  34. 12 12
      data/data/scripts/_scripts.xml
  35. 4 4
      data/data/scripts/menu/equip_menu.lua
  36. 5 5
      data/data/scripts/menu/item_menu.lua
  37. 1 1
      data/data/scripts/menu/main_menu.lua
  38. 10 10
      data/data/scripts/menu/materia_menu.lua
  39. 1 1
      data/data/scripts/menu/name_menu.lua
  40. 1 1
      data/data/scripts/menu/save_menu.lua
  41. 0 4
      data/data/sounds.xml
  42. 0 0
      data/data/texts/_texts.xml
  43. 1 1
      src/common/VGearsResource.h
  44. 2 2
      src/core/AudioManager.cpp
  45. 7 3
      src/core/Background2D.cpp
  46. 15 0
      src/core/Background2D.h
  47. 7 12
      src/core/BattleManager.cpp
  48. 1 1
      src/core/DebugDraw.cpp
  49. 2 3
      src/core/DebugDraw.h
  50. 1 1
      src/core/Enemy.cpp
  51. 14 1
      src/core/EntityModel.cpp
  52. 4 1
      src/core/EntityModel.h
  53. 14 2
      src/core/ScriptManager.cpp
  54. 2 2
      src/core/ScriptManagerBinds.h
  55. 2 2
      src/core/TextHandler.cpp
  56. 2 2
      src/core/UiManager.cpp
  57. 1 1
      src/core/UiManager.h
  58. 3 3
      src/core/UiSprite.cpp
  59. 2 2
      src/core/UiTextArea.cpp
  60. 2 4
      src/core/UiWidget.cpp
  61. 1 1
      src/core/XmlFontsFile.cpp
  62. 3 3
      src/core/XmlMapFile.cpp
  63. 18 14
      src/installer/BattleDataInstaller.cpp
  64. 34 26
      src/installer/DataInstaller.cpp
  65. 17 28
      src/installer/FieldDataInstaller.cpp
  66. 11 11
      src/installer/MediaDataInstaller.cpp
  67. 1 1
      src/installer/decompiler/field/instruction/FieldModuleInstruction.cpp
  68. 35 9
      src/main.cpp
  69. 5 12
      src/map/VGearsBackground2DFile.cpp
  70. 8 13
      src/map/VGearsBackground2DFile.h

+ 1 - 1
data/data/audio/music/README.txt → data/data/audio/musics/README.txt

@@ -2,5 +2,5 @@ This directory is intentionally empty. It will be populated by the data installe
 
 Once the data installation is complete, musics files will be installed here. They will have very
 un-descriptive file names, and there is no metadata in them, such as titles. But, if you want to
-find a specific one, a looc at the file data/musics.xml (also generated by the installer) may help
+find a specific one, a look at the file _musics.xml (also generated by the installer) may help
 you. There, some files in this folder may be referenced by a friendlier name.

+ 1 - 1
data/data/audio/sound/README.txt → data/data/audio/sounds/README.txt

@@ -2,5 +2,5 @@ This directory is intentionally empty. It will be populated by the data installe
 
 Once the data installation is complete, sound files will be installed here. They will have very
 un-descriptive file names, and there is no metadata in them, such as titles. But, if you want to
-find a specific one, a looc at the file data/sounds.xml (also generated by the installer) may help
+find a specific one, a look at the file _sounds.xml (also generated by the installer) may help
 you. There, some files in this folder may be referenced by a friendlier name.

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


+ 0 - 10
data/data/fonts.xml

@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<fonts>
-    <font file_name="fonts/ffvii_en.xml" />
-    <font file_name="fonts/ffvii_jp.xml" />
-    <font file_name="fonts/ffvii_menu.xml" />
-    <font file_name="fonts/ffvii_digits.xml" />
-    <font file_name="fonts/ffvii_timer.xml" />
-    <font file_name="fonts/ffvii.xml" />
-    <font file_name="fonts/ffvii.xml" />
-</fonts>

+ 10 - 0
data/data/fonts/_fonts.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<fonts>
+    <font file_name="ffvii_en.xml" />
+    <font file_name="ffvii_jp.xml" />
+    <font file_name="ffvii_menu.xml" />
+    <font file_name="ffvii_digits.xml" />
+    <font file_name="ffvii_timer.xml" />
+    <font file_name="ffvii.xml" />
+    <font file_name="ffvii.xml" />
+</fonts>

+ 1 - 1
data/data/fonts/ffvii.xml

@@ -1,4 +1,4 @@
-<font name="FFVIIFont" language="English" image="fonts/ffvii_en.png" image_size="256 256" height="16">
+<font name="FFVIIFont" language="English" image="ffvii_en.png" image_size="256 256" height="16">
     <char name=" " x="0" y="0" width="12" height="12" pre="0" post="-9" />
     <char name="!" x="12" y="0" width="12" height="12" pre="2" post="-7" />
     <char name="&quot;" x="24" y="0" width="12" height="12" pre="2" post="-4" />

+ 1 - 1
data/data/fonts/ffvii_digits.xml

@@ -1,4 +1,4 @@
-<font name="FFVIIMenuDigits" image="fonts/ffvii_digits.png" image_size="128 8" height="8">
+<font name="FFVIIMenuDigits" image="ffvii_digits.png" image_size="128 8" height="8">
     <char name="0" x="0" y="0" width="7" height="8" pre="0" post="0" />
     <char name="1" x="8" y="0" width="7" height="8" pre="0" post="0" />
     <char name="2" x="16" y="0" width="7" height="8" pre="0" post="0" />

+ 1 - 1
data/data/fonts/ffvii_en.xml

@@ -1,4 +1,4 @@
-<font name="FFVIIFont" language="English" image="fonts/ffvii_en.png" image_size="256 256" height="16">
+<font name="FFVIIFont" language="English" image="ffvii_en.png" image_size="256 256" height="16">
     <char name=" " x="0" y="0" width="12" height="12" pre="0" post="-9" />
     <char name="!" x="12" y="0" width="12" height="12" pre="0" post="-9" />
     <char name="&quot;" x="24" y="0" width="12" height="12" pre="0" post="-6" />

+ 1 - 1
data/data/fonts/ffvii_jp.xml

@@ -1,4 +1,4 @@
-<font name="FFVIIFont" language="Japanese" image="fonts/ffvii_jp.png" image_size="512 256" height="16">
+<font name="FFVIIFont" language="Japanese" image="ffvii_jp.png" image_size="512 256" height="16">
     <char name="バ" x="0" y="0" width="12" height="12" pre="0" post="1" />
     <char name="ば" x="12" y="0" width="12" height="12" pre="0" post="1" />
     <char name="ビ" x="24" y="0" width="12" height="12" pre="0" post="-1" />

+ 1 - 1
data/data/fonts/ffvii_menu.xml

@@ -1,4 +1,4 @@
-<font name="FFVIIMenuFont" image="fonts/ffvii_menu.png" image_size="128 256" height="16">
+<font name="FFVIIMenuFont" image="ffvii_menu.png" image_size="128 256" height="16">
     <char name="0" x="24" y="0" width="8" height="16" pre="0" post="0" />
     <char name="1" x="32" y="0" width="8" height="16" pre="0" post="0" />
     <char name="2" x="40" y="0" width="8" height="16" pre="0" post="0" />

+ 1 - 1
data/data/fonts/ffvii_timer.xml

@@ -1,4 +1,4 @@
-<font name="FFVIITimerFont" image="fonts/ffvii_timer.png" image_size="128 48" height="21">
+<font name="FFVIITimerFont" image="ffvii_timer.png" image_size="128 48" height="21">
     <char name=":" x="16" y="0" width="8" height="21" pre="0" post="0" />
     <char name=";" x="24" y="0" width="8" height="21" pre="0" post="0" />
     <char name="0" x="32" y="0" width="16" height="21" pre="0" post="0" />

+ 0 - 0
data/data/game/README.txt → data/data/gamedata/README.txt


BIN
data/data/images/empty.png


+ 0 - 4
data/data/maps.xml

@@ -1,4 +0,0 @@
-<!-- This file is to be overwritten by the installer -->
-<maps>
-    <map name="example" file_name="fields/example/map.xml" />
-</maps>

+ 10 - 0
data/data/models/battle/characters/README.txt

@@ -0,0 +1,10 @@
+This directory is intentionally empty. It will be populated by the data installer.
+
+Once the data installation is complete, a lot of files will be installed here. They contain
+information about 3D models and textures for the battle playable characters. Most of them will have
+very cryptic names. If you are a modder and want to manually edit the 3D models, I have a few
+pointers for you:
+
+ 1. Good luck.
+ 2. Make backups.
+ 3. Document everything! If you are succesfull, I would love to know how you did it.

+ 10 - 0
data/data/models/battle/enemies/README.txt

@@ -0,0 +1,10 @@
+This directory is intentionally empty. It will be populated by the data installer.
+
+Once the data installation is complete, a lot of files will be installed here. They contain
+information about 3D models and textures for the battle enemies. Most of them will have very
+cryptic names. If you are a modder and want to manually edit the 3D models, I have a few pointers
+for you:
+
+ 1. Good luck.
+ 2. Make backups.
+ 3. Document everything! If you are succesfull, I would love to know how you did it.

+ 9 - 0
data/data/models/battle/scenes/README.txt

@@ -0,0 +1,9 @@
+This directory is intentionally empty. It will be populated by the data installer.
+
+Once the data installation is complete, a lot of files will be installed here. They contain
+information about 3D battle backgrounds models and textures. Most of them will have very cryptic
+names. If you are a modder and want to manually edit the 3D models, I have a few pointers for you:
+
+ 1. Good luck.
+ 2. Make backups.
+ 3. Document everything! If you are succesfull, I would love to know how you did it.

+ 0 - 0
data/data/models/fields/entities/README.txt → data/data/models/fields/README.txt


+ 0 - 6
data/data/musics.xml

@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<musics>
-   <music name="loop1" file_name="musics/ffvii_main_theme.ogg" loop="0" />
-   <music name="loop2" file_name="musics/loop2.ogg" loop="0" />
-   <music name="loop3" file_name="musics/loop3.ogg" loop="0" />
-</musics>

+ 0 - 0
data/data/screens.xml → data/data/screens/_screens.xml


+ 2 - 2
data/data/screens/begin_menu/begin_menu.xml

@@ -1,7 +1,7 @@
 <screen name="BeginMenu" script="scripts/menu/begin_menu.lua" visible="true">
     <widget name="Container" width="368" height="240" origin_x="50%" origin_y="50%" align="center" valign="middle" scale="2.61 3" visible="true">
-        <sprite name="Sword" image="images/other/begin_menu.png" x="111" y="84" width="170" height="150" visible="true" />
-        <sprite name="Cursor" image="images/icons/cursor.png" x="132" y="99" width="24" height="16" visible="true">
+        <sprite name="Sword" image="other/begin_menu.png" x="111" y="84" width="170" height="150" visible="true" />
+        <sprite name="Cursor" image="icons/cursor.png" x="132" y="99" width="24" height="16" visible="true">
             <animation name="Position1" length="0" y="0:80" />
             <animation name="Position2" length="0" y="0:92" />
             <animation name="Position3" length="0" y="0:110" />

+ 1 - 1
data/data/screens/dialog/prototypes.xml

@@ -23,6 +23,6 @@
                 scissor_area="0:0 0 100% 100%,100%:50%-5 50%-5 50%+5 50%+5"
             />
         </text_area>
-        <sprite name="Cursor" image="images/icons/cursor.png" x="15" y="6" width="24" height="16" visible="false" />
+        <sprite name="Cursor" image="icons/cursor.png" x="15" y="6" width="24" height="16" visible="false" />
     </prototype>
 </prototypes>

+ 18 - 18
data/data/screens/equip_menu/equip_menu.xml

@@ -2,17 +2,17 @@
     <widget name="Container" width="40%" height="40%" x="0" y="0" align="left" valign="top" scale="2.5 2.5" visible="true">
         <widget name="Character" width="100%" height="70" visible="true">
             <prototype name="Window"/>
-            <sprite name="Portrait" image="images/other/choco.png" x="10" y="12" width="42" height="48" visible="true" />
+            <sprite name="Portrait" image="other/choco.png" x="10" y="12" width="42" height="48" visible="true" />
             <widget name="Data" x="66" y="14" width="100%-66" height="100%-14" visible="true">
                 <prototype name="MenuCharacterData" />
             </widget>
-            <sprite name="WpnIcon" image="images/icons/item_weapon_0.png" x="170" y="3" width="18" height="18" visible="true" />
-            <sprite name="ArmIcon" image="images/icons/item_armor.png" x="170" y="23" width="18" height="18" visible="true" />
-            <sprite name="AccIcon" image="images/icons/item_accessory.png" x="170" y="43" width="18" height="18" visible="true" />
+            <sprite name="WpnIcon" image="icons/item_weapon_0.png" x="170" y="3" width="18" height="18" visible="true" />
+            <sprite name="ArmIcon" image="icons/item_armor.png" x="170" y="23" width="18" height="18" visible="true" />
+            <sprite name="AccIcon" image="icons/item_accessory.png" x="170" y="43" width="18" height="18" visible="true" />
             <text_area name="WpnLbl" x="192" y="8" font="FFVIIFont" visible="true" />
             <text_area name="ArmLbl" x="192" y="28" font="FFVIIFont" visible="true" />
             <text_area name="AccLbl" x="192" y="48" font="FFVIIFont" visible="true" />
-            <sprite name="Cursor" image="images/icons/cursor.png" x="150" y="10" width="24" height="17" visible="true">
+            <sprite name="Cursor" image="icons/cursor.png" x="150" y="10" width="24" height="17" visible="true">
                 <animation name="Position1" length="0" y="0:10" />
                 <animation name="Position2" length="0" y="0:30" />
                 <animation name="Position3" length="0" y="0:50" />
@@ -34,18 +34,18 @@
             <text_area name="Growth1" text_name="EquipMenuGrowth1" x="75" y="28" font="FFVIIFont" visible="true" />
             <text_area name="Growth2" text_name="EquipMenuGrowth2" x="75" y="28" font="FFVIIFont" visible="false" />
             <text_area name="Growth3" text_name="EquipMenuGrowth3" x="75" y="28" font="FFVIIFont" visible="false" />
-            <sprite name="Slot1" image="images/icons/materia_slot.png" x="75" y="8" width="16" height="16" visible="true"/>
-            <sprite name="Slot2" image="images/icons/materia_slot.png" x="92" y="8" width="16" height="16" visible="true"/>
-            <sprite name="Link1" image="images/icons/materia_slot_link.png" x="87" y="8" width="9" height="16" visible="true"/>
-            <sprite name="Slot3" image="images/icons/materia_slot.png" x="109" y="8" width="16" height="16" visible="true"/>
-            <sprite name="Slot4" image="images/icons/materia_slot.png" x="126" y="8" width="16" height="16" visible="true"/>
-            <sprite name="Link2" image="images/icons/materia_slot_link.png" x="121" y="8" width="9" height="16" visible="true"/>
-            <sprite name="Slot5" image="images/icons/materia_slot.png" x="143" y="8" width="16" height="16" visible="true"/>
-            <sprite name="Slot6" image="images/icons/materia_slot.png" x="160" y="8" width="16" height="16" visible="true"/>
-            <sprite name="Link3" image="images/icons/materia_slot_link.png" x="155" y="8" width="9" height="16" visible="true"/>
-            <sprite name="Slot7" image="images/icons/materia_slot.png" x="177" y="8" width="16" height="16" visible="true"/>
-            <sprite name="Slot8" image="images/icons/materia_slot.png" x="194" y="8" width="16" height="16" visible="true"/>
-            <sprite name="Link4" image="images/icons/materia_slot_link.png" x="189" y="8" width="9" height="16" visible="true"/>
+            <sprite name="Slot1" image="icons/materia_slot.png" x="75" y="8" width="16" height="16" visible="true"/>
+            <sprite name="Slot2" image="icons/materia_slot.png" x="92" y="8" width="16" height="16" visible="true"/>
+            <sprite name="Link1" image="icons/materia_slot_link.png" x="87" y="8" width="9" height="16" visible="true"/>
+            <sprite name="Slot3" image="icons/materia_slot.png" x="109" y="8" width="16" height="16" visible="true"/>
+            <sprite name="Slot4" image="icons/materia_slot.png" x="126" y="8" width="16" height="16" visible="true"/>
+            <sprite name="Link2" image="icons/materia_slot_link.png" x="121" y="8" width="9" height="16" visible="true"/>
+            <sprite name="Slot5" image="icons/materia_slot.png" x="143" y="8" width="16" height="16" visible="true"/>
+            <sprite name="Slot6" image="icons/materia_slot.png" x="160" y="8" width="16" height="16" visible="true"/>
+            <sprite name="Link3" image="icons/materia_slot_link.png" x="155" y="8" width="9" height="16" visible="true"/>
+            <sprite name="Slot7" image="icons/materia_slot.png" x="177" y="8" width="16" height="16" visible="true"/>
+            <sprite name="Slot8" image="icons/materia_slot.png" x="194" y="8" width="16" height="16" visible="true"/>
+            <sprite name="Link4" image="icons/materia_slot_link.png" x="189" y="8" width="9" height="16" visible="true"/>
         </widget>
         <widget name="SlotsEmpty" x="0" y="94" width="230" height="50" visible="false">
             <prototype name="Window" />
@@ -93,7 +93,7 @@
             <text_area name="Item8" x="15" y="67%" font="FFVIIFont" visible="true" />
             <text_area name="Item9" x="15" y="76%" font="FFVIIFont" visible="true" />
             <text_area name="Item10" x="15" y="85%" font="FFVIIFont" visible="true" />
-            <sprite name="Cursor" image="images/icons/cursor.png" x="-10" y="8" width="24" height="17" visible="true">
+            <sprite name="Cursor" image="icons/cursor.png" x="-10" y="8" width="24" height="17" visible="true">
                 <animation name="Position1" length="0" y="0:4%+3" />
                 <animation name="Position2" length="0" y="0:13%+3" />
                 <animation name="Position3" length="0" y="0:22%+3" />

+ 26 - 26
data/data/screens/item_menu/item_menu.xml

@@ -5,7 +5,7 @@
             <text_area name="ItemText" x="36" y="6" text_name="ItemMenuUse" font="FFVIIFont" visible="true" />
             <text_area name="ItemText" x="96" y="6" text_name="ItemMenuOrder" font="FFVIIFont" visible="true" />
             <text_area name="ItemText" x="156" y="6" text_name="ItemMenuKey" font="FFVIIFont" visible="true" />
-            <sprite name="Cursor" image="images/icons/cursor.png" x="6" y="6" width="24" height="17" visible="true">
+            <sprite name="Cursor" image="icons/cursor.png" x="6" y="6" width="24" height="17" visible="true">
                 <animation name="Position1" length="0" x="0:6" />
                 <animation name="Position2" length="0" x="0:66" />
                 <animation name="Position3" length="0" x="0:126" />
@@ -22,106 +22,106 @@
         <widget name="ItemMenuCharacters" x="0" y="48" width="50%" height="100%-48" visible="true">
             <prototype name="Window" />
             <widget name="Character1" x="0" y="0" width="100%" height="55" visible="true">
-                <sprite name="Portrait" image="images/other/choco.png" x="10" y="12" width="42" height="48" visible="true" />
+                <sprite name="Portrait" image="other/choco.png" x="10" y="12" width="42" height="48" visible="true" />
                 <widget name="Data" x="66" y="14" width="100%" height="100%" visible="true">
                     <prototype name="MenuCharacterData" />
                 </widget>
             </widget>
             <widget name="Character2" x="0" y="55" width="100%" height="55" visible="true">
-                <sprite name="Portrait" image="images/other/choco.png" x="10" y="12" width="42" height="48" visible="true" />
+                <sprite name="Portrait" image="other/choco.png" x="10" y="12" width="42" height="48" visible="true" />
                 <widget name="Data" x="66" y="14" width="100%" height="100%" visible="true">
                     <prototype name="MenuCharacterData" />
                 </widget>
             </widget>
             <widget name="Character3" x="0" y="110" width="100%" height="55" visible="true">
-                <sprite name="Portrait" image="images/other/choco.png" x="10" y="12" width="42" height="48" visible="true" />
+                <sprite name="Portrait" image="other/choco.png" x="10" y="12" width="42" height="48" visible="true" />
                 <widget name="Data" x="66" y="14" width="100%" height="100%" visible="true">
                     <prototype name="MenuCharacterData" />
                 </widget>
             </widget>
-            <sprite name="Cursor" image="images/icons/cursor.png" x="-11" y="6" width="24" height="17" visible="true">
+            <sprite name="Cursor" image="icons/cursor.png" x="-11" y="6" width="24" height="17" visible="true">
                 <animation name="Position1" length="0" y="0:25" />
                 <animation name="Position2" length="0" y="0:80" />
                 <animation name="Position3" length="0" y="0:135" />
             </sprite>
             <widget name="CursorMultiple" x="-11" y="0" width="24" height="150" visible="false">
-                <sprite name="Cursor1" image="images/icons/cursor.png" x="0" y="25" width="24" height="17" visible="true"/>
-                <sprite name="Cursor2" image="images/icons/cursor.png" x="0" y="80" width="24" height="17" visible="true"/>
-                <sprite name="Cursor3" image="images/icons/cursor.png" x="0" y="135" width="24" height="17" visible="true"/>
+                <sprite name="Cursor1" image="icons/cursor.png" x="0" y="25" width="24" height="17" visible="true"/>
+                <sprite name="Cursor2" image="icons/cursor.png" x="0" y="80" width="24" height="17" visible="true"/>
+                <sprite name="Cursor3" image="icons/cursor.png" x="0" y="135" width="24" height="17" visible="true"/>
             </widget>
         </widget>
         <widget name="ItemList" x="50%" y="48" width="50%" height="100%-48" visible="true">
             <prototype name="Window" />
 
-            <sprite name="ScrollBg" x="100%-12" y="2" width="10" height="100%-6" colour="0.2 0.2 0.2" alpha="0.8" visible="true"/>
-            <sprite name="Scroll" x="100%-11" y="3" width="8" height="18" colour="0.7 0.7 0.7" visible="true"/>
+            <widged name="ScrollBg" x="100%-12" y="2" width="10" height="100%-6" colour="0.2 0.2 0.2" alpha="0.8" visible="true"/>
+            <widget name="Scroll" x="100%-11" y="3" width="8" height="18" colour="0.7 0.7 0.7" visible="true"/>
 
-            <sprite name="Icon1" image="images/icons/item_item.png" x="8" y="5%-2" width="13" height="15" visible="true" />
+            <sprite name="Icon1" image="icons/item_item.png" x="8" y="5%-2" width="13" height="15" visible="true" />
             <text_area name="Name1" x="30" y="5%" font="FFVIIFont" visible="true" />
             <text_area name="Colon1" x="130" y="5%" font="FFVIIFont" visible="true" />
             <text_area name="Qty1" x="135" y="5%" font="FFVIIFont" visible="true" />
 
-            <sprite name="Icon2" image="images/icons/item_item.png" x="8" y="12%-2" width="13" height="15" visible="true" />
+            <sprite name="Icon2" image="icons/item_item.png" x="8" y="12%-2" width="13" height="15" visible="true" />
             <text_area name="Name2" x="30" y="12%" font="FFVIIFont" visible="true" />
             <text_area name="Colon2" x="130" y="12%" font="FFVIIFont" visible="true" />
             <text_area name="Qty2" x="135" y="12%" font="FFVIIFont" visible="true" />
 
-            <sprite name="Icon3" image="images/icons/item_item.png" x="8" y="19%-2" width="13" height="15" visible="true" />
+            <sprite name="Icon3" image="icons/item_item.png" x="8" y="19%-2" width="13" height="15" visible="true" />
             <text_area name="Name3" x="30" y="19%" font="FFVIIFont" visible="true" />
             <text_area name="Colon3" x="130" y="19%" font="FFVIIFont" visible="true" />
             <text_area name="Qty3" x="135" y="19%" font="FFVIIFont" visible="true" />
 
-            <sprite name="Icon4" image="images/icons/item_item.png" x="8" y="26%-2" width="13" height="15" visible="true" />
+            <sprite name="Icon4" image="icons/item_item.png" x="8" y="26%-2" width="13" height="15" visible="true" />
             <text_area name="Name4" x="30" y="26%" font="FFVIIFont" visible="true" />
             <text_area name="Colon4" x="130" y="26%" font="FFVIIFont" visible="true" />
             <text_area name="Qty4" x="135" y="26%" font="FFVIIFont" visible="true" />
 
-            <sprite name="Icon5" image="images/icons/item_item.png" x="8" y="33%-2" width="13" height="15" visible="true" />
+            <sprite name="Icon5" image="icons/item_item.png" x="8" y="33%-2" width="13" height="15" visible="true" />
             <text_area name="Name5" x="30" y="33%" font="FFVIIFont" visible="true" />
             <text_area name="Colon5" x="130" y="33%" font="FFVIIFont" visible="true" />
             <text_area name="Qty5" x="135" y="33%" font="FFVIIFont" visible="true" />
 
-            <sprite name="Icon6" image="images/icons/item_item.png" x="8" y="40%-2" width="13" height="15" visible="true" />
+            <sprite name="Icon6" image="icons/item_item.png" x="8" y="40%-2" width="13" height="15" visible="true" />
             <text_area name="Name6" x="30" y="40%" font="FFVIIFont" visible="true" />
             <text_area name="Colon6" x="130" y="40%" font="FFVIIFont" visible="true" />
             <text_area name="Qty6" x="135" y="40%" font="FFVIIFont" visible="true" />
 
-            <sprite name="Icon7" image="images/icons/item_item.png" x="8" y="47%-2" width="13" height="15" visible="true" />
+            <sprite name="Icon7" image="icons/item_item.png" x="8" y="47%-2" width="13" height="15" visible="true" />
             <text_area name="Name7" x="30" y="47%" font="FFVIIFont" visible="true" />
             <text_area name="Colon7" x="130" y="47%" font="FFVIIFont" visible="true" />
             <text_area name="Qty7" x="135" y="47%" font="FFVIIFont" visible="true" />
 
-            <sprite name="Icon8" image="images/icons/item_item.png" x="8" y="54%-2" width="13" height="15" visible="true" />
+            <sprite name="Icon8" image="icons/item_item.png" x="8" y="54%-2" width="13" height="15" visible="true" />
             <text_area name="Name8" x="30" y="54%" font="FFVIIFont" visible="true" />
             <text_area name="Colon8" x="130" y="54%" font="FFVIIFont" visible="true" />
             <text_area name="Qty8" x="135" y="54%" font="FFVIIFont" visible="true" />
 
-            <sprite name="Icon9" image="images/icons/item_item.png" x="8" y="61%-2" width="13" height="15" visible="true" />
+            <sprite name="Icon9" image="icons/item_item.png" x="8" y="61%-2" width="13" height="15" visible="true" />
             <text_area name="Name9" x="30" y="61%" font="FFVIIFont" visible="true" />
             <text_area name="Colon9" x="130" y="61%" font="FFVIIFont" visible="true" />
             <text_area name="Qty9" x="135" y="61%" font="FFVIIFont" visible="true" />
 
-            <sprite name="Icon10" image="images/icons/item_item.png" x="8" y="68%-2" width="13" height="15" visible="true" />
+            <sprite name="Icon10" image="icons/item_item.png" x="8" y="68%-2" width="13" height="15" visible="true" />
             <text_area name="Name10" x="30" y="68%" font="FFVIIFont" visible="true" />
             <text_area name="Colon10" x="130" y="68%" font="FFVIIFont" visible="true" />
             <text_area name="Qty10" x="135" y="68%" font="FFVIIFont" visible="true" />
 
-            <sprite name="Icon11" image="images/icons/item_item.png" x="8" y="75%-2" width="13" height="15" visible="true" />
+            <sprite name="Icon11" image="icons/item_item.png" x="8" y="75%-2" width="13" height="15" visible="true" />
             <text_area name="Name11" x="30" y="75%" font="FFVIIFont" visible="true" />
             <text_area name="Colon11" x="130" y="75%" font="FFVIIFont" visible="true" />
             <text_area name="Qty11" x="135" y="75%" font="FFVIIFont" visible="true" />
 
-            <sprite name="Icon12" image="images/icons/item_item.png" x="8" y="82%-2" width="13" height="15" visible="true" />
+            <sprite name="Icon12" image="icons/item_item.png" x="8" y="82%-2" width="13" height="15" visible="true" />
             <text_area name="Name12" x="30" y="82%" font="FFVIIFont" visible="true" />
             <text_area name="Colon12" x="130" y="82%" font="FFVIIFont" visible="true" />
             <text_area name="Qty12" x="135" y="82%" font="FFVIIFont" visible="true" />
 
-            <sprite name="Icon13" image="images/icons/item_item.png" x="8" y="89%-2" width="13" height="15" visible="true" />
+            <sprite name="Icon13" image="icons/item_item.png" x="8" y="89%-2" width="13" height="15" visible="true" />
             <text_area name="Name13" x="30" y="89%" font="FFVIIFont" visible="true" />
             <text_area name="Colon13" x="130" y="89%" font="FFVIIFont" visible="true" />
             <text_area name="Qty13" x="135" y="89%" font="FFVIIFont" visible="true" />
 
-            <sprite name="Cursor" image="images/icons/cursor.png" x="-11" y="5%+2" width="24" height="17" visible="true">
+            <sprite name="Cursor" image="icons/cursor.png" x="-11" y="5%+2" width="24" height="17" visible="true">
                 <animation name="Position1" length="0" y="0:5%+2" />
                 <animation name="Position2" length="0" y="0:12%+2" />
                 <animation name="Position3" length="0" y="0:19%+2" />
@@ -149,7 +149,7 @@
             <text_area name="Order6" x="12" y="66" text_name="ItemMenuOrder6" font="FFVIIFont" visible="true" />
             <text_area name="Order7" x="12" y="78" text_name="ItemMenuOrder7" font="FFVIIFont" visible="true" />
             <text_area name="Order8" x="12" y="90" text_name="ItemMenuOrder8" font="FFVIIFont" visible="true" />
-            <sprite name="Cursor" image="images/icons/cursor.png" x="-12" y="6" width="24" height="17" visible="true">
+            <sprite name="Cursor" image="icons/cursor.png" x="-12" y="6" width="24" height="17" visible="true">
                 <animation name="Position1" length="0" y="0:6" />
                 <animation name="Position2" length="0" y="0:18" />
                 <animation name="Position3" length="0" y="0:30" />
@@ -191,7 +191,7 @@
             <text_area name="KeyItem12-2" x="60%" y="82%" font="FFVIIFont" visible="true" />
             <text_area name="KeyItem13-1" x="10%" y="89%" font="FFVIIFont" visible="true" />
             <text_area name="KeyItem13-2" x="60%" y="89%" font="FFVIIFont" visible="true" />
-            <sprite name="Cursor" image="images/icons/cursor.png" x="-11" y="6" width="24" height="17" visible="true">
+            <sprite name="Cursor" image="icons/cursor.png" x="-11" y="6" width="24" height="17" visible="true">
                 <animation name="Position1-1" length="0" x="0:10%-24" y="0:5%+1" />
                 <animation name="Position1-2" length="0" x="0:60%-24" y="0:5%+1" />
                 <animation name="Position2-1" length="0" x="0:10%-24" y="0:12%+1" />

+ 1 - 1
data/data/screens/item_menu/prototypes.xml

@@ -12,7 +12,7 @@
         <sprite name="HpLineShadow" x="18" y="32" width="60" height="1" colour="0 0 0" visible="true" />
         <text_area name="Mp" x="0" y="26" text_name="CharacterDataMp" colour="0 0.9 0.9" font="FFVIIMenuFont" visible="true" />
         <text_area name="MpCurrent" x="18" y="33" text_name="CharacterDataMpCurrent" font="FFVIIMenuDigits" visible="true" />
-        <sprite name="MpSlash" image="images/icons/slash.png" x="46" y="33" width="4" height="8" visible="true" />
+        <sprite name="MpSlash" image="icons/slash.png" x="46" y="33" width="4" height="8" visible="true" />
         <text_area name="MpMax" x="50" y="33" text_name="CharacterDataMpMax" font="FFVIIMenuDigits" visible="true" />
         <sprite name="MpLine" x="18" y="41" width="60" height="1" colour="0.3 0 0" visible="true" />
         <sprite name="MpLineCurrent" x="18" y="41" width="60" height="1" colours="0 1 0.5, 0.78 0.78 0.78, 0.78 0.78 0.78, 0 1 0.5" visible="true" />

+ 11 - 11
data/data/screens/main_menu/main_menu.xml

@@ -5,7 +5,7 @@
             <animation name="Appear" length="0.3" x="0:105%,0.3:5%" />
             <animation name="Disappear" length="0.3" x="0:5%,0.3:105%" />
             <widget name="Character1" x="2%" y="2%" width="100%" height="30%" visible="true">
-                <sprite name="Portrait" image="images/other/choco.png" x="5" y="12" width="49" height="56" visible="true">
+                <sprite name="Portrait" image="other/choco.png" x="5" y="12" width="49" height="56" visible="true">
                     <animation name="RowFront" length="0" x="0:5" />
                     <animation name="RowBack" length="0" x="0:25" />
                 </sprite>
@@ -13,17 +13,17 @@
                     <prototype name="MenuCharacterData" />
                 </widget>
                 <text_area name="NextLevelText" x="177" y="17" text_name="CharacterDataNextLevel" font="FFVIIFont" visible="true" />
-                <sprite name="NextLevelBar" image="images/icons/menu_bar.png" x="182" y="28" width="64" height="8" visible="true" />
+                <sprite name="NextLevelBar" image="icons/menu_bar.png" x="182" y="28" width="64" height="8" visible="true" />
                 <sprite name="NextLevelLinePart1" x="183" y="29" width="20" height="3" colours="0.5 0.5 0.5, 0.5 0.5 0.5, 0.5 0.125 0.125, 0.5 0.125 0.125" alpha="0.8" visible="false" />
                 <sprite name="NextLevelLinePart2" x="183" y="32" width="20" height="3" colours="0.5 0.125 0.125, 0.5 0.125 0.125, 0 0 0, 0 0 0" alpha="0.8" visible="false" />
                 <text_area name="LimitLevelText" x="177" y="38" text_name="CharacterDataLimitLevel" font="FFVIIFont" visible="true" />
-                <sprite name="LimitLevelBar" image="images/icons/menu_bar.png" x="183" y="49" width="64" height="8" visible="true" />
+                <sprite name="LimitLevelBar" image="icons/menu_bar.png" x="183" y="49" width="64" height="8" visible="true" />
                 <text_area name="LimitLevel" x="230" y="40" text_name="CharacterDataLimitLevelNumber" font="FFVIIMenuDigits" visible="true" />
                 <sprite name="LimitLinePart1" x="183" y="50" width="25" height="3" colours="0.5 0.5 0.5, 0.5 0.5 0.5, 0.5 0.125 0.31, 0.5 0.125 0.31" alpha="0.8" visible="false" />
                 <sprite name="LimitLinePart2" x="183" y="53" width="25" height="3" colours="0.5 0.125 0.31, 0.5 0.125 0.31, 0 0 0, 0 0 0" alpha="0.8" visible="false" />
             </widget>
             <widget name="Character2" x="2%" y="32%" width="100%" height="32%" visible="true">
-                <sprite name="Portrait" image="images/other/choco.png" x="5" y="12" width="56" height="56" visible="true">
+                <sprite name="Portrait" image="other/choco.png" x="5" y="12" width="56" height="56" visible="true">
                     <animation name="RowFront" length="0" x="0:5" />
                     <animation name="RowBack" length="0" x="0:25" />
                 </sprite>
@@ -31,17 +31,17 @@
                     <prototype name="MenuCharacterData" />
                 </widget>
                 <text_area name="NextLevelText" x="177" y="17" text_name="CharacterDataNextLevel" font="FFVIIFont" visible="true" />
-                <sprite name="NextLevelBar" image="images/icons/menu_bar.png" x="182" y="28" width="64" height="8" visible="true" />
+                <sprite name="NextLevelBar" image="icons/menu_bar.png" x="182" y="28" width="64" height="8" visible="true" />
                 <sprite name="NextLevelLinePart1" x="183" y="29" width="20" height="3" colours="0.5 0.5 0.5, 0.5 0.5 0.5, 0.5 0.125 0.125, 0.5 0.125 0.125" alpha="0.8" visible="false" />
                 <sprite name="NextLevelLinePart2" x="183" y="32" width="20" height="3" colours="0.5 0.125 0.125, 0.5 0.125 0.125, 0 0 0, 0 0 0" alpha="0.8" visible="false" />
                 <text_area name="LimitLevelText" x="177" y="38" text_name="CharacterDataLimitLevel" font="FFVIIFont" visible="true" />
-                <sprite name="LimitLevelBar" image="images/icons/menu_bar.png" x="183" y="49" width="64" height="8" visible="true" />
+                <sprite name="LimitLevelBar" image="icons/menu_bar.png" x="183" y="49" width="64" height="8" visible="true" />
                 <text_area name="LimitLevel" x="230" y="40" text_name="CharacterDataLimitLevelNumber" font="FFVIIMenuDigits" visible="true" />
                 <sprite name="LimitLinePart1" x="183" y="50" width="25" height="3" colours="0.5 0.5 0.5, 0.5 0.5 0.5, 0.5 0.125 0.31, 0.5 0.125 0.31" alpha="0.8" visible="false" />
                 <sprite name="LimitLinePart2" x="183" y="53" width="25" height="3" colours="0.5 0.125 0.31, 0.5 0.125 0.31, 0 0 0, 0 0 0" alpha="0.8" visible="false" />
             </widget>
             <widget name="Character3" x="2%" y="62%" width="100%" height="32%" visible="true">
-               <sprite name="Portrait" image="images/other/choco.png" x="5" y="12" width="56" height="56" visible="true">
+               <sprite name="Portrait" image="other/choco.png" x="5" y="12" width="56" height="56" visible="true">
                     <animation name="RowFront" length="0" x="0:5" />
                     <animation name="RowBack" length="0" x="0:25" />
                 </sprite>
@@ -49,16 +49,16 @@
                     <prototype name="MenuCharacterData" />
                 </widget>
                 <text_area name="NextLevelText" x="177" y="17" text_name="CharacterDataNextLevel" font="FFVIIFont" visible="true" />
-                <sprite name="NextLevelBar" image="images/icons/menu_bar.png" x="182" y="28" width="64" height="8" visible="true" />
+                <sprite name="NextLevelBar" image="icons/menu_bar.png" x="182" y="28" width="64" height="8" visible="true" />
                 <sprite name="NextLevelLinePart1" x="183" y="29" width="20" height="3" colours="0.5 0.5 0.5, 0.5 0.5 0.5, 0.5 0.125 0.125, 0.5 0.125 0.125" alpha="0.8" visible="false" />
                 <sprite name="NextLevelLinePart2" x="183" y="32" width="20" height="3" colours="0.5 0.125 0.125, 0.5 0.125 0.125, 0 0 0, 0 0 0" alpha="0.8" visible="false" />
                 <text_area name="LimitLevelText" x="177" y="38" text_name="CharacterDataLimitLevel" font="FFVIIFont" visible="true" />
-                <sprite name="LimitLevelBar" image="images/icons/menu_bar.png" x="183" y="49" width="64" height="8" visible="true" />
+                <sprite name="LimitLevelBar" image="icons/menu_bar.png" x="183" y="49" width="64" height="8" visible="true" />
                 <text_area name="LimitLevel" x="230" y="40" text_name="CharacterDataLimitLevelNumber" font="FFVIIMenuDigits" visible="true" />
                 <sprite name="LimitLinePart1" x="183" y="50" width="25" height="3" colours="0.5 0.5 0.5, 0.5 0.5 0.5, 0.5 0.125 0.31, 0.5 0.125 0.31" alpha="0.8" visible="false" />
                 <sprite name="LimitLinePart2" x="183" y="53" width="25" height="3" colours="0.5 0.125 0.31, 0.5 0.125 0.31, 0 0 0, 0 0 0" alpha="0.8" visible="false" />
             </widget>
-            <sprite name="Cursor" image="images/icons/cursor.png" x="0" y="2%+40" width="24" height="16" visible="false">
+            <sprite name="Cursor" image="icons/cursor.png" x="0" y="2%+40" width="24" height="16" visible="false">
                 <animation name="Position1" length="0" y="0:2%+40" />
                 <animation name="Position2" length="0" y="0:32%+40" />
                 <animation name="Position3" length="0" y="0:62%+40" />
@@ -77,7 +77,7 @@
             <text_area name="PHSText" x="16" y="102" text_name="MainMenuPHS" font="FFVIIFont" visible="true" />
             <text_area name="SaveText" x="16" y="114" text_name="MainMenuSave" font="FFVIIFont" visible="true" />
             <text_area name="Quit" x="16" y="126" text_name="MainMenuQuit" font="FFVIIFont" visible="true" />
-            <sprite name="Cursor" image="images/icons/cursor.png" x="-11" y="6" width="24" height="16" visible="true">
+            <sprite name="Cursor" image="icons/cursor.png" x="-11" y="6" width="24" height="16" visible="true">
                 <animation name="Position1" length="0" y="0:6" />
                 <animation name="Position2" length="0" y="0:18" />
                 <animation name="Position3" length="0" y="0:30" />

+ 2 - 2
data/data/screens/main_menu/prototypes.xml

@@ -5,14 +5,14 @@
         <text_area name="LvNumber" x="18" y="13" font="FFVIIMenuDigits" visible="true" />
         <text_area name="Hp" x="0" y="16" text_name="CharacterDataHp" colour="0 0.9 0.9" font="FFVIIMenuFont" visible="true" />
         <text_area name="HpCurrent" x="16" y="23" colour="0.9 0.9 0.9" font="FFVIIMenuDigits" visible="true" />
-        <sprite name="HpSlash" image="images/icons/slash.png" x="51" y="23" width="4" height="8" visible="true" />
+        <sprite name="HpSlash" image="icons/slash.png" x="51" y="23" width="4" height="8" visible="true" />
         <text_area name="HpMax" x="55" y="23" font="FFVIIMenuDigits" visible="true" />
         <sprite name="HpLine" x="16" y="31" width="72" height="1" colour="0.3 0 0" visible="true" />
         <sprite name="HpLineCurrent" x="16" y="31" width="72" height="1" colours="0 0.5 1, 0.78 0.78 0.78, 0.78 0.78 0.78, 0 0.5 1" visible="true" />
         <sprite name="HpLineShadow" x="16" y="32" width="72" height="1" colour="0 0 0" visible="true" />
         <text_area name="Mp" x="0" y="26" text_name="CharacterDataMp" colour="0 0.9 0.9" font="FFVIIMenuFont" visible="true" />
         <text_area name="MpCurrent" x="16" y="33" font="FFVIIMenuDigits" visible="true" />
-        <sprite name="MpSlash" image="images/icons/slash.png" x="51" y="33" width="4" height="8" visible="true" />
+        <sprite name="MpSlash" image="icons/slash.png" x="51" y="33" width="4" height="8" visible="true" />
         <text_area name="MpMax" x="55" y="33" font="FFVIIMenuDigits" visible="true" />
         <sprite name="MpLine" x="16" y="41" width="72" height="1" colour="0.3 0 0" visible="true" />
         <sprite name="MpLineCurrent" x="16" y="41" width="72" height="1" colours="0 1 0.5, 0.78 0.78 0.78, 0.78 0.78 0.78, 0 1 0.5" visible="true" />

+ 86 - 86
data/data/screens/materia_menu/materia_menu.xml

@@ -2,61 +2,61 @@
     <widget name="Container" width="40%" height="40%" x="0" y="0" align="left" valign="top" scale="2.5 2.5" visible="true">
         <widget name="Character" width="100%" height="75" visible="true">
             <prototype name="Window"/>
-            <sprite name="Portrait" image="images/other/choco.png" x="10" y="8" width="50" height="58" visible="true" />
+            <sprite name="Portrait" image="other/choco.png" x="10" y="8" width="50" height="58" visible="true" />
             <widget name="Data" x="66" y="14" width="100%-66" height="100%-14" visible="true">
                 <prototype name="MenuCharacterData" />
             </widget>
-            <sprite name="WpnIcon" image="images/icons/item_weapon_0.png" x="170" y="12" width="14" height="14" visible="true" />
-            <sprite name="ArmIcon" image="images/icons/item_armor.png" x="170" y="42" width="14" height="14" visible="true" />
+            <sprite name="WpnIcon" image="icons/item_weapon_0.png" x="170" y="12" width="14" height="14" visible="true" />
+            <sprite name="ArmIcon" image="icons/item_armor.png" x="170" y="42" width="14" height="14" visible="true" />
             <text_area name="WpnLbl" x="188" y="13" font="FFVIIFont" visible="true" />
             <text_area name="ArmLbl" x="188" y="43" font="FFVIIFont" visible="true" />
             <text_area name="Check" text_name="MateriaMenuCheck" x="180" y="26" font="FFVIIFont" visible="true" />
             <text_area name="Order" text_name="MateriaMenuOrder" x="180" y="56" font="FFVIIFont" visible="true" />
             <widget name="WeaponSlots" x="230" y="24" width="230" height="14" visible="true">
-                <sprite name="Slot1" image="images/icons/materia_slot.png" x="0" y="0" width="14" height="14" visible="true"/>
-                <sprite name="Slot2" image="images/icons/materia_slot.png" x="15" y="0" width="14" height="14" visible="true"/>
-                <sprite name="Link1" image="images/icons/materia_slot_link.png" x="10" y="0" width="8" height="14" visible="true"/>
-                <sprite name="Slot3" image="images/icons/materia_slot.png" x="30" y="0" width="14" height="14" visible="true"/>
-                <sprite name="Slot4" image="images/icons/materia_slot.png" x="45" y="0" width="14" height="14" visible="true"/>
-                <sprite name="Link2" image="images/icons/materia_slot_link.png" x="40" y="0" width="8" height="14" visible="true"/>
-                <sprite name="Slot5" image="images/icons/materia_slot.png" x="60" y="0" width="14" height="14" visible="true"/>
-                <sprite name="Slot6" image="images/icons/materia_slot.png" x="75" y="0" width="14" height="14" visible="true"/>
-                <sprite name="Link3" image="images/icons/materia_slot_link.png" x="70" y="0" width="8" height="14" visible="true"/>
-                <sprite name="Slot7" image="images/icons/materia_slot.png" x="90" y="0" width="14" height="14" visible="true"/>
-                <sprite name="Slot8" image="images/icons/materia_slot.png" x="105" y="0" width="14" height="14" visible="true"/>
-                <sprite name="Link4" image="images/icons/materia_slot_link.png" x="100" y="0" width="8" height="14" visible="true"/>
-                <sprite name="Mat1" image="images/icons/materia_3.png" x="2" y="2" width="10" height="10" visible="true"/>
-                <sprite name="Mat2" image="images/icons/materia_3.png" x="17" y="2" width="10" height="10" visible="true"/>
-                <sprite name="Mat3" image="images/icons/materia_3.png" x="32" y="2" width="10" height="10" visible="true"/>
-                <sprite name="Mat4" image="images/icons/materia_3.png" x="47" y="2" width="10" height="10" visible="true"/>
-                <sprite name="Mat5" image="images/icons/materia_3.png" x="62" y="2" width="10" height="10" visible="true"/>
-                <sprite name="Mat6" image="images/icons/materia_3.png" x="77" y="2" width="10" height="10" visible="true"/>
-                <sprite name="Mat7" image="images/icons/materia_3.png" x="92" y="2" width="10" height="10" visible="true"/>
-                <sprite name="Mat8" image="images/icons/materia_3.png" x="107" y="2" width="10" height="10" visible="true"/>
+                <sprite name="Slot1" image="icons/materia_slot.png" x="0" y="0" width="14" height="14" visible="true"/>
+                <sprite name="Slot2" image="icons/materia_slot.png" x="15" y="0" width="14" height="14" visible="true"/>
+                <sprite name="Link1" image="icons/materia_slot_link.png" x="10" y="0" width="8" height="14" visible="true"/>
+                <sprite name="Slot3" image="icons/materia_slot.png" x="30" y="0" width="14" height="14" visible="true"/>
+                <sprite name="Slot4" image="icons/materia_slot.png" x="45" y="0" width="14" height="14" visible="true"/>
+                <sprite name="Link2" image="icons/materia_slot_link.png" x="40" y="0" width="8" height="14" visible="true"/>
+                <sprite name="Slot5" image="icons/materia_slot.png" x="60" y="0" width="14" height="14" visible="true"/>
+                <sprite name="Slot6" image="icons/materia_slot.png" x="75" y="0" width="14" height="14" visible="true"/>
+                <sprite name="Link3" image="icons/materia_slot_link.png" x="70" y="0" width="8" height="14" visible="true"/>
+                <sprite name="Slot7" image="icons/materia_slot.png" x="90" y="0" width="14" height="14" visible="true"/>
+                <sprite name="Slot8" image="icons/materia_slot.png" x="105" y="0" width="14" height="14" visible="true"/>
+                <sprite name="Link4" image="icons/materia_slot_link.png" x="100" y="0" width="8" height="14" visible="true"/>
+                <sprite name="Mat1" image="icons/materia_3.png" x="2" y="2" width="10" height="10" visible="true"/>
+                <sprite name="Mat2" image="icons/materia_3.png" x="17" y="2" width="10" height="10" visible="true"/>
+                <sprite name="Mat3" image="icons/materia_3.png" x="32" y="2" width="10" height="10" visible="true"/>
+                <sprite name="Mat4" image="icons/materia_3.png" x="47" y="2" width="10" height="10" visible="true"/>
+                <sprite name="Mat5" image="icons/materia_3.png" x="62" y="2" width="10" height="10" visible="true"/>
+                <sprite name="Mat6" image="icons/materia_3.png" x="77" y="2" width="10" height="10" visible="true"/>
+                <sprite name="Mat7" image="icons/materia_3.png" x="92" y="2" width="10" height="10" visible="true"/>
+                <sprite name="Mat8" image="icons/materia_3.png" x="107" y="2" width="10" height="10" visible="true"/>
             </widget>
             <widget name="ArmorSlots" x="230" y="54" width="230" height="14" visible="true">
-                <sprite name="Slot1" image="images/icons/materia_slot.png" x="0" y="0" width="14" height="14" visible="true"/>
-                <sprite name="Slot2" image="images/icons/materia_slot.png" x="15" y="0" width="14" height="14" visible="true"/>
-                <sprite name="Link1" image="images/icons/materia_slot_link.png" x="10" y="0" width="8" height="14" visible="true"/>
-                <sprite name="Slot3" image="images/icons/materia_slot.png" x="30" y="0" width="14" height="14" visible="true"/>
-                <sprite name="Slot4" image="images/icons/materia_slot.png" x="45" y="0" width="14" height="14" visible="true"/>
-                <sprite name="Link2" image="images/icons/materia_slot_link.png" x="40" y="0" width="8" height="14" visible="true"/>
-                <sprite name="Slot5" image="images/icons/materia_slot.png" x="60" y="0" width="14" height="14" visible="true"/>
-                <sprite name="Slot6" image="images/icons/materia_slot.png" x="75" y="0" width="14" height="14" visible="true"/>
-                <sprite name="Link3" image="images/icons/materia_slot_link.png" x="70" y="0" width="8" height="14" visible="true"/>
-                <sprite name="Slot7" image="images/icons/materia_slot.png" x="90" y="0" width="14" height="14" visible="true"/>
-                <sprite name="Slot8" image="images/icons/materia_slot.png" x="105" y="0" width="14" height="14" visible="true"/>
-                <sprite name="Link4" image="images/icons/materia_slot_link.png" x="100" y="0" width="8" height="14" visible="true"/>
-                <sprite name="Mat1" image="images/icons/materia_3.png" x="2" y="2" width="10" height="10" visible="true"/>
-                <sprite name="Mat2" image="images/icons/materia_3.png" x="17" y="2" width="10" height="10" visible="true"/>
-                <sprite name="Mat3" image="images/icons/materia_3.png" x="32" y="2" width="10" height="10" visible="true"/>
-                <sprite name="Mat4" image="images/icons/materia_3.png" x="47" y="2" width="10" height="10" visible="true"/>
-                <sprite name="Mat5" image="images/icons/materia_3.png" x="62" y="2" width="10" height="10" visible="true"/>
-                <sprite name="Mat6" image="images/icons/materia_3.png" x="77" y="2" width="10" height="10" visible="true"/>
-                <sprite name="Mat7" image="images/icons/materia_3.png" x="92" y="2" width="10" height="10" visible="true"/>
-                <sprite name="Mat8" image="images/icons/materia_3.png" x="107" y="2" width="10" height="10" visible="true"/>
+                <sprite name="Slot1" image="icons/materia_slot.png" x="0" y="0" width="14" height="14" visible="true"/>
+                <sprite name="Slot2" image="icons/materia_slot.png" x="15" y="0" width="14" height="14" visible="true"/>
+                <sprite name="Link1" image="icons/materia_slot_link.png" x="10" y="0" width="8" height="14" visible="true"/>
+                <sprite name="Slot3" image="icons/materia_slot.png" x="30" y="0" width="14" height="14" visible="true"/>
+                <sprite name="Slot4" image="icons/materia_slot.png" x="45" y="0" width="14" height="14" visible="true"/>
+                <sprite name="Link2" image="icons/materia_slot_link.png" x="40" y="0" width="8" height="14" visible="true"/>
+                <sprite name="Slot5" image="icons/materia_slot.png" x="60" y="0" width="14" height="14" visible="true"/>
+                <sprite name="Slot6" image="icons/materia_slot.png" x="75" y="0" width="14" height="14" visible="true"/>
+                <sprite name="Link3" image="icons/materia_slot_link.png" x="70" y="0" width="8" height="14" visible="true"/>
+                <sprite name="Slot7" image="icons/materia_slot.png" x="90" y="0" width="14" height="14" visible="true"/>
+                <sprite name="Slot8" image="icons/materia_slot.png" x="105" y="0" width="14" height="14" visible="true"/>
+                <sprite name="Link4" image="icons/materia_slot_link.png" x="100" y="0" width="8" height="14" visible="true"/>
+                <sprite name="Mat1" image="icons/materia_3.png" x="2" y="2" width="10" height="10" visible="true"/>
+                <sprite name="Mat2" image="icons/materia_3.png" x="17" y="2" width="10" height="10" visible="true"/>
+                <sprite name="Mat3" image="icons/materia_3.png" x="32" y="2" width="10" height="10" visible="true"/>
+                <sprite name="Mat4" image="icons/materia_3.png" x="47" y="2" width="10" height="10" visible="true"/>
+                <sprite name="Mat5" image="icons/materia_3.png" x="62" y="2" width="10" height="10" visible="true"/>
+                <sprite name="Mat6" image="icons/materia_3.png" x="77" y="2" width="10" height="10" visible="true"/>
+                <sprite name="Mat7" image="icons/materia_3.png" x="92" y="2" width="10" height="10" visible="true"/>
+                <sprite name="Mat8" image="icons/materia_3.png" x="107" y="2" width="10" height="10" visible="true"/>
             </widget>
-            <sprite name="Cursor" image="images/icons/cursor.png" x="155" y="27" width="24" height="17" visible="true">
+            <sprite name="Cursor" image="icons/cursor.png" x="155" y="27" width="24" height="17" visible="true">
                 <animation name="Position1-1" length="0" x="0:155" y="0:27" />
                 <animation name="Position1-2" length="0" x="0:210" y="0:27" />
                 <animation name="Position1-3" length="0" x="0:225" y="0:27" />
@@ -96,33 +96,33 @@
                 </widget>
             </widget>
             <widget name="EnemySkill" x="0" y ="0" width="100%" height="100%" visible="false">
-                <sprite name="Icon" image="images/icons/materia_3.png" x="5" y="5" width="18" height="18" visible="true"/>
+                <sprite name="Icon" image="icons/materia_3.png" x="5" y="5" width="18" height="18" visible="true"/>
                 <text_area name="Name" x="29" y="9" font="FFVIIFont" visible="true" />
                 <widget name="Stars" x="5%" y="25" width="90%" height="32" visible="true">
-                    <sprite name="Star1" image="images/icons/materia_star_3.png" x="0" y="0" width="15" height="15" visible="true"/>
-                    <sprite name="Star2" image="images/icons/materia_star_3.png" x="16" y="0" width="15" height="15" visible="true"/>
-                    <sprite name="Star3" image="images/icons/materia_star_3.png" x="32" y="0" width="15" height="15" visible="true"/>
-                    <sprite name="Star4" image="images/icons/materia_star_3.png" x="48" y="0" width="15" height="15" visible="true"/>
-                    <sprite name="Star5" image="images/icons/materia_star_3.png" x="64" y="0" width="15" height="15" visible="true"/>
-                    <sprite name="Star6" image="images/icons/materia_star_3.png" x="80" y="0" width="15" height="15" visible="true"/>
-                    <sprite name="Star7" image="images/icons/materia_star_3.png" x="96" y="0" width="15" height="15" visible="true"/>
-                    <sprite name="Star8" image="images/icons/materia_star_3.png" x="112" y="0" width="15" height="15" visible="true"/>
-                    <sprite name="Star9" image="images/icons/materia_star_3.png" x="128" y="0" width="15" height="15" visible="true"/>
-                    <sprite name="Star10" image="images/icons/materia_star_3.png" x="144" y="0" width="15" height="15" visible="true"/>
-                    <sprite name="Star11" image="images/icons/materia_star_3.png" x="160" y="0" width="15" height="15" visible="true"/>
-                    <sprite name="Star12" image="images/icons/materia_star_3.png" x="176" y="0" width="15" height="15" visible="true"/>
-                    <sprite name="Star13" image="images/icons/materia_star_3.png" x="0" y="16" width="15" height="15" visible="true"/>
-                    <sprite name="Star14" image="images/icons/materia_star_3.png" x="16" y="16" width="15" height="15" visible="true"/>
-                    <sprite name="Star15" image="images/icons/materia_star_3.png" x="32" y="16" width="15" height="15" visible="true"/>
-                    <sprite name="Star16" image="images/icons/materia_star_3.png" x="48" y="16" width="15" height="15" visible="true"/>
-                    <sprite name="Star17" image="images/icons/materia_star_3.png" x="64" y="16" width="15" height="15" visible="true"/>
-                    <sprite name="Star18" image="images/icons/materia_star_3.png" x="80" y="16" width="15" height="15" visible="true"/>
-                    <sprite name="Star19" image="images/icons/materia_star_3.png" x="96" y="16" width="15" height="15" visible="true"/>
-                    <sprite name="Star20" image="images/icons/materia_star_3.png" x="112" y="16" width="15" height="15" visible="true"/>
-                    <sprite name="Star21" image="images/icons/materia_star_3.png" x="128" y="16" width="15" height="15" visible="true"/>
-                    <sprite name="Star22" image="images/icons/materia_star_3.png" x="144" y="16" width="15" height="15" visible="true"/>
-                    <sprite name="Star23" image="images/icons/materia_star_3.png" x="160" y="16" width="15" height="15" visible="true"/>
-                    <sprite name="Star24" image="images/icons/materia_star_3.png" x="176" y="16" width="15" height="15" visible="true"/>
+                    <sprite name="Star1" image="icons/materia_star_3.png" x="0" y="0" width="15" height="15" visible="true"/>
+                    <sprite name="Star2" image="icons/materia_star_3.png" x="16" y="0" width="15" height="15" visible="true"/>
+                    <sprite name="Star3" image="icons/materia_star_3.png" x="32" y="0" width="15" height="15" visible="true"/>
+                    <sprite name="Star4" image="icons/materia_star_3.png" x="48" y="0" width="15" height="15" visible="true"/>
+                    <sprite name="Star5" image="icons/materia_star_3.png" x="64" y="0" width="15" height="15" visible="true"/>
+                    <sprite name="Star6" image="icons/materia_star_3.png" x="80" y="0" width="15" height="15" visible="true"/>
+                    <sprite name="Star7" image="icons/materia_star_3.png" x="96" y="0" width="15" height="15" visible="true"/>
+                    <sprite name="Star8" image="icons/materia_star_3.png" x="112" y="0" width="15" height="15" visible="true"/>
+                    <sprite name="Star9" image="icons/materia_star_3.png" x="128" y="0" width="15" height="15" visible="true"/>
+                    <sprite name="Star10" image="icons/materia_star_3.png" x="144" y="0" width="15" height="15" visible="true"/>
+                    <sprite name="Star11" image="icons/materia_star_3.png" x="160" y="0" width="15" height="15" visible="true"/>
+                    <sprite name="Star12" image="icons/materia_star_3.png" x="176" y="0" width="15" height="15" visible="true"/>
+                    <sprite name="Star13" image="icons/materia_star_3.png" x="0" y="16" width="15" height="15" visible="true"/>
+                    <sprite name="Star14" image="icons/materia_star_3.png" x="16" y="16" width="15" height="15" visible="true"/>
+                    <sprite name="Star15" image="icons/materia_star_3.png" x="32" y="16" width="15" height="15" visible="true"/>
+                    <sprite name="Star16" image="icons/materia_star_3.png" x="48" y="16" width="15" height="15" visible="true"/>
+                    <sprite name="Star17" image="icons/materia_star_3.png" x="64" y="16" width="15" height="15" visible="true"/>
+                    <sprite name="Star18" image="icons/materia_star_3.png" x="80" y="16" width="15" height="15" visible="true"/>
+                    <sprite name="Star19" image="icons/materia_star_3.png" x="96" y="16" width="15" height="15" visible="true"/>
+                    <sprite name="Star20" image="icons/materia_star_3.png" x="112" y="16" width="15" height="15" visible="true"/>
+                    <sprite name="Star21" image="icons/materia_star_3.png" x="128" y="16" width="15" height="15" visible="true"/>
+                    <sprite name="Star22" image="icons/materia_star_3.png" x="144" y="16" width="15" height="15" visible="true"/>
+                    <sprite name="Star23" image="icons/materia_star_3.png" x="160" y="16" width="15" height="15" visible="true"/>
+                    <sprite name="Star24" image="icons/materia_star_3.png" x="176" y="16" width="15" height="15" visible="true"/>
                 </widget>
                 <widget name="Skills" x="5%" y="57" width="95%" height="120" visible="true" >
                     <text_area name="Skill1" text_name="MateriaMenuAbilities" x="0%" y="0" font="FFVIIFont" visible="true" />
@@ -152,14 +152,14 @@
                 </widget>
             </widget>
             <widget name="Materia" x="0" y ="0" width="100%" height="100%" visible="false">
-                <sprite name="Icon" image="images/icons/materia_3.png" x="5" y="5" width="18" height="18" visible="true"/>
+                <sprite name="Icon" image="icons/materia_3.png" x="5" y="5" width="18" height="18" visible="true"/>
                 <text_area name="Name" x="29" y="9" font="FFVIIFont" visible="true" />
                 <widget name="Stars" x="100%-90" y="8" width="86" height="15" visible="true">
-                    <sprite name="Star1" image="images/icons/materia_star_1.png" x="5" y="0" width="15" height="15" visible="true"/>
-                    <sprite name="Star2" image="images/icons/materia_star_1.png" x="21" y="0" width="15" height="15" visible="true"/>
-                    <sprite name="Star3" image="images/icons/materia_star_1.png" x="37" y="0" width="15" height="15" visible="true"/>
-                    <sprite name="Star4" image="images/icons/materia_star_1.png" x="53" y="0" width="15" height="15" visible="true"/>
-                    <sprite name="Star5" image="images/icons/materia_star_1.png" x="69" y="0" width="15" height="15" visible="true"/>
+                    <sprite name="Star1" image="icons/materia_star_1.png" x="5" y="0" width="15" height="15" visible="true"/>
+                    <sprite name="Star2" image="icons/materia_star_1.png" x="21" y="0" width="15" height="15" visible="true"/>
+                    <sprite name="Star3" image="icons/materia_star_1.png" x="37" y="0" width="15" height="15" visible="true"/>
+                    <sprite name="Star4" image="icons/materia_star_1.png" x="53" y="0" width="15" height="15" visible="true"/>
+                    <sprite name="Star5" image="icons/materia_star_1.png" x="69" y="0" width="15" height="15" visible="true"/>
                 </widget>
                 <text_area name="LblAP" text_name="MateriaMenuAP" x="100%-90" y="28" font="FFVIIFont" visible="true" />
                 <text_area name="LblAPNext" text_name="MateriaMenuAPNext" x="100%-90" y="42" font="FFVIIFont" visible="true" />
@@ -196,16 +196,16 @@
             <prototype name="Window" />
             <sprite name="ScrollBg" x="100%-12" y="2" width="10" height="100%-6" colour="0.2 0.2 0.2" alpha="0.8" visible="true"/>
             <sprite name="Scroll" x="100%-11" y="3" width="8" height="18" colour="0.7 0.7 0.7" visible="true"/>
-            <sprite name="Icon1" image="images/icons/materia_3.png" x="5" y="4%-1" width="12" height="12" visible="true"/>
-            <sprite name="Icon2" image="images/icons/materia_3.png" x="5" y="13%-1" width="12" height="12" visible="true"/>
-            <sprite name="Icon3" image="images/icons/materia_3.png" x="5" y="22%-1" width="12" height="12" visible="true"/>
-            <sprite name="Icon4" image="images/icons/materia_3.png" x="5" y="31%-1" width="12" height="12" visible="true"/>
-            <sprite name="Icon5" image="images/icons/materia_3.png" x="5" y="40%-1" width="12" height="12" visible="true"/>
-            <sprite name="Icon6" image="images/icons/materia_3.png" x="5" y="49%-1" width="12" height="12" visible="true"/>
-            <sprite name="Icon7" image="images/icons/materia_3.png" x="5" y="58%-1" width="12" height="12" visible="true"/>
-            <sprite name="Icon8" image="images/icons/materia_3.png" x="5" y="67%-1" width="12" height="12" visible="true"/>
-            <sprite name="Icon9" image="images/icons/materia_3.png" x="5" y="76%-1" width="12" height="12" visible="true"/>
-            <sprite name="Icon10" image="images/icons/materia_3.png" x="5" y="85%-1" width="12" height="12" visible="true"/>
+            <sprite name="Icon1" image="icons/materia_3.png" x="5" y="4%-1" width="12" height="12" visible="true"/>
+            <sprite name="Icon2" image="icons/materia_3.png" x="5" y="13%-1" width="12" height="12" visible="true"/>
+            <sprite name="Icon3" image="icons/materia_3.png" x="5" y="22%-1" width="12" height="12" visible="true"/>
+            <sprite name="Icon4" image="icons/materia_3.png" x="5" y="31%-1" width="12" height="12" visible="true"/>
+            <sprite name="Icon5" image="icons/materia_3.png" x="5" y="40%-1" width="12" height="12" visible="true"/>
+            <sprite name="Icon6" image="icons/materia_3.png" x="5" y="49%-1" width="12" height="12" visible="true"/>
+            <sprite name="Icon7" image="icons/materia_3.png" x="5" y="58%-1" width="12" height="12" visible="true"/>
+            <sprite name="Icon8" image="icons/materia_3.png" x="5" y="67%-1" width="12" height="12" visible="true"/>
+            <sprite name="Icon9" image="icons/materia_3.png" x="5" y="76%-1" width="12" height="12" visible="true"/>
+            <sprite name="Icon10" image="icons/materia_3.png" x="5" y="85%-1" width="12" height="12" visible="true"/>
             <text_area name="Name1" x="20" y="4%" font="FFVIIFont" visible="true" />
             <text_area name="Name2" x="20" y="13%" font="FFVIIFont" visible="true" />
             <text_area name="Name3" x="20" y="22%" font="FFVIIFont" visible="true" />
@@ -216,7 +216,7 @@
             <text_area name="Name8" x="20" y="67%" font="FFVIIFont" visible="true" />
             <text_area name="Name9" x="20" y="76%" font="FFVIIFont" visible="true" />
             <text_area name="Name10" x="20" y="85%" font="FFVIIFont" visible="true" />
-            <sprite name="Cursor" image="images/icons/cursor.png" x="-15" y="8" width="24" height="17" visible="true">
+            <sprite name="Cursor" image="icons/cursor.png" x="-15" y="8" width="24" height="17" visible="true">
                 <animation name="Position1" length="0" y="0:4%+3" />
                 <animation name="Position2" length="0" y="0:13%+3" />
                 <animation name="Position3" length="0" y="0:22%+3" />

+ 3 - 3
data/data/screens/name_menu/name_menu.xml

@@ -7,7 +7,7 @@
         </widget>
         <widget name="Character" width="100%" x="0" y="24" height="70" visible="true">
             <prototype name="Window"/>
-            <sprite name="Portrait" image="images/other/choco.png" x="10" y="12" width="42" height="48" visible="true" />
+            <sprite name="Portrait" image="other/choco.png" x="10" y="12" width="42" height="48" visible="true" />
             <widget name="Name" width="72" height="16" x="80" y="50%-8" visible="true">
                 <text_area name="Char1" x="1" y="0" width="8" height="16" visible="true" font="FFVIIFont" />
                 <text_area name="Char2" x="11" y="0" width="8" height="16" visible="true" font="FFVIIFont" />
@@ -40,7 +40,7 @@
             <text_area name="Clear" text_name="NameMenuClear" x="15" y="100%-50" font="FFVIIFont" visible="true" />
             <text_area name="Default" text_name="NameMenuDefault" x="15" y="100%-35" font="FFVIIFont" visible="true" />
             <text_area name="Confirm" text_name="NameMenuConfirm" x="15" y="100%-20" font="FFVIIFont" visible="true" />
-            <sprite name="Cursor" image="images/icons/cursor.png" x="-10" y="100%-48" width="24" height="17" visible="true">
+            <sprite name="Cursor" image="icons/cursor.png" x="-10" y="100%-48" width="24" height="17" visible="true">
                 <animation name="Position1" length="0" y="0:100%-50" />
                 <animation name="Position2" length="0" y="0:100%-35" />
                 <animation name="Position3" length="0" y="0:100%-20" />
@@ -52,7 +52,7 @@
             <text_area name="Name" x="22" y="30" font="FFVIIFont" visible="true" colour="0 0.8 1"/>
             <text_area name="Yes" text_name="Yes" x="20" y="55" font="FFVIIFont" visible="true" />
             <text_area name="No" text_name="No" x="80" y="55" font="FFVIIFont" visible="true" />
-            <sprite name="Cursor" image="images/icons/cursor.png" x="-4" y="55" width="24" height="17" visible="true">
+            <sprite name="Cursor" image="icons/cursor.png" x="-4" y="55" width="24" height="17" visible="true">
                 <animation name="Position1" length="0" x="0:-4" />
                 <animation name="Position2" length="0" x="0:56" />
             </sprite>

+ 1 - 1
data/data/screens/pause_menu/pause_menu.xml

@@ -5,7 +5,7 @@
         <text_area name="Text" x="50%" y="20" text_name="PauseMenuText" font="FFVIIFont" text_align="center" visible="true" />
         <text_area name="Yes" x="40" y="35" text_name="PauseMenuYes" font="FFVIIFont" visible="true" />
         <text_area name="No" x="90" y="35" text_name="PauseMenuNo" font="FFVIIFont" visible="true" />
-        <sprite name="Cursor" image="images/icons/cursor.png" x="15" y="35" width="24" height="16" visible="true">
+        <sprite name="Cursor" image="icons/cursor.png" x="15" y="35" width="24" height="16" visible="true">
             <animation name="Position1" length="0" x="0:15" />
             <animation name="Position2" length="0" x="0:65" />
         </sprite>

+ 8 - 8
data/data/screens/prototypes.xml

@@ -1,13 +1,13 @@
 <prototypes>
     <prototype name="Window">
-        <sprite name="Top" image="images/window/b_t.png" x="8" y="0" width="100%-16" height="8" visible="true" />
-        <sprite name="Bottom" image="images/window/b_b.png" x="8" y="100%-8" width="100%-16" height="8" visible="true" />
-        <sprite name="Left" image="images/window/b_l.png" x="0" y="8" width="8" height="100%-16" visible="true" />
-        <sprite name="Right" image="images/window/b_r.png" x="100%-8" y="8" width="8" height="100%-16" visible="true" />
-        <sprite name="TopLeft" image="images/window/c_tl.png" x="0" y="0" width="8" height="8" visible="true" />
-        <sprite name="TopRight" image="images/window/c_tr.png" x="100%-8" y="0" width="8" height="8" visible="true" />
-        <sprite name="BottomLeft" image="images/window/c_bl.png" x="0" y="100%-8" width="8" height="8" visible="true" />
-        <sprite name="BottomRight" image="images/window/c_br.png" x="100%-8" y="100%-8" width="8" height="8" visible="true" />
+        <sprite name="Top" image="window/b_t.png" x="8" y="0" width="100%-16" height="8" visible="true" />
+        <sprite name="Bottom" image="window/b_b.png" x="8" y="100%-8" width="100%-16" height="8" visible="true" />
+        <sprite name="Left" image="window/b_l.png" x="0" y="8" width="8" height="100%-16" visible="true" />
+        <sprite name="Right" image="window/b_r.png" x="100%-8" y="8" width="8" height="100%-16" visible="true" />
+        <sprite name="TopLeft" image="window/c_tl.png" x="0" y="0" width="8" height="8" visible="true" />
+        <sprite name="TopRight" image="window/c_tr.png" x="100%-8" y="0" width="8" height="8" visible="true" />
+        <sprite name="BottomLeft" image="window/c_bl.png" x="0" y="100%-8" width="8" height="8" visible="true" />
+        <sprite name="BottomRight" image="window/c_br.png" x="100%-8" y="100%-8" width="8" height="8" visible="true" />
         <sprite name="Center" x="3" y="2" width="100%-6" height="100%-5" colours="0 0 0.7,0 0 0.5,0 0 0.125,0 0 0.31" visible="true" />
     </prototype>
 </prototypes>

+ 3 - 3
data/data/screens/save_menu/prototypes.xml

@@ -3,9 +3,9 @@
         <widget name="Slot" width="100%" height="100%" x="0" y="0" visible="true">
             <prototype name="Window" />
             <widget name="Party" x="15" y="50%-24" visible="true">
-                <sprite name="Portrait1" image="images/other/choco.png" x="0" y="0" width="42" height="48" visible="true" />
-                <sprite name="Portrait2" image="images/other/choco.png" x="45" y="0" width="42" height="48" visible="true" />
-                <sprite name="Portrait3" image="images/other/choco.png" x="90" y="0" width="42" height="48" visible="true" />
+                <sprite name="Portrait1" image="other/choco.png" x="0" y="0" width="42" height="48" visible="true" />
+                <sprite name="Portrait2" image="other/choco.png" x="45" y="0" width="42" height="48" visible="true" />
+                <sprite name="Portrait3" image="other/choco.png" x="90" y="0" width="42" height="48" visible="true" />
             </widget>
             <text_area name="Name" x="160" y="20%" font="FFVIIFont" visible="true" />
             <text_area name="LvTag" x="170" y="20%+20" text_name="SaveMenuLevel" colour="0 0.9 0.9" font="FFVIIFont" visible="true" />

+ 1 - 1
data/data/screens/save_menu/save_menu.xml

@@ -20,7 +20,7 @@
         <widget name="Slot3" x="5%" y="66%+12" width="90%" height="30%-8" visible="true">
             <prototype name="SaveSlot" />
         </widget>
-        <sprite name="Cursor" image="images/icons/cursor.png" x="2" y="15%+12" width="24" height="17" visible="true">
+        <sprite name="Cursor" image="icons/cursor.png" x="2" y="15%+12" width="24" height="17" visible="true">
             <animation name="Position1" length="0" y="0:15%+12" />
             <animation name="Position2" length="0" y="0:48%+12" />
             <animation name="Position3" length="0" y="0:81%+12" />

+ 12 - 12
data/data/scripts.xml → data/data/scripts/_scripts.xml

@@ -1,22 +1,22 @@
 <scripts>
     <script file="scripts/data.lua" />
-    <script file="game/accessories.lua" />
-    <script file="game/armors.lua" />
-    <script file="game/attacks.lua" />
-    <script file="game/characters.lua" />
-    <script file="game/commands.lua" />
-    <script file="game/growth.lua" />
-    <script file="game/items.lua" />
-    <script file="game/key_items.lua" />
-    <script file="game/materia.lua" />
-    <script file="game/summons.lua" />
-    <script file="game/weapons.lua" />
+    <script file="gamedata/accessories.lua" />
+    <script file="gamedata/armors.lua" />
+    <script file="gamedata/attacks.lua" />
+    <script file="gamedata/characters.lua" />
+    <script file="gamedata/commands.lua" />
+    <script file="gamedata/growth.lua" />
+    <script file="gamedata/items.lua" />
+    <script file="gamedata/key_items.lua" />
+    <script file="gamedata/materia.lua" />
+    <script file="gamedata/summons.lua" />
+    <script file="gamedata/weapons.lua" />
 
     <script file="scripts/system.lua" />
     <script file="scripts/save.lua" />
 
     <!-- TODO: Don't always parse initial savemap when loading is implemented. -->
-    <script file="game/initial_savemap.lua" />
+    <script file="gamedata/initial_savemap.lua" />
 
     <script file="scripts/field.lua" />
     <script file="scripts/battle.lua" />

+ 4 - 4
data/data/scripts/menu/equip_menu.lua

@@ -186,9 +186,9 @@ UiContainer.EquipMenu = {
     submenu_none = function(self)
         UiContainer.current_submenu = ""
         UiContainer.populate_character_data("EquipMenu.Container.Character", Characters[self.char_id])
-        ui_manager:get_widget("EquipMenu.Container.Character.Portrait"):set_image("images/characters/" .. tostring(self.char_id) .. ".png")
+        ui_manager:get_widget("EquipMenu.Container.Character.Portrait"):set_image("characters/" .. tostring(self.char_id) .. ".png")
         -- TODO: Do something for chars 9 and 10
-        ui_manager:get_widget("EquipMenu.Container.Character.WpnIcon"):set_image("images/icons/item_weapon_" .. tostring(self.char_id) .. ".png")
+        ui_manager:get_widget("EquipMenu.Container.Character.WpnIcon"):set_image("icons/item_weapon_" .. tostring(self.char_id) .. ".png")
         ui_manager:get_widget("EquipMenu.Container.Character.WpnLbl"):set_text(Game.Items[Characters[self.char_id].weapon.id].name)
         ui_manager:get_widget("EquipMenu.Container.Character.ArmLbl"):set_text(Game.Items[Characters[self.char_id].armor.id].name)
         if Characters[self.char_id].accessory == nil then
@@ -376,9 +376,9 @@ UiContainer.EquipMenu = {
             else
                 ui_manager:get_widget("EquipMenu.Container.Slots.Slot" .. tostring(s)):set_visible(true)
                 if item.growth == 0 then
-                    ui_manager:get_widget("EquipMenu.Container.Slots.Slot" .. tostring(s)):set_image("images/icons/materia_slot_no_growth.png")
+                    ui_manager:get_widget("EquipMenu.Container.Slots.Slot" .. tostring(s)):set_image("icons/materia_slot_no_growth.png")
                 else
-                    ui_manager:get_widget("EquipMenu.Container.Slots.Slot" .. tostring(s)):set_image("images/icons/materia_slot.png")
+                    ui_manager:get_widget("EquipMenu.Container.Slots.Slot" .. tostring(s)):set_image("icons/materia_slot.png")
                 end
             end
             if s % 2 ~= 0 then

+ 5 - 5
data/data/scripts/menu/item_menu.lua

@@ -466,7 +466,7 @@ UiContainer.ItemMenu = {
             if Party[c] ~= nil then
                 self.char_position_total = self.char_position_total + 1
                 UiContainer.populate_character_data("ItemMenu.Container.ItemMenuCharacters.Character" .. tostring(c), Characters[Party[c]])
-                ui_manager:get_widget("ItemMenu.Container.ItemMenuCharacters.Character" .. tostring(c) .. ".Portrait"):set_image("images/characters/" .. tostring(Party[c]) .. ".png")
+                ui_manager:get_widget("ItemMenu.Container.ItemMenuCharacters.Character" .. tostring(c) .. ".Portrait"):set_image("characters/" .. tostring(Party[c]) .. ".png")
             else
                 UiContainer.populate_character_data("ItemMenu.Container.ItemMenuCharacters.Character" .. tostring(c), nil)
             end
@@ -992,16 +992,16 @@ UiContainer.ItemMenu = {
                 end
                 -- Item icon
                 if type == Inventory.ITEM_TYPE.ITEM then
-                    w_icon:set_image("images/icons/item_item.png")
+                    w_icon:set_image("icons/item_item.png")
                 elseif type == Inventory.ITEM_TYPE.ARMOR then
-                    w_icon:set_image("images/icons/item_armor.png")
+                    w_icon:set_image("icons/item_armor.png")
                 elseif type == Inventory.ITEM_TYPE.ACCESSORY then
-                    w_icon:set_image("images/icons/item_accessory.png")
+                    w_icon:set_image("icons/item_accessory.png")
                 elseif type == Inventory.ITEM_TYPE.WEAPON then
                     local users = Game.Items[Inventory[inventory_index].item].users
                     for _, v in ipairs(users) do
                         if v >= 0 and v <= 8 then
-                            w_icon:set_image("images/icons/item_weapon_" .. v .. ".png")
+                            w_icon:set_image("icons/item_weapon_" .. v .. ".png")
                             break;
                         end
                     end

+ 1 - 1
data/data/scripts/menu/main_menu.lua

@@ -150,7 +150,7 @@ UiContainer.MainMenu = {
         for c = 1, 3 do
             if Party[c] ~= nil then
                 UiContainer.populate_character_data("MainMenu.Container.Characters.Character" .. tostring(c), Characters[Party[c]])
-                ui_manager:get_widget("MainMenu.Container.Characters.Character" .. tostring(c) .. ".Portrait"):set_image("images/characters/" .. tostring(Party[c]) .. ".png")
+                ui_manager:get_widget("MainMenu.Container.Characters.Character" .. tostring(c) .. ".Portrait"):set_image("characters/" .. tostring(Party[c]) .. ".png")
                 if Characters[Party[c]].back_row == 1 then
                     ui_manager:get_widget("MainMenu.Container.Characters.Character" .. tostring(c) .. ".Portrait"):set_default_animation("RowBack")
                 else

+ 10 - 10
data/data/scripts/menu/materia_menu.lua

@@ -194,10 +194,10 @@ UiContainer.MateriaMenu = {
     submenu_none = function(self)
         UiContainer.current_submenu = ""
         UiContainer.populate_character_data("MateriaMenu.Container.Character", Characters[self.char_id])
-        ui_manager:get_widget("MateriaMenu.Container.Character.Portrait"):set_image("images/characters/" .. tostring(self.char_id) .. ".png")
+        ui_manager:get_widget("MateriaMenu.Container.Character.Portrait"):set_image("characters/" .. tostring(self.char_id) .. ".png")
         self.populate_equip(self)
         -- TODO: Do something for chars 9 and 10
-        ui_manager:get_widget("MateriaMenu.Container.Character.WpnIcon"):set_image("images/icons/item_weapon_" .. tostring(self.char_id) .. ".png")
+        ui_manager:get_widget("MateriaMenu.Container.Character.WpnIcon"):set_image("icons/item_weapon_" .. tostring(self.char_id) .. ".png")
         ui_manager:get_widget("MateriaMenu.Container.List.Cursor"):set_visible(false)
         --TODO: Uncomment when implemented: ui_manager:get_widget("MateriaMenu.Container.Order.Cursor"):set_visible(false)
         ui_manager:get_widget("MateriaMenu.Container.Character.Cursor"):set_visible(true)
@@ -247,14 +247,14 @@ UiContainer.MateriaMenu = {
             -- Show/hide/set materia
             if Characters[self.char_id].weapon.materia[i - 1] ~= nil then
                 local mat_type =  Game.Materia[Characters[self.char_id].weapon.materia[i - 1].id].type
-                ui_manager:get_widget("MateriaMenu.Container.Character.WeaponSlots.Mat" .. tostring(i)):set_image("images/icons/materia_" .. tostring(mat_type) .. ".png")
+                ui_manager:get_widget("MateriaMenu.Container.Character.WeaponSlots.Mat" .. tostring(i)):set_image("icons/materia_" .. tostring(mat_type) .. ".png")
                 ui_manager:get_widget("MateriaMenu.Container.Character.WeaponSlots.Mat" .. tostring(i)):set_visible(true)
             else
                 ui_manager:get_widget("MateriaMenu.Container.Character.WeaponSlots.Mat" .. tostring(i)):set_visible(false)
             end
             if Characters[self.char_id].armor.materia[i - 1] ~= nil then
                 local mat_type =  Game.Materia[Characters[self.char_id].armor.materia[i - 1].id].type
-                ui_manager:get_widget("MateriaMenu.Container.Character.ArmorSlots.Mat" .. tostring(i)):set_image("images/icons/materia_" .. tostring(mat_type) .. ".png")
+                ui_manager:get_widget("MateriaMenu.Container.Character.ArmorSlots.Mat" .. tostring(i)):set_image("icons/materia_" .. tostring(mat_type) .. ".png")
                 ui_manager:get_widget("MateriaMenu.Container.Character.ArmorSlots.Mat" .. tostring(i)):set_visible(true)
             else
                 ui_manager:get_widget("MateriaMenu.Container.Character.ArmorSlots.Mat" .. tostring(i)):set_visible(false)
@@ -295,11 +295,11 @@ UiContainer.MateriaMenu = {
         ui_manager:get_widget("MateriaMenu.Container.Details.Materia"):set_visible(false)
         for s = 1, 24 do
             if materia.skills[s] ~= nil and materia.skills[s] == true then
-                ui_manager:get_widget("MateriaMenu.Container.Details.EnemySkill.Stars.Star" .. tostring(s)):set_image("images/icons/materia_star_3.png")
+                ui_manager:get_widget("MateriaMenu.Container.Details.EnemySkill.Stars.Star" .. tostring(s)):set_image("icons/materia_star_3.png")
                 ui_manager:get_widget("MateriaMenu.Container.Details.EnemySkill.Skills.Skill" .. tostring(s)):set_text(Game.Attacks[71 + s].name)
                 ui_manager:get_widget("MateriaMenu.Container.Details.EnemySkill.Skills.Skill" .. tostring(s)):set_visible(true)
             else
-                ui_manager:get_widget("MateriaMenu.Container.Details.EnemySkill.Stars.Star" .. tostring(s)):set_image("images/icons/materia_star_empty_3.png")
+                ui_manager:get_widget("MateriaMenu.Container.Details.EnemySkill.Stars.Star" .. tostring(s)):set_image("icons/materia_star_empty_3.png")
                 ui_manager:get_widget("MateriaMenu.Container.Details.EnemySkill.Skills.Skill" .. tostring(s)):set_visible(false)
             end
         end
@@ -420,7 +420,7 @@ UiContainer.MateriaMenu = {
             ap_next = materia.levels_ap[level + 1] - ap
         end
         -- Start displaying data
-        ui_manager:get_widget("MateriaMenu.Container.Details.Materia.Icon"):set_image("images/icons/materia_" .. tostring(materia.type) .. ".png")
+        ui_manager:get_widget("MateriaMenu.Container.Details.Materia.Icon"):set_image("icons/materia_" .. tostring(materia.type) .. ".png")
         ui_manager:get_widget("MateriaMenu.Container.Details.Materia.Name"):set_text(materia.name)
         for l = 1, 5 do
             if l > max_level then
@@ -428,9 +428,9 @@ UiContainer.MateriaMenu = {
                 ui_manager:get_widget("MateriaMenu.Container.Details.Materia.Stars.Star" .. tostring(l)):set_visible(false)
             else
                 if l <= level then
-                    ui_manager:get_widget("MateriaMenu.Container.Details.Materia.Stars.Star" .. tostring(l)):set_image("images/icons/materia_star_" .. tostring(materia.type) .. ".png")
+                    ui_manager:get_widget("MateriaMenu.Container.Details.Materia.Stars.Star" .. tostring(l)):set_image("icons/materia_star_" .. tostring(materia.type) .. ".png")
                 else
-                    ui_manager:get_widget("MateriaMenu.Container.Details.Materia.Stars.Star" .. tostring(l)):set_image("images/icons/materia_star_empty_" .. tostring(materia.type) .. ".png")
+                    ui_manager:get_widget("MateriaMenu.Container.Details.Materia.Stars.Star" .. tostring(l)):set_image("icons/materia_star_empty_" .. tostring(materia.type) .. ".png")
                 end
                 ui_manager:get_widget("MateriaMenu.Container.Details.Materia.Stars.Star" .. tostring(l)):set_visible(true)
             end
@@ -635,7 +635,7 @@ UiContainer.MateriaMenu = {
             if Materia[i] ~= nil then
                 local type = Game.Materia[Materia[i].id].type
                 local name = Game.Materia[Materia[i].id].name
-                ui_manager:get_widget("MateriaMenu.Container.List.Icon" .. tostring(pos)):set_image("images/icons/materia_" .. tostring(type) .. ".png")
+                ui_manager:get_widget("MateriaMenu.Container.List.Icon" .. tostring(pos)):set_image("icons/materia_" .. tostring(type) .. ".png")
                 ui_manager:get_widget("MateriaMenu.Container.List.Icon" .. tostring(pos)):set_visible(true)
                 ui_manager:get_widget("MateriaMenu.Container.List.Name" .. tostring(pos)):set_text(name)
                 ui_manager:get_widget("MateriaMenu.Container.List.Name" .. tostring(pos)):set_visible(true)

+ 1 - 1
data/data/scripts/menu/name_menu.lua

@@ -176,7 +176,7 @@ UiContainer.NameMenu = {
         self.confirm_position = 1
         ui_manager:get_widget("NameMenu.Container.Confirm.Cursor"):set_default_animation("Position" .. self.confirm_position)
         ui_manager:get_widget("NameMenu.Container.Options.Cursor"):set_default_animation("Position" .. self.options_position)
-        ui_manager:get_widget("NameMenu.Container.Character.Portrait"):set_image("images/characters/" .. tostring(self.id) .. ".png")
+        ui_manager:get_widget("NameMenu.Container.Character.Portrait"):set_image("characters/" .. tostring(self.id) .. ".png")
         if (string.lower(Characters[self.id].name) == "ex-soldier") then
             -- HACK: Hack for Ex-Soldier default. Can this be extracted from menu.lgp?
             self.default_name = "Cloud"

+ 1 - 1
data/data/scripts/menu/save_menu.lua

@@ -128,7 +128,7 @@ UiContainer.SaveMenu = {
                 ui_manager:get_widget(slot_id .. "LvNumber"):set_text(UiContainer.pad_value(savemap_manager:get_slot_character_level(slot, save_party[1]), 3))
                 for c = 1, 3 do
                     if save_party[c] ~= -1 and Characters[save_party[c] + 1] ~= nil then
-                        ui_manager:get_widget(slot_id .. "Party.Portrait" .. tostring(c)):set_image("images/characters/" .. tostring(save_party[c]) .. ".png")
+                        ui_manager:get_widget(slot_id .. "Party.Portrait" .. tostring(c)):set_image("characters/" .. tostring(save_party[c]) .. ".png")
                         ui_manager:get_widget(slot_id .. "Party.Portrait" .. tostring(c)):set_visible(true)
                     else
                         ui_manager:get_widget(slot_id .. "Party.Portrait" .. tostring(c)):set_visible(false)

+ 0 - 4
data/data/sounds.xml

@@ -1,4 +0,0 @@
-<!-- This file is to be overwritten by the installer -->
-<sounds>
-    <sound file_name="audio/sound/example.ogg" name="Example" />
-</sounds>

+ 0 - 0
data/data/texts.xml → data/data/texts/_texts.xml


+ 1 - 1
src/common/VGearsResource.h

@@ -63,7 +63,7 @@ namespace VGears{
              */
             virtual Ogre::DataStreamPtr openResource(){
                 // Last parameter to true to throw an exception.
-                // Change when ready.
+                // TODO: Change when ready.
                 return Ogre::ResourceGroupManager::getSingleton().openResource(
                   mName, mGroup, this, false
                 );

+ 2 - 2
src/core/AudioManager.cpp

@@ -60,11 +60,11 @@ AudioManager::AudioManager():
     else LOG_ERROR("AudioManager failed to initialised. There's no default sound device.");
 
     // Load musics.
-    XmlMusicsFile musics("./data/musics.xml");
+    XmlMusicsFile musics("./data/audio/musics/_musics.xml");
     musics.LoadMusics();
 
     // Load sounds.
-    XmlSoundsFile sounds("./data/sounds.xml");
+    XmlSoundsFile sounds("./data/audio/sounds/_sounds.xml");
     sounds.LoadSounds();
 }
 

+ 7 - 3
src/core/Background2D.cpp

@@ -50,7 +50,7 @@ Background2D::Background2D():
     scene_manager_ = Ogre::Root::getSingleton().getSceneManager("Scene");
     render_system_ = Ogre::Root::getSingletonPtr()->getRenderSystem();
     CreateVertexBuffers();
-    alpha_material_ = Ogre::MaterialManager::getSingleton().create("Background2DAlpha", "General");
+    alpha_material_ = Ogre::MaterialManager::getSingleton().create("Background2DAlpha", "FIELDS");
     Ogre::Pass* pass = alpha_material_->getTechnique(0)->getPass(0);
     pass->setVertexColourTracking(Ogre::TVC_AMBIENT);
     pass->setCullingMode(Ogre::CULL_NONE);
@@ -64,7 +64,7 @@ Background2D::Background2D():
     tex->setTextureName("system/blank.png");
     tex->setNumMipmaps(-1);
     tex->setTextureFiltering(Ogre::TFO_NONE);
-    add_material = Ogre::MaterialManager::getSingleton().create("Background2DAdd", "General");
+    add_material = Ogre::MaterialManager::getSingleton().create("Background2DAdd", "FIELDS");
     pass = add_material->getTechnique(0)->getPass(0);
     pass->setVertexColourTracking(Ogre::TVC_AMBIENT);
     pass->setCullingMode(Ogre::CULL_NONE);
@@ -79,7 +79,7 @@ Background2D::Background2D():
     tex->setNumMipmaps(-1);
     tex->setTextureFiltering(Ogre::TFO_NONE);
     subtract_material_ = Ogre::MaterialManager::getSingleton().create(
-      "Background2DSubtract", "General"
+      "Background2DSubtract", "FIELDS"
     );
     pass = subtract_material_->getTechnique(0)->getPass(0);
     pass->setVertexColourTracking(Ogre::TVC_AMBIENT);
@@ -114,6 +114,10 @@ void Background2D::InputDebug(const VGears::Event& event){
     }
 }
 
+void Background2D::Hide(){scene_manager_->removeRenderQueueListener(this);}
+
+void Background2D::Show(){scene_manager_->addRenderQueueListener(this);}
+
 void Background2D::Update(){
     for (unsigned int i = 0; i < animation_played_.size(); ++ i){
         for (unsigned int j = 0; j < animations_.size(); ++ j){

+ 15 - 0
src/core/Background2D.h

@@ -73,6 +73,21 @@ class Background2D : public Ogre::RenderQueueListener{
          */
         void InputDebug(const VGears::Event& event);
 
+        /**
+         * Hides the background.
+         *
+         * Once called, the background will not be rendered until {@see Show()} is called. If the
+         * background is already hidden, it will do nothing.
+         */
+        void Hide();
+
+        /**
+         * Shows the background.
+         *
+         * Once called, the background will start rendered until {@see Hide()} is called.
+         */
+        void Show();
+
         /**
          * Run each frame.
          *

+ 7 - 12
src/core/BattleManager.cpp

@@ -99,6 +99,7 @@ void BattleManager::StartBattle(const unsigned int id){
     CameraManager::getSingleton().SetBattleModule();
     DialogsManager::getSingleton().SetBattleModule();
     EntityManager::getSingleton().SetBattleModule();
+    EntityManager::getSingleton().GetBackground2D()->Hide();
     InputManager::getSingleton().SetBattleModule();
     ScriptManager::getSingleton().SetBattleModule();
     UiManager::getSingleton().SetBattleModule();
@@ -106,7 +107,7 @@ void BattleManager::StartBattle(const unsigned int id){
     // Load the formation XML file (name is dddd.xml)
     std::string filename = std::to_string(formation_id_);
     while (filename.length() < 4) filename = "0" + filename;
-    filename = "./data/game/formation/" + filename + ".xml";
+    filename = "./data/gamedata/formation/" + filename + ".xml";
     // This sets the data in the battle manager singleton.
     XmlFormationFile(filename).LoadFormation();
     // TODO: Music
@@ -142,7 +143,9 @@ void BattleManager::EndBattle(){
     CameraManager::getSingleton().SetPreviousModule();
     DialogsManager::getSingleton().SetPreviousModule();
     EntityManager::getSingleton().SetPreviousModule();
+    EntityManager::getSingleton().GetBackground2D()->Show();
     InputManager::getSingleton().SetPreviousModule();
+    ScriptManager::getSingleton().ClearBattle();
     ScriptManager::getSingleton().SetPreviousModule();
     UiManager::getSingleton().SetPreviousModule();
 }
@@ -163,7 +166,7 @@ void BattleManager::AddEnemy(
     enemies_.push_back(*enemy);
     EntityManager::getSingleton().AddBattleEntity(
       enemy->GetName() + "_" + std::to_string(enemies_.size() - 1),
-      "models/battle/enemy/" + enemy->GetModel() + ".mesh", enemy->GetPos(), Ogre::Degree(0),
+      "enemies/" + enemy->GetModel() + ".mesh", enemy->GetPos(), Ogre::Degree(0),
       Ogre::Vector3(MODEL_SCALE, MODEL_SCALE, MODEL_SCALE), id, visible
     );
 }
@@ -272,9 +275,8 @@ void BattleManager::LoadParty(){
     for (int i = 0; i < positions.size(); i ++){
         EntityManager::getSingleton().AddBattleEntity(
           "party_" + std::to_string(i),
-          "models/fields/entities/avfe.mesh", position, Ogre::Degree(0),
-          //Ogre::Vector3(MODEL_SCALE, MODEL_SCALE, MODEL_SCALE), 100 + i, true
-          Ogre::Vector3(0.1, 0.1, 0.1), 100 + i, true
+          "enemies/at_grunt.mesh", position, Ogre::Degree(0),
+          Ogre::Vector3(MODEL_SCALE, MODEL_SCALE, MODEL_SCALE), 100 + i, true
         );
 
         // Next position in Y axis
@@ -282,13 +284,6 @@ void BattleManager::LoadParty(){
 
 
     }
-
-    EntityManager::getSingleton().AddBattleEntity(
-      "center", "models/fields/entities/avfe.mesh", position, Ogre::Degree(0),
-      //Ogre::Vector3(MODEL_SCALE, MODEL_SCALE, MODEL_SCALE), 100 + i, true
-      Ogre::Vector3(0.01, 0.01, 0.01), 999, true
-    );
-
 }
 
 void BattleManager::UpdateField(){}

+ 1 - 1
src/core/DebugDraw.cpp

@@ -64,7 +64,7 @@ DebugDraw::DebugDraw():
     pass->setDepthWriteEnabled(true);
     pass->setLightingEnabled(false);
     pass->setSceneBlending(Ogre::SBT_TRANSPARENT_ALPHA);
-    font_ = Ogre::FontManager::getSingleton().getByName("CourierNew");
+    font_ = Ogre::FontManager::getSingleton().getByName("CourierNew", "SYSTEM");
     if (font_ == nullptr){
         LOG_ERROR("Could not find font \"CourierNew\" for debug draw.");
         throw std::runtime_error("Font load failure");

+ 2 - 3
src/core/DebugDraw.h

@@ -21,9 +21,8 @@
 #include <OgreSingleton.h>
 #include <OgreFont.h>
 
-class DebugDraw :
-  public Ogre::RenderQueueListener, public Ogre::Singleton<DebugDraw>
-{
+class DebugDraw : public Ogre::RenderQueueListener, public Ogre::Singleton<DebugDraw>{
+
     public:
 
         /**

+ 1 - 1
src/core/Enemy.cpp

@@ -239,7 +239,7 @@ void Enemy::SetCover(std::string cover){cover_ = cover;}
 void Enemy::ReadFromXml(){
     std::string filename = std::to_string(id_);
     while (filename.length() < 4) filename = "0" + filename;
-    filename = "./data/game/enemy/" + filename + ".xml";
+    filename = "./data/gamedata/enemy/" + filename + ".xml";
     XmlEnemyFile(filename).LoadEnemy(*this);
 }
 

+ 14 - 1
src/core/EntityModel.cpp

@@ -17,6 +17,7 @@
 #include <OgreEntity.h>
 #include <OgreRoot.h>
 #include "core/EntityModel.h"
+#include "core/EntityManager.h"
 #include "core/Logger.h"
 #include "core/Timer.h"
 
@@ -25,8 +26,20 @@ EntityModel::EntityModel(
 ): Entity(name, node), animation_current_(nullptr)
 {
     Ogre::SceneManager* scene_manager;
+    Ogre::String res_group;
+    switch(EntityManager::getSingleton().GetModule()){
+        case Manager::BATTLE:
+            res_group = "BATTLE_MODELS";
+            break;
+        case Manager::WORLD:
+            res_group = "WORLD_MODELS";
+            break;
+        case Manager::FIELD:
+        default:
+            res_group = "FIELD_MODELS";
+    }
     scene_manager = Ogre::Root::getSingleton().getSceneManager("Scene");
-    model_ = scene_manager->createEntity(name_, file_name);
+    model_ = scene_manager->createEntity(name_, file_name, res_group);
     model_->setVisible(false);
     PlayAnimation(animation_default_, Entity::AUTO_ANIMATION, Entity::PLAY_LOOPED, 0, -1);
     model_node_->attachObject(model_);

+ 4 - 1
src/core/EntityModel.h

@@ -25,7 +25,10 @@ class EntityModel : public Entity{
     public:
 
         /**
-         * Constructor.
+         * Constructor. Creates an entity model.
+         *
+         * The models will be looked for in the resource groups FIELD_MODELS, BATTLE_MODELS or
+         * WORLD_MODELS, depending on the module the {@see EntityManager} is currerntly set to.
          *
          * @param[in] name Entity name.
          * @param[in] file_name File with the model data.

+ 14 - 2
src/core/ScriptManager.cpp

@@ -57,8 +57,9 @@ ScriptManager::ScriptManager():
     luaopen_io(lua_state_);
     InitBinds();
     InitCmd();
+    // TODO: Use the one in data/ ?
     RunFile("system/system.lua");
-    XmlScriptsFile scripts("./data/scripts.xml");
+    XmlScriptsFile scripts("./data/scripts/_scripts.xml");
     scripts.LoadScripts();
 }
 
@@ -321,7 +322,18 @@ void ScriptManager::OnResize(){}
 
 void ScriptManager::ClearField(){}
 
-void ScriptManager::ClearBattle(){}
+void ScriptManager::ClearBattle(){
+    // Remove all battle script entities.
+    // TODO: Allso remove them as node scenes.
+    for (unsigned int i = 0; i < script_entity_.size(); ++ i){
+        if (script_entity_[i].type == BATTLE){
+            while(script_entity_[i].queue.size() > 0)
+                ScriptManager::RemoveEntityTopScript(script_entity_[i]);
+            script_entity_.erase(script_entity_.begin() + i);
+            i --;
+        }
+    }
+}
 
 void ScriptManager::ClearWorld(){}
 

+ 2 - 2
src/core/ScriptManagerBinds.h

@@ -60,9 +60,9 @@ void ScriptPrint(const char* text){
  */
 void ScriptMap(const char* text){
     EntityManager::getSingleton().Clear();
-    XmlMapsFile xml("./data/maps.xml");
+    XmlMapsFile xml("./data/fields/_fields.xml");
     Ogre::String file_name = xml.GetMapFileNameByName(text);
-    XmlMapFile xml_map("./data/" + file_name);
+    XmlMapFile xml_map("./data/fields/" + file_name);
     xml_map.LoadMap();
 }
 

+ 2 - 2
src/core/TextHandler.cpp

@@ -34,14 +34,14 @@ TextHandler::TextHandler(): language_(""){
 TextHandler::~TextHandler(){UnloadTexts();}
 
 void TextHandler::LoadFieldText(const std::string file_name){
-    XmlTextFile texts("./data/" + file_name);
+    XmlTextFile texts("./data/fields/" + file_name);
     texts.LoadTexts();
 }
 
 void TextHandler::SetLanguage(const Ogre::String& language){
     language_ = language;
     UnloadTexts();
-    XmlTextsFile texts("./data/texts.xml");
+    XmlTextsFile texts("./data/texts/_texts.xml");
     texts.LoadTexts();
 }
 

+ 2 - 2
src/core/UiManager.cpp

@@ -45,9 +45,9 @@ UiManager::~UiManager(){
 }
 
 void UiManager::Initialise(){
-    XmlFontsFile fonts("./data/fonts.xml");
+    XmlFontsFile fonts("./data/fonts/_fonts.xml");
     fonts.LoadFonts();
-    XmlScreensFile screens("./data/screens.xml");
+    XmlScreensFile screens("./data/screens/_screens.xml");
     screens.LoadScreens();
 }
 

+ 1 - 1
src/core/UiManager.h

@@ -45,7 +45,7 @@ class UiManager :
         /**
          * Initializes the manager.
          *
-         * Loads all available fonts and screens from fonts.xml and
+         * Loads all available fonts and screens from _fonts.xml and
          * screens.xml, respectably.
          */
         void Initialise();

+ 3 - 3
src/core/UiSprite.cpp

@@ -13,6 +13,7 @@
  * GNU General Public License for more details.
  */
 
+#include <iostream>
 #include <OgreHardwareBufferManager.h>
 #include <OgreMaterialManager.h>
 #include <OgreTechnique.h>
@@ -29,11 +30,10 @@ UiSprite::UiSprite(const Ogre::String& name, const Ogre::String& path_name, UiWi
 UiSprite::~UiSprite(){DestroyVertexBuffer();}
 
 void UiSprite::Initialise(){
+
     scene_manager_ = Ogre::Root::getSingleton().getSceneManager("Scene");
     render_system_ = Ogre::Root::getSingletonPtr()->getRenderSystem();
-    material_ = Ogre::MaterialManager::getSingleton().create(
-      "UiMaterials." + path_name_, "General"
-    );
+    material_ = Ogre::MaterialManager::getSingleton().create("UiMaterials." + path_name_, "IMAGES");
     Ogre::Pass* pass = material_->getTechnique(0)->getPass(0);
     pass->setVertexColourTracking(Ogre::TVC_AMBIENT);
     pass->setCullingMode(Ogre::CULL_NONE);

+ 2 - 2
src/core/UiTextArea.cpp

@@ -296,11 +296,11 @@ void UiTextArea::SetFont(const Ogre::String& font){
         return;
     }
     material_ = Ogre::MaterialManager::getSingleton().getByName(
-      "UiMaterials." + path_name_, "General"
+      "UiMaterials." + path_name_, "FONTS"
     );
     if (material_ == nullptr){
         material_ = Ogre::MaterialManager::getSingleton().create(
-          "UiMaterials." + path_name_, "General"
+          "UiMaterials." + path_name_, "FONTS"
         );
     }
     Ogre::Pass* pass = material_->getTechnique(0)->getPass(0);

+ 2 - 4
src/core/UiWidget.cpp

@@ -557,10 +557,8 @@ void UiWidget::SetColour(const float r, const float g, const float b){
 }
 
 void UiWidget::SetColours(
-  const float r1, const float g1, const float b1,
-  const float r2, const float g2, const float b2,
-  const float r3, const float g3, const float b3,
-  const float r4, const float g4, const float b4
+  const float r1, const float g1, const float b1, const float r2, const float g2, const float b2,
+  const float r3, const float g3, const float b3, const float r4, const float g4, const float b4
 ){
     colour_1_.r = r1; colour_1_.g = g1; colour_1_.b = b1;
     colour_2_.r = r2; colour_2_.g = g2; colour_2_.b = b2;

+ 1 - 1
src/core/XmlFontsFile.cpp

@@ -32,7 +32,7 @@ void XmlFontsFile::LoadFonts(){
     node = node->FirstChild();
     while (node != nullptr){
         if (node->Type() == TiXmlNode::TINYXML_ELEMENT && node->ValueStr() == "font"){
-            XmlFontFile font("./data/" + GetString(node, "file_name"));
+            XmlFontFile font("./data/fonts/" + GetString(node, "file_name"));
             font.LoadFont();
         }
         node = node->NextSibling();

+ 3 - 3
src/core/XmlMapFile.cpp

@@ -40,7 +40,7 @@ void XmlMapFile::LoadMap(){
             if (!name.empty()){
                 VGears::WalkmeshFileManager::getSingleton();
                 VGears::WalkmeshFilePtr walkmesh = VGears::WalkmeshFileManager::getSingleton()
-                  .load(name, "Game").staticCast<VGears::WalkmeshFile>();
+                  .load(name, "FIELDS").staticCast<VGears::WalkmeshFile>();
                 EntityManager::getSingleton().GetWalkmesh()->load(walkmesh);
             }
         }
@@ -56,7 +56,7 @@ void XmlMapFile::LoadMap(){
                 // TODO Migrate this code to a Resource and use it's group to load the background.
                 VGears::Background2DFilePtr background
                   = VGears::Background2DFileManager::getSingleton()
-                    .load(name, "Game").staticCast<VGears::Background2DFile>();
+                    .load(name, "FIELDS").staticCast<VGears::Background2DFile>();
                 EntityManager::getSingleton().GetBackground2D()->load(background);
             }
         }
@@ -116,7 +116,7 @@ void XmlMapFile::LoadMap(){
         }
         else if (node->Type() == TiXmlNode::TINYXML_ELEMENT && node->ValueStr() == "script"){
             Ogre::String file_name = GetString(node, "file_name");
-            if (file_name != "") ScriptManager::getSingleton().RunFile(file_name);
+            if (file_name != "") ScriptManager::getSingleton().RunFile("fields/" + file_name);
         }
         else if (node->Type() == TiXmlNode::TINYXML_ELEMENT && node->ValueStr() == "tracks"){
             for (TiXmlNode* track = node->FirstChild(); track; track = track->NextSibling()){

+ 18 - 14
src/installer/BattleDataInstaller.cpp

@@ -208,9 +208,9 @@ unsigned int BattleDataInstaller::ProcessModel(){
         );
         TexFile tex(battle_lgp_files_[next_model_to_process_]);
         std::string path = output_dir_ + "models/battle/";
-        if (info.is_player) path += "char/";
-        else if (info.is_scene) path += "scene/";
-        else path += "enemy/";
+        if (info.is_player) path += "characters/";
+        else if (info.is_scene) path += "scenes/";
+        else path += "enemies/";
         path += (id + type + "_" + info.name_normal + ".png");
         tex.SavePng(path);
         res_mgr_->declareResource(
@@ -265,11 +265,11 @@ unsigned int BattleDataInstaller::ConvertModel(){
     if (next_model_to_convert_ >= models_.size()) return models_.size();
     Model model = models_[next_model_to_convert_];
     try{
-        std::string path = "models/battle/";
+        std::string path = "";
         FF7Data::BattleModelInfo info = FF7Data::GetBattleModelInfo(model.id);
-        if (info.is_player) path += "char/";
-        else if (info.is_scene) path += "scene/";
-        else path += "enemy/";
+        if (info.is_player) path += "characters/";
+        else if (info.is_scene) path += "scenes/";
+        else path += "enemies/";
 
 
         DecompileHrc(
@@ -637,14 +637,14 @@ void BattleDataInstaller::WriteFormations(){
         xml.LinkEndChild(container.release());
         std::string file_name = std::to_string(formation.id);
         while (file_name.length() < 4) file_name = "0" + file_name;
-        file_name = "game/formation/" + file_name + ".xml";
+        file_name = "gamedata/formation/" + file_name + ".xml";
         xml.SaveFile(output_dir_ + file_name);
         formation_map_[formation.id] = file_name;
     }
 }
 
 std::string BattleDataInstaller::BuildEnemyFileName(Enemy enemy){
-    std::string file_name = "game/enemy/";
+    std::string file_name = "gamedata/enemy/";
     std::string id = std::to_string(enemy.id);
     while (id.size() < 4) id = "0" + id;
     /*file_name += (id + "_");
@@ -662,7 +662,7 @@ std::string BattleDataInstaller::BuildEnemyFileName(Enemy enemy){
 }
 
 std::string BattleDataInstaller::BuildAttackFileName(Attack attack){
-    std::string file_name = "game/attack/";
+    std::string file_name = "gamedata/attack/";
     std::string id = std::to_string(attack.id);
     while (id.size() < 4) id = "0" + id;
     file_name += (id + "_");
@@ -762,16 +762,18 @@ void BattleDataInstaller::ExportMesh(const std::string outdir, const Ogre::MeshP
     Ogre::SkeletonPtr skeleton(mesh->getSkeleton());
     Ogre::SkeletonSerializer skeleton_serializer;
     skeleton_serializer.exportSkeleton(
-      skeleton.get(), output_dir_ + outdir + base_mesh_name + ".skeleton"
+      skeleton.get(), output_dir_ + "models/battle/" + outdir + base_mesh_name + ".skeleton"
     );
     mesh->setSkeletonName(outdir + base_mesh_name + ".skeleton");
-    mesh_serializer.exportMesh(mesh.get(), output_dir_ + outdir + mesh->getName());
+    mesh_serializer.exportMesh(
+      mesh.get(), output_dir_ + "models/battle/" + outdir + mesh->getName()
+    );
     Ogre::MaterialSerializer mat_ser;
     std::set<std::string> textures;
     Ogre::Mesh::SubMeshList sub_meshes = mesh->getSubMeshes();
     for (Ogre::SubMesh* sub_mesh : sub_meshes){
         // Change material name to avoid conflicts with field model materials.
-        sub_mesh->setMaterialName(sub_mesh->getMaterialName() + "_btl");
+        sub_mesh->setMaterialName(sub_mesh->getMaterialName());
         Ogre::MaterialPtr mat(
             Ogre::MaterialManager::getSingleton().getByName(sub_mesh->getMaterialName())
         );
@@ -803,7 +805,9 @@ void BattleDataInstaller::ExportMesh(const std::string outdir, const Ogre::MeshP
             materials_.push_back(sub_mesh->getMaterialName());
         }
     }
-    mat_ser.exportQueued(output_dir_ + outdir + base_mesh_name + VGears::EXT_MATERIAL);
+    mat_ser.exportQueued(
+      output_dir_ + "models/battle/" + outdir + base_mesh_name + VGears::EXT_MATERIAL
+    );
 }
 
 void BattleDataInstaller::GenerateRsdFiles(Model model, std::string path){

+ 34 - 26
src/installer/DataInstaller.cpp

@@ -150,73 +150,73 @@ float DataInstaller::Progress(){
         case KERNEL_COMMANDS:
             write_output_line_("Extracting command data...", 2, true);
             kernel_installer_->ReadCommands();
-            kernel_installer_->WriteCommands(output_dir_ + "game/commands.lua");
+            kernel_installer_->WriteCommands(output_dir_ + "gamedata/commands.lua");
             installation_state_ = KERNEL_ATTACKS;
             return CalcProgress();
         case KERNEL_ATTACKS:
             write_output_line_("Extracting attack data...", 2, true);
             kernel_installer_->ReadAttacks();
-            kernel_installer_->WriteAttacks(output_dir_ + "game/attacks.lua");
+            kernel_installer_->WriteAttacks(output_dir_ + "gamedata/attacks.lua");
             installation_state_ = KERNEL_CHARACTERS;
             return CalcProgress();
         case KERNEL_CHARACTERS:
             write_output_line_("Extracting character data...", 2, true);
             kernel_installer_->ReadCharacters();
-            kernel_installer_->WriteCharacters(output_dir_ + "game/characters.lua");
+            kernel_installer_->WriteCharacters(output_dir_ + "gamedata/characters.lua");
             installation_state_ = KERNEL_ITEMS;
             return CalcProgress();
         case KERNEL_ITEMS:
             write_output_line_("Extracting item data...", 2, true);
             kernel_installer_->ReadItems();
-            kernel_installer_->WriteItems(output_dir_ + "game/items.lua");
+            kernel_installer_->WriteItems(output_dir_ + "gamedata/items.lua");
             installation_state_ = KERNEL_GROWTH;
             return CalcProgress();
         case KERNEL_GROWTH:
             write_output_line_("Extracting growth data...", 2, true);
             kernel_installer_->ReadGrowth();
-            kernel_installer_->WriteGrowth(output_dir_ + "game/growth.lua");
+            kernel_installer_->WriteGrowth(output_dir_ + "gamedata/growth.lua");
             installation_state_ = KERNEL_WEAPONS;
             return CalcProgress();
         case KERNEL_WEAPONS:
             write_output_line_("Extracting weapon data...", 2, true);
             kernel_installer_->ReadWeapons();
-            kernel_installer_->WriteWeapons(output_dir_ + "game/weapons.lua");
+            kernel_installer_->WriteWeapons(output_dir_ + "gamedata/weapons.lua");
             installation_state_ = KERNEL_ARMORS;
             return CalcProgress();
         case KERNEL_ARMORS:
             write_output_line_("Extracting armor data...", 2, true);
             kernel_installer_->ReadArmors();
-            kernel_installer_->WriteArmors(output_dir_ + "game/armors.lua");
+            kernel_installer_->WriteArmors(output_dir_ + "gamedata/armors.lua");
             installation_state_ = KERNEL_ACCESSORIES;
             return CalcProgress();
         case KERNEL_ACCESSORIES:
             write_output_line_("Extracting accessory data...", 2, true);
             kernel_installer_->ReadAccessories();
-            kernel_installer_->WriteAccessories(output_dir_ + "game/accessories.lua");
+            kernel_installer_->WriteAccessories(output_dir_ + "gamedata/accessories.lua");
             installation_state_ = KERNEL_MATERIA;
             return CalcProgress();
         case KERNEL_MATERIA:
             write_output_line_("Extracting materia data...", 2, true);
             kernel_installer_->ReadMateria();
-            kernel_installer_->WriteMateria(output_dir_ + "game/materia.lua");
+            kernel_installer_->WriteMateria(output_dir_ + "gamedata/materia.lua");
             installation_state_ = KERNEL_KEY_ITEMS;
             return CalcProgress();
         case KERNEL_KEY_ITEMS:
             write_output_line_("Extracting key item data...", 2, true);
             kernel_installer_->ReadKeyItems();
-            kernel_installer_->WriteKeyItems(output_dir_ + "game/key_items.lua");
+            kernel_installer_->WriteKeyItems(output_dir_ + "gamedata/key_items.lua");
             installation_state_ = KERNEL_SUMMON_NAMES;
             return CalcProgress();
         case KERNEL_SUMMON_NAMES:
             write_output_line_("Extracting summon attack names data...", 2, true);
             kernel_installer_->ReadSummonNames();
-            kernel_installer_->WriteSummonNames(output_dir_ + "game/summons.lua");
+            kernel_installer_->WriteSummonNames(output_dir_ + "gamedata/summons.lua");
             installation_state_ = KERNEL_SAVEMAP;
             return CalcProgress();
         case KERNEL_SAVEMAP:
             write_output_line_("Extracting the initial savemap...", 2, true);
             kernel_installer_->ReadInitialSaveMap();
-            kernel_installer_->WriteInitialSaveMap(output_dir_ + "game/initial_savemap.lua");
+            kernel_installer_->WriteInitialSaveMap(output_dir_ + "gamedata/initial_savemap.lua");
             installation_state_ = MEDIA_IMAGES;
             return CalcProgress();
         case MEDIA_IMAGES:
@@ -381,25 +381,33 @@ const float DataInstaller::CalcProgress(){
 }
 
 void DataInstaller::CreateDirectories(){
+    CreateDir("audio/musics");
+    CreateDir("audio/sounds");
+    CreateDir("fields");
+    CreateDir("fonts");
     CreateDir("temp");
     CreateDir("temp/char");
     CreateDir("temp/battle_models");
-    CreateDir("game");
-    CreateDir("game/enemy");
-    CreateDir("game/attack");
-    CreateDir("game/formation");
+    CreateDir("gamedata");
+    CreateDir("gamedata/enemy");
+    CreateDir("gamedata/attack");
+    CreateDir("gamedata/formation");
     CreateDir("images/icons");
     CreateDir("images/other");
     CreateDir("images/characters");
     CreateDir("images/fonts");
     CreateDir("images/reels");
     CreateDir("images/window");
-    CreateDir("models/fields/entities");
-    CreateDir("models/battle/char");
-    CreateDir("models/battle/scene");
-    CreateDir("models/battle/enemy");
-    CreateDir("audio/sound");
-    CreateDir("audio/music");
+    CreateDir("screens");
+    CreateDir("scripts");
+    CreateDir("system");
+    CreateDir("texts");
+    CreateDir("models/fields/");
+    CreateDir("models/battle/characters");
+    CreateDir("models/battle/scenes");
+    CreateDir("models/battle/enemies");
+
+
     application_.ResMgr()->addResourceLocation(
       output_dir_ + "temp/char/", "FileSystem", "FFVII", true, true
     );
@@ -410,16 +418,16 @@ void DataInstaller::CreateDirectories(){
       output_dir_ + "models/", "FileSystem", "FFVII", true, true
     );
     application_.ResMgr()->addResourceLocation(
-      output_dir_ + "models/fields/entities/", "FileSystem", "FFVIITextures", true, true
+      output_dir_ + "models/fields/", "FileSystem", "FFVIITextures", true, true
     );
     application_.ResMgr()->addResourceLocation(
-      output_dir_ + "models/battle/char/", "FileSystem", "FFVIITextures", true, true
+      output_dir_ + "models/battle/characters/", "FileSystem", "FFVIITextures", true, true
     );
     application_.ResMgr()->addResourceLocation(
-      output_dir_ + "models/battle/scene/", "FileSystem", "FFVIITextures", true, true
+      output_dir_ + "models/battle/scenes/", "FileSystem", "FFVIITextures", true, true
     );
     application_.ResMgr()->addResourceLocation(
-      output_dir_ + "models/battle/enemy/", "FileSystem", "FFVIITextures", true, true
+      output_dir_ + "models/battle/enemies/", "FileSystem", "FFVIITextures", true, true
     );
     fields_lgp_ = std::make_unique<ScopedLgp>(
       application_.getRoot(), input_dir_ + "data/field/flevel.lgp", "LGP", "FFVIIFields"

+ 17 - 28
src/installer/FieldDataInstaller.cpp

@@ -27,7 +27,7 @@
 
 float FieldDataInstaller::LINE_SCALE_FACTOR(0.0078124970964f);
 
-std::string FieldDataInstaller::FIELD_MODELS_DIR("models/fields/entities");
+std::string FieldDataInstaller::FIELD_MODELS_DIR("models/fields");
 
 std::string FieldDataInstaller::FIELD_MAPS_DIR("fields");
 
@@ -290,13 +290,13 @@ void FieldDataInstaller::Write(int field_index){
     //write_output_line_("Writing field " + FieldName(map));
     std::unique_ptr<TiXmlElement> xml_element(new TiXmlElement("map"));
     xml_element->SetAttribute("name", map);
-    xml_element->SetAttribute("file_name", FIELD_MAPS_DIR + "/" + map + "/map.xml");
+    xml_element->SetAttribute("file_name", map + "/map.xml");
     element_->LinkEndChild(xml_element.release());
 }
 
 void FieldDataInstaller::WriteEnd(){
     doc_->LinkEndChild(element_.release());
-    doc_->SaveFile(output_dir_ + "/maps.xml");
+    doc_->SaveFile(output_dir_ + "/fields/_fields.xml");
 }
 
 std::vector<std::string> FieldDataInstaller::ConvertModelsInit(){
@@ -375,7 +375,7 @@ void FieldDataInstaller::ExportMesh(const std::string outdir, const Ogre::MeshPt
     skeleton_serializer.exportSkeleton(
       skeleton.getPointer(), outdir + base_mesh_name + ".skeleton"
     );
-    mesh->setSkeletonName(FIELD_MODELS_DIR + "/" + base_mesh_name + ".skeleton");
+    mesh->setSkeletonName(base_mesh_name + ".skeleton");
     mesh_serializer.exportMesh(mesh.getPointer(), outdir + mesh->getName());
     Ogre::Mesh::SubMeshIterator it(mesh->getSubMeshIterator());
     Ogre::MaterialSerializer    mat_ser;
@@ -412,10 +412,7 @@ void FieldDataInstaller::ExportMesh(const std::string outdir, const Ogre::MeshPt
                                     VGears::StringUtil::splitBase(
                                       unit->getTextureName(), base_name
                                     );
-                                    unit->setTextureName(
-                                      FIELD_MODELS_DIR + "/" + base_mesh_name
-                                      + "_" + base_name + ".png"
-                                    );
+                                    unit->setTextureName(base_mesh_name + "_" + base_name + ".png");
 
                                     tex.SavePng(
                                       output_dir_ + FIELD_MODELS_DIR + "/" + base_name + ".png", 0
@@ -556,33 +553,23 @@ void FieldDataInstaller::PcFieldToVGearsField(VGears::FLevelFilePtr& field){
         std::unique_ptr<TiXmlElement> element(new TiXmlElement("map"));
         // Script.
         std::unique_ptr<TiXmlElement> xml_script_element(new TiXmlElement("script"));
-        xml_script_element->SetAttribute(
-          "file_name", FIELD_MAPS_DIR + "/" + field->getName() + "/script.lua"
-        );
+        xml_script_element->SetAttribute("file_name", field->getName() + "/script.lua");
         element->LinkEndChild(xml_script_element.release());
         // Background.
         std::unique_ptr<TiXmlElement> xml_background_2d(new TiXmlElement("background2d"));
-        xml_background_2d->SetAttribute(
-          "file_name", FIELD_MAPS_DIR + "/" + field->getName() + "/bg.xml"
-        );
+        xml_background_2d->SetAttribute("file_name", field->getName() + "/bg.xml");
         element->LinkEndChild(xml_background_2d.release());
         // Texts.
         std::unique_ptr<TiXmlElement> xml_texts(new TiXmlElement("texts"));
-        xml_texts->SetAttribute(
-          "file_name", FIELD_MAPS_DIR + "/" + field->getName() + "/text.xml"
-        );
+        xml_texts->SetAttribute("file_name", field->getName() + "/text.xml");
         element->LinkEndChild(xml_texts.release());
         // Walkmesh.
         std::unique_ptr<TiXmlElement> xml_walkmesh(new TiXmlElement("walkmesh"));
-        xml_walkmesh->SetAttribute(
-          "file_name", FIELD_MAPS_DIR + "/" + field->getName() + "/wm.xml"
-        );
+        xml_walkmesh->SetAttribute("file_name", field->getName() + "/wm.xml");
         element->LinkEndChild(xml_walkmesh.release());
         // Forward direction (angle player moves when "up" is pressed)
         std::unique_ptr<TiXmlElement> xml_forward_direction(new TiXmlElement("movement_rotation"));
-        xml_forward_direction->SetAttribute(
-          "degree", std::to_string(triggers->MovementRotation())
-        );
+        xml_forward_direction->SetAttribute("degree", std::to_string(triggers->MovementRotation()));
         element->LinkEndChild(xml_forward_direction.release());
         // Get this fields Id.
         const size_t this_field_id = GetFieldId(field->getName(), map_list_);
@@ -691,7 +678,8 @@ void FieldDataInstaller::PcFieldToVGearsField(VGears::FLevelFilePtr& field){
             }
             const int char_id = entity.char_id;
             if (char_id != -1){
-                const VGears::ModelListFile::ModelDescription& desc = models->GetModels().at(char_id);
+                const VGears::ModelListFile::ModelDescription& desc
+                  = models->GetModels().at(char_id);
                 auto& animations = used_models_and_anims_.ModelAnimations(desc.hrc_name);
                 for (const auto& anim : desc.animations)
                     animations.insert(used_models_and_anims_.NormalizeAnimationName(anim.name));
@@ -701,8 +689,7 @@ void FieldDataInstaller::PcFieldToVGearsField(VGears::FLevelFilePtr& field){
                 auto lower_case_hrc_name = desc.hrc_name;
                 VGears::StringUtil::toLowerCase(lower_case_hrc_name);
                 xml_entity_script->SetAttribute(
-                  "file_name",
-                  FIELD_MODELS_DIR + "/" + used_models_and_anims_.ModelMetaDataName(lower_case_hrc_name)
+                  "file_name", used_models_and_anims_.ModelMetaDataName(lower_case_hrc_name)
                 );
                 xml_entity_script->SetAttribute("index", entity.index);
                 if (desc.type == VGears::ModelListFile::PLAYER){
@@ -805,7 +792,7 @@ void FieldDataInstaller::PcFieldToVGearsField(VGears::FLevelFilePtr& field){
             const int min_y = triggers->GetCameraRange().top * BG_SCALE_UP_FACTOR;
             const int max_x = triggers->GetCameraRange().right * BG_SCALE_UP_FACTOR;
             const int max_y = triggers->GetCameraRange().bottom * BG_SCALE_UP_FACTOR;
-            bg_element->SetAttribute("image", FIELD_MAPS_DIR + "/" + field->getName() + "/tiles.png");
+            bg_element->SetAttribute("image", field->getName() + "/tiles.png");
             bg_element->SetAttribute("position", Ogre::StringConverter::toString(position));
             bg_element->SetAttribute("orientation", Ogre::StringConverter::toString(orientation));
             bg_element->SetAttribute("fov", Ogre::StringConverter::toString(fov));
@@ -871,7 +858,9 @@ void FieldDataInstaller::PcFieldToVGearsField(VGears::FLevelFilePtr& field){
                 //}
             }
             bg_doc.LinkEndChild(bg_element.release());
-            bg_doc.SaveFile(output_dir_ + "/" + FIELD_MAPS_DIR + "/" + field->getName() + "/bg.xml");
+            bg_doc.SaveFile(
+              output_dir_ + "/" + FIELD_MAPS_DIR + "/" + field->getName() + "/bg.xml"
+            );
         }
     }
     {

+ 11 - 11
src/installer/MediaDataInstaller.cpp

@@ -349,7 +349,7 @@ bool MediaDataInstaller::InstallSounds(){
 
     dat_.SetOffset(header.offset);
     std::ofstream out(
-      output_dir_ + "audio/sound/" + std::to_string(processed_sounds_) + ".wav",
+      output_dir_ + "audio/sounds/" + std::to_string(processed_sounds_) + ".wav",
       std::ios::out | std::ios::binary
     );
 
@@ -364,18 +364,18 @@ bool MediaDataInstaller::InstallSounds(){
     // TODO: Don't use system calls! Integrate libav or something that can do the conversion
     // natively
     std::string command = (boost::format(
-      "ffmpeg -hide_banner -loglevel panic -y -i %1%audio/sound/%2%.wav %1%audio/sound/%2%.ogg"
+      "ffmpeg -hide_banner -loglevel panic -y -i %1%audio/sounds/%2%.wav %1%audio/sounds/%2%.ogg"
     ) % output_dir_ % processed_sounds_).str();
     if (!no_ffmpeg_) std::system(command.c_str());
 
     // Remove the wav file.
     if (!keep_originals_){
         std::remove(
-          (output_dir_ + "audio/sound/" + std::to_string(processed_sounds_) + ".wav").c_str()
+          (output_dir_ + "audio/sounds/" + std::to_string(processed_sounds_) + ".wav").c_str()
         );
     }
 
-    sounds_.push_back("audio/sound/" + std::to_string(processed_sounds_) + ".ogg");
+    sounds_.push_back("audio/sounds/" + std::to_string(processed_sounds_) + ".ogg");
     processed_sounds_ ++;
     if (processed_sounds_ >= TOTAL_SOUNDS) return true;
     else return false;
@@ -400,7 +400,7 @@ void MediaDataInstaller::WriteSoundIndex(){
         }
     }
     xml.LinkEndChild(container.release());
-    xml.SaveFile(output_dir_ + "sounds.xml");
+    xml.SaveFile(output_dir_ + "audio/sounds/_sounds.xml");
 }
 
 int MediaDataInstaller::InstallMusicsInit(){
@@ -442,21 +442,21 @@ bool MediaDataInstaller::InstallMusics(){
     File midi(input_dir_ + "data/midi/midi.lgp");
 
     std::fstream out;
-    out.open(output_dir_ + "audio/music/" + std::to_string(index) + ".mid", std::ios::out);
+    out.open(output_dir_ + "audio/musics/" + std::to_string(index) + ".mid", std::ios::out);
     midi.SetOffset(f.data_offset);
     for (int j = 0; j < f.data_size; j ++) out << midi.readU8();
     out.close();
 
     // Convert to ogg (TiMidity + FFMpeg)
     std::string command = (boost::format(
-      "timidity --quiet=3 %1%audio/music/%2%.mid -Ow -o - "
-      "| ffmpeg -hide_banner -loglevel panic -y -i - %1%audio/music/%2%.ogg"
+      "timidity --quiet=3 %1%audio/musics/%2%.mid -Ow -o - "
+      "| ffmpeg -hide_banner -loglevel panic -y -i - %1%audio/musics/%2%.ogg"
     ) % output_dir_ % index).str();
     if (!no_ffmpeg_ && !no_timidity_) std::system(command.c_str());
 
     // Remove the midi file.
     if (!keep_originals_)
-        std::remove((output_dir_ + "audio/music/" + std::to_string(index) + ".mid").c_str());
+        std::remove((output_dir_ + "audio/musics/" + std::to_string(index) + ".mid").c_str());
 
     musics_.push_back("audio/music/" + std::to_string(processed_musics_) + ".ogg");
     processed_musics_ ++;
@@ -477,7 +477,7 @@ void MediaDataInstaller::InstallHQMusics(){
         }
 
         std::string command = (boost::format(
-          "ffmpeg -hide_banner -loglevel panic -y -i %1%music/%2%.wav %3%audio/sound/%4%.ogg"
+          "ffmpeg -hide_banner -loglevel panic -y -i %1%musics/%2%.wav %3%audio/sounds/%4%.ogg"
         ) % input_dir_ % hq_music % output_dir_ % index).str();
         if (!no_ffmpeg_)  std::system(command.c_str());
     }
@@ -504,6 +504,6 @@ void MediaDataInstaller::WriteMusicsIndex(){
         }
     }
     xml.LinkEndChild(container.release());
-    xml.SaveFile(output_dir_ + "musics.xml");
+    xml.SaveFile(output_dir_ + "audio/musics/_musics.xml");
 }
 

+ 1 - 1
src/installer/decompiler/field/instruction/FieldModuleInstruction.cpp

@@ -107,7 +107,7 @@ void FieldModuleInstruction::ProcessBATTLE(CodeGenerator* code_gen){
     const auto& battle_id = FieldCodeGenerator::FormatValueOrVariable(
       cg->GetFormatter(), params_[0]->GetUnsigned(), params_[1]->GetUnsigned()
     );
-    code_gen->AddOutputLine((boost::format("attle_manager:start_battle(%1%)") % battle_id).str());
+    code_gen->AddOutputLine((boost::format("battle_manager:start_battle(%1%)") % battle_id).str());
 }
 
 void FieldModuleInstruction::ProcessBTLON(CodeGenerator* code_gen){

+ 35 - 9
src/main.cpp

@@ -62,8 +62,7 @@ int main(int argc, char *argv[]){
         Ogre::SceneManager *scene_manager(nullptr);
 
         auto timer = std::make_unique<Timer>();
-        auto particle_system_manager =
-          std::make_unique<ParticleSystemManager>();
+        auto particle_system_manager = std::make_unique<ParticleSystemManager>();
 
         // Set scene camera and viewport for other modules.
         // Create this before initialize particle because some of them use
@@ -81,16 +80,44 @@ int main(int argc, char *argv[]){
         //VGears::MapFileManager* worldManager = new VGears::MapFileManager();
 
         // Initialize resources.
-        // TODO: Use correct file location in the end, now is OK for testing
         Ogre::ResourceGroupManager::getSingleton().addResourceLocation(
-          ".", "FileSystem"
+          "./data/system/", "FileSystem"
         );
         Ogre::ResourceGroupManager::getSingleton().addResourceLocation(
-          "./data/wm", "FileSystem", "TEST"
+          "./data/audio/", "FileSystem", "AUDIO"
         );
         Ogre::ResourceGroupManager::getSingleton().addResourceLocation(
-          "./data/wm/world_us.lgp",
-          VGears::LGPArchiveFactory::ARCHIVE_TYPE, "TEST"
+          "./data/fields/", "FileSystem", "FIELDS", true
+        );
+        Ogre::ResourceGroupManager::getSingleton().addResourceLocation(
+          "./data/fonts/", "FileSystem", "FONTS"
+        );
+        Ogre::ResourceGroupManager::getSingleton().addResourceLocation(
+          "./data/gamedata/", "FileSystem", "GAMEDATA"
+        );
+        Ogre::ResourceGroupManager::getSingleton().addResourceLocation(
+          "./data/images/", "FileSystem", "IMAGES", true
+        );
+        Ogre::ResourceGroupManager::getSingleton().addResourceLocation(
+          "./data/models/fields/", "FileSystem", "FIELD_MODELS"
+        );
+        Ogre::ResourceGroupManager::getSingleton().addResourceLocation(
+          "./data/models/battle/", "FileSystem", "BATTLE_MODELS", true
+        );
+        Ogre::ResourceGroupManager::getSingleton().addResourceLocation(
+          "./data/screens/", "FileSystem", "SCREENS"
+        );
+        Ogre::ResourceGroupManager::getSingleton().addResourceLocation(
+          "./data/scripts/", "FileSystem", "SCRIPTS"
+        );
+        Ogre::ResourceGroupManager::getSingleton().addResourceLocation(
+          "./data/system/", "FileSystem", "SYSTEM"
+        );
+        Ogre::ResourceGroupManager::getSingleton().addResourceLocation(
+          "./data/texts/", "FileSystem", "TEXTS"
+        );
+        Ogre::ResourceGroupManager::getSingleton().addResourceLocation(
+          "./data/wm", "FileSystem", "WORLD_MAP"
         );
         Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
 
@@ -126,8 +153,7 @@ int main(int argc, char *argv[]){
 
         // Execute the configuration file to locad values.
         ConfigFile config;
-        config.Execute("./data/config.cfg");
-
+        config.Execute("./data/config/config.cfg");
 
         // Initialize UID and run it's scripts.
         ui_manager->Initialise();

+ 5 - 12
src/map/VGearsBackground2DFile.cpp

@@ -24,9 +24,8 @@ namespace VGears{
 
 
     Background2DFile::Background2DFile(
-      Ogre::ResourceManager *creator, const String &name,
-      Ogre::ResourceHandle handle, const String &group, bool is_manual,
-      Ogre::ManualResourceLoader *loader
+      Ogre::ResourceManager *creator, const String &name, Ogre::ResourceHandle handle,
+      const String &group, bool is_manual, Ogre::ManualResourceLoader *loader
     ) : Resource(creator, name, handle, group, is_manual, loader){}
 
     Background2DFile::~Background2DFile(){unload();}
@@ -51,9 +50,7 @@ namespace VGears{
 
     size_t Background2DFile::calculateSize() const{return 0;}
 
-    void Background2DFile::SetTextureName(const String &texture_name){
-        texture_name_ = texture_name;
-    }
+    void Background2DFile::SetTextureName(const String &texture_name){texture_name_ = texture_name;}
 
     String Background2DFile::GetTextureName() const{ return texture_name_;}
 
@@ -65,9 +62,7 @@ namespace VGears{
 
     Ogre::Vector4 Background2DFile::GetRange() const{return range_;}
 
-    void Background2DFile::SetPosition(const Ogre::Vector3 &position){
-        position_ = position;
-    }
+    void Background2DFile::SetPosition(const Ogre::Vector3 &position){position_ = position;}
 
     Ogre::Vector3 Background2DFile::GetPosition() const{return position_;}
 
@@ -75,9 +70,7 @@ namespace VGears{
         orientation_ = orientation;
     }
 
-    Ogre::Quaternion Background2DFile::GetOrientation() const{
-        return orientation_;
-    }
+    Ogre::Quaternion Background2DFile::GetOrientation() const{return orientation_;}
 
     void Background2DFile::SetFov(const Ogre::Radian &fov){fov_ = fov;}
 

+ 8 - 13
src/map/VGearsBackground2DFile.h

@@ -33,20 +33,16 @@ namespace VGears{
             /**
              * Constructor.
              *
-             * @param[in] creator Pointer to the ResourceManager that is
-             * creating this resource.
+             * @param[in] creator Pointer to the ResourceManager that is creating this resource.
              * @param[in] name The unique name of the resource.
              * @param[in] handle @todo Understand and document.
-             * @param[in] group The name of the resource group to which this
-             * resource belong.
-             * @param[in] is_manual True if the resource is manually loaded,
-             * false otherwise.
-             * @param[in] loader Pointer to a ManualResourceLoader
-             * implementation which will be called when the Resource wishes to
-             * load (should be supplied if is_manual is set to true). It can be
-             * null, but the Resource will never be able to reload if anything
-             * ever causes it to unload. Therefore provision of a proper
-             * ManualResourceLoader instance is strongly recommended.
+             * @param[in] group The name of the resource group to which this resource belong.
+             * @param[in] is_manual True if the resource is manually loaded, false otherwise.
+             * @param[in] loader Pointer to a ManualResourceLoader implementation which will be
+             * called when the Resource wishes to load (should be supplied if is_manual is set to
+             * true). It can be null, but the Resource will never be able to reload if anything
+             * ever causes it to unload. Therefore provision of a proper ManualResourceLoader
+             * instance is strongly recommended.
              */
             Background2DFile(
               Ogre::ResourceManager* creator, const String &name, Ogre::ResourceHandle handle,
@@ -162,7 +158,6 @@ namespace VGears{
 
         protected:
 
-
             /**
              * Loads the file.
              */