rmxp_extractor 1.8 → 1.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (411) hide show
  1. checksums.yaml +4 -4
  2. data/CODE_OF_CONDUCT.md +74 -74
  3. data/Gemfile +13 -13
  4. data/Gemfile.lock +1 -1
  5. data/LICENSE.txt +21 -21
  6. data/README.md +35 -35
  7. data/Rakefile +6 -6
  8. data/bin/rmxp_extractor +13 -13
  9. data/bin/setup +8 -8
  10. data/diff_check.rb +13 -13
  11. data/lib/rmxp_extractor/classnames.rb +227 -245
  12. data/lib/rmxp_extractor/data_export.rb +80 -82
  13. data/lib/rmxp_extractor/data_import.rb +74 -69
  14. data/lib/rmxp_extractor/ron.rb +144 -144
  15. data/lib/rmxp_extractor/script_handler.rb +85 -85
  16. data/lib/rmxp_extractor/version.rb +3 -3
  17. data/lib/rmxp_extractor.rb +46 -46
  18. data/rmxp_extractor.gemspec +30 -30
  19. data/spec/spec_helper.rb +100 -100
  20. metadata +2 -393
  21. data/Data/Actors.rxdata +0 -0
  22. data/Data/Animations.rxdata +0 -0
  23. data/Data/Armors.rxdata +0 -0
  24. data/Data/Classes.rxdata +0 -0
  25. data/Data/CommonEvents.rxdata +0 -0
  26. data/Data/Enemies.rxdata +0 -0
  27. data/Data/Items.rxdata +0 -0
  28. data/Data/Map001.rxdata +0 -0
  29. data/Data/Map002.rxdata +0 -0
  30. data/Data/Map003.rxdata +0 -0
  31. data/Data/Map004.rxdata +0 -0
  32. data/Data/Map005.rxdata +0 -0
  33. data/Data/Map006.rxdata +0 -0
  34. data/Data/Map007.rxdata +0 -0
  35. data/Data/Map008.rxdata +0 -0
  36. data/Data/Map009.rxdata +0 -0
  37. data/Data/Map010.rxdata +0 -0
  38. data/Data/Map011.rxdata +0 -0
  39. data/Data/Map012.rxdata +0 -0
  40. data/Data/Map013.rxdata +0 -0
  41. data/Data/Map014.rxdata +0 -0
  42. data/Data/Map015.rxdata +0 -0
  43. data/Data/Map016.rxdata +0 -0
  44. data/Data/Map017.rxdata +0 -0
  45. data/Data/Map018.rxdata +0 -0
  46. data/Data/Map019.rxdata +0 -0
  47. data/Data/Map020.rxdata +0 -0
  48. data/Data/Map021.rxdata +0 -0
  49. data/Data/Map022.rxdata +0 -0
  50. data/Data/Map023.rxdata +0 -0
  51. data/Data/Map024.rxdata +0 -0
  52. data/Data/Map025.rxdata +0 -0
  53. data/Data/Map026.rxdata +0 -0
  54. data/Data/Map027.rxdata +0 -0
  55. data/Data/Map028.rxdata +0 -0
  56. data/Data/Map029.rxdata +0 -0
  57. data/Data/Map030.rxdata +0 -0
  58. data/Data/Map031.rxdata +0 -0
  59. data/Data/Map032.rxdata +0 -0
  60. data/Data/Map033.rxdata +0 -0
  61. data/Data/Map034.rxdata +0 -0
  62. data/Data/Map035.rxdata +0 -0
  63. data/Data/Map036.rxdata +0 -0
  64. data/Data/Map037.rxdata +0 -0
  65. data/Data/Map038.rxdata +0 -0
  66. data/Data/Map039.rxdata +0 -0
  67. data/Data/Map040.rxdata +0 -0
  68. data/Data/Map041.rxdata +0 -0
  69. data/Data/Map042.rxdata +0 -0
  70. data/Data/Map043.rxdata +0 -0
  71. data/Data/Map044.rxdata +0 -0
  72. data/Data/Map045.rxdata +0 -0
  73. data/Data/Map046.rxdata +0 -0
  74. data/Data/Map047.rxdata +0 -0
  75. data/Data/Map048.rxdata +0 -0
  76. data/Data/Map049.rxdata +0 -0
  77. data/Data/Map050.rxdata +0 -0
  78. data/Data/Map051.rxdata +0 -0
  79. data/Data/Map052.rxdata +0 -0
  80. data/Data/Map053.rxdata +0 -0
  81. data/Data/Map054.rxdata +0 -0
  82. data/Data/Map055.rxdata +0 -0
  83. data/Data/Map056.rxdata +0 -0
  84. data/Data/Map057.rxdata +0 -0
  85. data/Data/Map058.rxdata +0 -0
  86. data/Data/Map059.rxdata +0 -0
  87. data/Data/Map060.rxdata +0 -0
  88. data/Data/Map061.rxdata +0 -0
  89. data/Data/Map062.rxdata +0 -0
  90. data/Data/Map063.rxdata +0 -0
  91. data/Data/Map064.rxdata +0 -0
  92. data/Data/Map065.rxdata +0 -0
  93. data/Data/Map066.rxdata +0 -0
  94. data/Data/Map067.rxdata +0 -0
  95. data/Data/Map068.rxdata +0 -0
  96. data/Data/Map069.rxdata +0 -0
  97. data/Data/Map070.rxdata +0 -0
  98. data/Data/Map071.rxdata +0 -0
  99. data/Data/Map072.rxdata +0 -0
  100. data/Data/Map073.rxdata +0 -0
  101. data/Data/Map074.rxdata +0 -0
  102. data/Data/Map075.rxdata +0 -0
  103. data/Data/Map076.rxdata +0 -0
  104. data/Data/Map077.rxdata +0 -0
  105. data/Data/Map078.rxdata +0 -0
  106. data/Data/Map079.rxdata +0 -0
  107. data/Data/Map080.rxdata +0 -0
  108. data/Data/Map081.rxdata +0 -0
  109. data/Data/Map082.rxdata +0 -0
  110. data/Data/Map083.rxdata +0 -0
  111. data/Data/Map084.rxdata +0 -0
  112. data/Data/Map085.rxdata +0 -0
  113. data/Data/Map086.rxdata +0 -0
  114. data/Data/Map087.rxdata +0 -0
  115. data/Data/Map088.rxdata +0 -0
  116. data/Data/Map089.rxdata +0 -0
  117. data/Data/Map090.rxdata +0 -0
  118. data/Data/Map091.rxdata +0 -0
  119. data/Data/Map092.rxdata +0 -0
  120. data/Data/Map093.rxdata +0 -0
  121. data/Data/Map094.rxdata +0 -0
  122. data/Data/Map095.rxdata +0 -0
  123. data/Data/Map096.rxdata +0 -0
  124. data/Data/Map097.rxdata +0 -0
  125. data/Data/Map098.rxdata +0 -0
  126. data/Data/Map099.rxdata +0 -0
  127. data/Data/Map100.rxdata +0 -0
  128. data/Data/Map101.rxdata +0 -0
  129. data/Data/Map102.rxdata +0 -0
  130. data/Data/Map103.rxdata +0 -0
  131. data/Data/Map104.rxdata +0 -0
  132. data/Data/Map105.rxdata +0 -0
  133. data/Data/Map106.rxdata +0 -0
  134. data/Data/Map107.rxdata +0 -0
  135. data/Data/Map108.rxdata +0 -0
  136. data/Data/Map109.rxdata +0 -0
  137. data/Data/Map110.rxdata +0 -0
  138. data/Data/Map111.rxdata +0 -0
  139. data/Data/Map112.rxdata +0 -0
  140. data/Data/Map113.rxdata +0 -0
  141. data/Data/Map114.rxdata +0 -0
  142. data/Data/Map115.rxdata +0 -0
  143. data/Data/Map116.rxdata +0 -0
  144. data/Data/Map117.rxdata +0 -0
  145. data/Data/Map118.rxdata +0 -0
  146. data/Data/Map119.rxdata +0 -0
  147. data/Data/Map120.rxdata +0 -0
  148. data/Data/Map121.rxdata +0 -0
  149. data/Data/Map122.rxdata +0 -0
  150. data/Data/Map123.rxdata +0 -0
  151. data/Data/Map124.rxdata +0 -0
  152. data/Data/Map125.rxdata +0 -0
  153. data/Data/Map126.rxdata +0 -0
  154. data/Data/Map127.rxdata +0 -0
  155. data/Data/Map128.rxdata +0 -0
  156. data/Data/Map129.rxdata +0 -0
  157. data/Data/Map130.rxdata +0 -0
  158. data/Data/Map131.rxdata +0 -0
  159. data/Data/Map132.rxdata +0 -0
  160. data/Data/Map133.rxdata +0 -0
  161. data/Data/Map134.rxdata +0 -0
  162. data/Data/Map135.rxdata +0 -0
  163. data/Data/Map136.rxdata +0 -0
  164. data/Data/Map137.rxdata +0 -0
  165. data/Data/Map138.rxdata +0 -0
  166. data/Data/Map139.rxdata +0 -0
  167. data/Data/Map140.rxdata +0 -0
  168. data/Data/Map141.rxdata +0 -0
  169. data/Data/Map142.rxdata +0 -0
  170. data/Data/Map143.rxdata +0 -0
  171. data/Data/Map144.rxdata +0 -0
  172. data/Data/Map145.rxdata +0 -0
  173. data/Data/Map146.rxdata +0 -0
  174. data/Data/Map147.rxdata +0 -0
  175. data/Data/Map148.rxdata +0 -0
  176. data/Data/Map149.rxdata +0 -0
  177. data/Data/Map150.rxdata +0 -0
  178. data/Data/Map151.rxdata +0 -0
  179. data/Data/Map152.rxdata +0 -0
  180. data/Data/Map153.rxdata +0 -0
  181. data/Data/Map154.rxdata +0 -0
  182. data/Data/Map155.rxdata +0 -0
  183. data/Data/Map156.rxdata +0 -0
  184. data/Data/Map157.rxdata +0 -0
  185. data/Data/Map158.rxdata +0 -0
  186. data/Data/Map159.rxdata +0 -0
  187. data/Data/Map160.rxdata +0 -0
  188. data/Data/Map161.rxdata +0 -0
  189. data/Data/Map162.rxdata +0 -0
  190. data/Data/Map163.rxdata +0 -0
  191. data/Data/Map164.rxdata +0 -0
  192. data/Data/Map165.rxdata +0 -0
  193. data/Data/Map166.rxdata +0 -0
  194. data/Data/Map167.rxdata +0 -0
  195. data/Data/Map168.rxdata +0 -0
  196. data/Data/Map169.rxdata +0 -0
  197. data/Data/Map170.rxdata +0 -0
  198. data/Data/Map171.rxdata +0 -0
  199. data/Data/Map172.rxdata +0 -0
  200. data/Data/Map173.rxdata +0 -0
  201. data/Data/Map174.rxdata +0 -0
  202. data/Data/Map175.rxdata +0 -0
  203. data/Data/Map176.rxdata +0 -0
  204. data/Data/Map177.rxdata +0 -0
  205. data/Data/Map178.rxdata +0 -0
  206. data/Data/Map179.rxdata +0 -0
  207. data/Data/Map180.rxdata +0 -0
  208. data/Data/Map181.rxdata +0 -0
  209. data/Data/Map182.rxdata +0 -0
  210. data/Data/Map183.rxdata +0 -0
  211. data/Data/Map184.rxdata +0 -0
  212. data/Data/Map185.rxdata +0 -0
  213. data/Data/Map186.rxdata +0 -0
  214. data/Data/Map187.rxdata +0 -0
  215. data/Data/Map188.rxdata +0 -0
  216. data/Data/Map189.rxdata +0 -0
  217. data/Data/Map190.rxdata +0 -0
  218. data/Data/Map191.rxdata +0 -0
  219. data/Data/Map192.rxdata +0 -0
  220. data/Data/Map193.rxdata +0 -0
  221. data/Data/Map194.rxdata +0 -0
  222. data/Data/Map195.rxdata +0 -0
  223. data/Data/Map196.rxdata +0 -0
  224. data/Data/Map197.rxdata +0 -0
  225. data/Data/Map198.rxdata +0 -0
  226. data/Data/Map199.rxdata +0 -0
  227. data/Data/Map200.rxdata +0 -0
  228. data/Data/Map201.rxdata +0 -0
  229. data/Data/Map202.rxdata +0 -0
  230. data/Data/Map203.rxdata +0 -0
  231. data/Data/Map204.rxdata +0 -0
  232. data/Data/Map205.rxdata +0 -0
  233. data/Data/Map206.rxdata +0 -0
  234. data/Data/Map207.rxdata +0 -0
  235. data/Data/Map208.rxdata +0 -0
  236. data/Data/Map209.rxdata +0 -0
  237. data/Data/Map210.rxdata +0 -0
  238. data/Data/Map211.rxdata +0 -0
  239. data/Data/Map212.rxdata +0 -0
  240. data/Data/Map213.rxdata +0 -0
  241. data/Data/Map214.rxdata +0 -0
  242. data/Data/Map215.rxdata +0 -0
  243. data/Data/Map216.rxdata +0 -0
  244. data/Data/Map217.rxdata +0 -0
  245. data/Data/Map218.rxdata +0 -0
  246. data/Data/Map219.rxdata +0 -0
  247. data/Data/Map220.rxdata +0 -0
  248. data/Data/Map221.rxdata +0 -0
  249. data/Data/Map222.rxdata +0 -0
  250. data/Data/Map223.rxdata +0 -0
  251. data/Data/Map224.rxdata +0 -0
  252. data/Data/Map225.rxdata +0 -0
  253. data/Data/Map226.rxdata +0 -0
  254. data/Data/Map227.rxdata +0 -0
  255. data/Data/Map228.rxdata +0 -0
  256. data/Data/Map229.rxdata +0 -0
  257. data/Data/Map230.rxdata +0 -0
  258. data/Data/Map231.rxdata +0 -0
  259. data/Data/Map232.rxdata +0 -0
  260. data/Data/Map233.rxdata +0 -0
  261. data/Data/Map234.rxdata +0 -0
  262. data/Data/Map235.rxdata +0 -0
  263. data/Data/Map236.rxdata +0 -0
  264. data/Data/Map237.rxdata +0 -0
  265. data/Data/Map238.rxdata +0 -0
  266. data/Data/Map239.rxdata +0 -0
  267. data/Data/Map240.rxdata +0 -0
  268. data/Data/Map241.rxdata +0 -0
  269. data/Data/Map242.rxdata +0 -0
  270. data/Data/Map243.rxdata +0 -0
  271. data/Data/Map244.rxdata +0 -0
  272. data/Data/Map245.rxdata +0 -0
  273. data/Data/Map246.rxdata +0 -0
  274. data/Data/Map247.rxdata +0 -0
  275. data/Data/Map248.rxdata +0 -0
  276. data/Data/Map249.rxdata +0 -0
  277. data/Data/Map250.rxdata +0 -0
  278. data/Data/Map251.rxdata +0 -0
  279. data/Data/Map252.rxdata +0 -0
  280. data/Data/Map253.rxdata +0 -0
  281. data/Data/Map254.rxdata +0 -0
  282. data/Data/Map255.rxdata +0 -0
  283. data/Data/Map256.rxdata +0 -0
  284. data/Data/Map257.rxdata +0 -0
  285. data/Data/Map258.rxdata +0 -0
  286. data/Data/Map259.rxdata +0 -0
  287. data/Data/Map260.rxdata +0 -0
  288. data/Data/Map261.rxdata +0 -0
  289. data/Data/Map262.rxdata +0 -0
  290. data/Data/Map263.rxdata +0 -0
  291. data/Data/MapInfos.rxdata +0 -0
  292. data/Data/Scripts.rxdata +0 -0
  293. data/Data/Skills.rxdata +0 -0
  294. data/Data/States.rxdata +0 -0
  295. data/Data/System.rxdata +0 -0
  296. data/Data/Tilesets.rxdata +0 -0
  297. data/Data/Troops.rxdata +0 -0
  298. data/Data/Weapons.rxdata +0 -0
  299. data/Data/xScripts.rxdata +0 -0
  300. data/Scripts/Credits_Message.rb +0 -259
  301. data/Scripts/Data_FastTravel.rb +0 -50
  302. data/Scripts/Data_Footsteps.rb +0 -77
  303. data/Scripts/Data_Item.rb +0 -50
  304. data/Scripts/Data_SpecialEventData.rb +0 -60
  305. data/Scripts/Demo.rb +0 -7
  306. data/Scripts/Desktop_Message.rb +0 -210
  307. data/Scripts/Doc_Message.rb +0 -273
  308. data/Scripts/EdText.rb +0 -50
  309. data/Scripts/Ed_Message.rb +0 -234
  310. data/Scripts/FastTravel.rb +0 -175
  311. data/Scripts/Game_Actor.rb +0 -156
  312. data/Scripts/Game_Actors.rb +0 -28
  313. data/Scripts/Game_BattleAction.rb +0 -145
  314. data/Scripts/Game_Battler 1.rb +0 -307
  315. data/Scripts/Game_Battler 2.rb +0 -294
  316. data/Scripts/Game_Battler 3.rb +0 -354
  317. data/Scripts/Game_Character 1.rb +0 -291
  318. data/Scripts/Game_Character 2.rb +0 -355
  319. data/Scripts/Game_Character 3.rb +0 -505
  320. data/Scripts/Game_CommonEvent.rb +0 -70
  321. data/Scripts/Game_Enemy.rb +0 -317
  322. data/Scripts/Game_Event.rb +0 -264
  323. data/Scripts/Game_FastTravel.rb +0 -40
  324. data/Scripts/Game_Follower.rb +0 -76
  325. data/Scripts/Game_Light.rb +0 -13
  326. data/Scripts/Game_Map.rb +0 -551
  327. data/Scripts/Game_Oneshot.rb +0 -83
  328. data/Scripts/Game_Party.rb +0 -380
  329. data/Scripts/Game_Picture.rb +0 -164
  330. data/Scripts/Game_Player.rb +0 -298
  331. data/Scripts/Game_Screen.rb +0 -148
  332. data/Scripts/Game_SelfSwitches.rb +0 -30
  333. data/Scripts/Game_Switches.rb +0 -45
  334. data/Scripts/Game_System.rb +0 -210
  335. data/Scripts/Game_Temp.rb +0 -145
  336. data/Scripts/Game_Variables.rb +0 -36
  337. data/Scripts/Interpreter 1.rb +0 -320
  338. data/Scripts/Interpreter 2.rb +0 -286
  339. data/Scripts/Interpreter 3.rb +0 -474
  340. data/Scripts/Interpreter 4.rb +0 -327
  341. data/Scripts/Interpreter 5.rb +0 -448
  342. data/Scripts/Interpreter 6.rb +0 -307
  343. data/Scripts/Interpreter 7.rb +0 -282
  344. data/Scripts/Main.rb +0 -50
  345. data/Scripts/Particles.rb +0 -141
  346. data/Scripts/Persistent.rb +0 -71
  347. data/Scripts/Puzzle_Film.rb +0 -14
  348. data/Scripts/Puzzle_Pixel.rb +0 -210
  349. data/Scripts/Puzzle_Safe.rb +0 -152
  350. data/Scripts/Puzzle_Sokoban.rb +0 -14
  351. data/Scripts/RPG.rb +0 -55
  352. data/Scripts/SaveLoad.rb +0 -275
  353. data/Scripts/Scene_Debug.rb +0 -190
  354. data/Scripts/Scene_End.rb +0 -108
  355. data/Scripts/Scene_Equip.rb +0 -222
  356. data/Scripts/Scene_File.rb +0 -111
  357. data/Scripts/Scene_Item.rb +0 -205
  358. data/Scripts/Scene_Load.rb +0 -106
  359. data/Scripts/Scene_Map.rb +0 -540
  360. data/Scripts/Scene_Menu.rb +0 -213
  361. data/Scripts/Scene_Name.rb +0 -113
  362. data/Scripts/Scene_Save.rb +0 -88
  363. data/Scripts/Scene_Skill.rb +0 -232
  364. data/Scripts/Scene_Status.rb +0 -78
  365. data/Scripts/Scene_Title.rb +0 -237
  366. data/Scripts/Script.rb +0 -780
  367. data/Scripts/Sprite_Battler.rb +0 -131
  368. data/Scripts/Sprite_Character.rb +0 -192
  369. data/Scripts/Sprite_Footprint.rb +0 -35
  370. data/Scripts/Sprite_Footsplash.rb +0 -54
  371. data/Scripts/Sprite_Light.rb +0 -18
  372. data/Scripts/Sprite_MapText.rb +0 -63
  373. data/Scripts/Sprite_Picture.rb +0 -72
  374. data/Scripts/Sprite_Timer.rb +0 -52
  375. data/Scripts/Spriteset_Map.rb +0 -370
  376. data/Scripts/Window_Base.rb +0 -327
  377. data/Scripts/Window_BattleResult.rb +0 -51
  378. data/Scripts/Window_BattleStatus.rb +0 -62
  379. data/Scripts/Window_Command.rb +0 -49
  380. data/Scripts/Window_DebugLeft.rb +0 -57
  381. data/Scripts/Window_DebugRight.rb +0 -69
  382. data/Scripts/Window_EquipItem.rb +0 -94
  383. data/Scripts/Window_EquipLeft.rb +0 -61
  384. data/Scripts/Window_EquipRight.rb +0 -56
  385. data/Scripts/Window_Gold.rb +0 -27
  386. data/Scripts/Window_Help.rb +0 -33
  387. data/Scripts/Window_InputNumber.rb +0 -111
  388. data/Scripts/Window_Item.rb +0 -229
  389. data/Scripts/Window_MainMenu.rb +0 -150
  390. data/Scripts/Window_MenuStatus.rb +0 -48
  391. data/Scripts/Window_Message.rb +0 -459
  392. data/Scripts/Window_NameEdit.rb +0 -108
  393. data/Scripts/Window_NameInput.rb +0 -262
  394. data/Scripts/Window_PartyCommand.rb +0 -42
  395. data/Scripts/Window_PlayTime.rb +0 -40
  396. data/Scripts/Window_SaveFile.rb +0 -91
  397. data/Scripts/Window_Selectable.rb +0 -203
  398. data/Scripts/Window_Settings.rb +0 -469
  399. data/Scripts/Window_ShopBuy.rb +0 -93
  400. data/Scripts/Window_ShopCommand.rb +0 -37
  401. data/Scripts/Window_ShopNumber.rb +0 -87
  402. data/Scripts/Window_ShopSell.rb +0 -94
  403. data/Scripts/Window_ShopStatus.rb +0 -107
  404. data/Scripts/Window_Skill.rb +0 -83
  405. data/Scripts/Window_SkillStatus.rb +0 -28
  406. data/Scripts/Window_Status.rb +0 -64
  407. data/Scripts/Window_Steps.rb +0 -26
  408. data/Scripts/Window_Target.rb +0 -49
  409. data/Scripts/_scripts.txt +0 -111
  410. data/Scripts/i18n_English.rb +0 -59
  411. data/Scripts/i18n_Language.rb +0 -130
@@ -1,69 +1,74 @@
1
- module RMXPExtractor
2
- def self.import(format)
3
- STDERR.puts "No Data_JSON Directory!" unless Dir.exists? "./Data_#{format.upcase}"
4
- exit 1 unless Dir.exists? "./Data_#{format.upcase}"
5
-
6
- require "oj"
7
- require "yaml"
8
- require "ruby-progressbar"
9
- require "fileutils"
10
- require "pathname"
11
- require "readline"
12
- require_relative "classnames"
13
- require_relative "script_handler"
14
-
15
- if format == "ron"
16
- puts "RON not supported for importing yet"
17
- exit 1
18
- end
19
-
20
- window_size = 120
21
- progress_format = "%a /%e |%B| %p%% %c/%C %r files/sec %t, currently processing: "
22
- progress = ProgressBar.create(
23
- format: progress_format,
24
- starting_at: 0,
25
- total: nil,
26
- output: $stderr,
27
- length: window_size,
28
- title: "imported",
29
- remainder_mark: "\e[0;30m█\e[0m",
30
- progress_mark: "█",
31
- unknown_progress_animation_steps: ["==>", ">==", "=>="],
32
- )
33
- Dir.mkdir "./Data" unless Dir.exists? "./Data"
34
- paths = Pathname.glob(("./Data_#{format.upcase}/" + ("*" + ".#{format}")))
35
- count = paths.size
36
- progress.total = count
37
- paths.each_with_index do |path, i|
38
- name = path.basename(".#{format}")
39
- progress.format = progress_format + name.to_s
40
- file_contents = path.read(mode: "rb")
41
- hash = case format
42
- when "json"
43
- Oj.load file_contents
44
- when "yaml"
45
- YAML.load file_contents
46
- when "toml"
47
- TomlRB.parse file_contents
48
- when "rb"
49
- eval file_contents # Yes, this SHOULD work. Is it bad? Yes.
50
- end
51
-
52
- warn "\n\e[33;1mWARNING: Incompatible version format in #{name.to_s}!\e[0m\n" if hash["version"] != VERSION
53
-
54
- case name.to_s
55
- when "xScripts", "Scripts"
56
- RMXPExtractor.rpgscript("./", "./Scripts", "#{name.to_s}")
57
- progress.increment
58
- return
59
- else
60
- content = create_from_rmxp_serialize(hash["data"])
61
- end
62
-
63
- rxdata = File.open("./Data/" + name.sub_ext(".rxdata").to_s, "wb")
64
- rxdata.puts Marshal.dump(content)
65
-
66
- progress.increment
67
- end
68
- end
69
- end
1
+ module RMXPExtractor
2
+ def self.import(format)
3
+ STDERR.puts "No Data_JSON Directory!" unless Dir.exists? "./Data_#{format.upcase}"
4
+ exit 1 unless Dir.exists? "./Data_#{format.upcase}"
5
+
6
+ require "oj"
7
+ require "yaml"
8
+ require "ruby-progressbar"
9
+ require "fileutils"
10
+ require "pathname"
11
+ require "readline"
12
+ require_relative "classnames"
13
+ require_relative "script_handler"
14
+
15
+ if format == "ron"
16
+ puts "RON not supported for importing yet"
17
+ exit 1
18
+ end
19
+
20
+ window_size = 120
21
+ progress_format = "%a /%e |%B| %p%% %c/%C %r files/sec %t, currently processing: "
22
+ progress = ProgressBar.create(
23
+ format: progress_format,
24
+ starting_at: 0,
25
+ total: nil,
26
+ output: $stderr,
27
+ length: window_size,
28
+ title: "imported",
29
+ remainder_mark: "\e[0;30m█\e[0m",
30
+ progress_mark: "█",
31
+ unknown_progress_animation_steps: ["==>", ">==", "=>="],
32
+ )
33
+ Dir.mkdir "./Data" unless Dir.exists? "./Data"
34
+ paths = Pathname.glob(("./Data_#{format.upcase}/" + ("*" + ".#{format}")))
35
+ count = paths.size
36
+ progress.total = count
37
+ paths.each_with_index do |path, i|
38
+ name = path.basename(".#{format}")
39
+ progress.format = progress_format + name.to_s
40
+ file_contents = path.read(mode: "rb")
41
+ hash = case format
42
+ when "json"
43
+ Oj.load file_contents
44
+ when "yaml"
45
+ YAML.load file_contents
46
+ when "rb"
47
+ eval file_contents # Yes, this SHOULD work. Is it bad? Yes.
48
+ end
49
+
50
+ warn "\n\e[33;1mWARNING: Incompatible version format in #{name.to_s}!\e[0m\n" if hash["version"] != VERSION
51
+
52
+ case name.to_s
53
+ when "xScripts", "Scripts"
54
+ RMXPExtractor.rpgscript("./", "./Scripts", "#{name.to_s}")
55
+ progress.increment
56
+ return
57
+ else
58
+ content = create_from_rmxp_serialize(hash["data"])
59
+ end
60
+
61
+ begin
62
+ dump = Marshal.dump(content)
63
+
64
+ rxdata = File.open("./Data/" + name.sub_ext(".rxdata").to_s, "wb")
65
+ rxdata.puts dump
66
+ rescue TypeError => e
67
+ puts "Failed to dump file #{path}.\n"
68
+ next
69
+ end
70
+
71
+ progress.increment
72
+ end
73
+ end
74
+ end
@@ -1,144 +1,144 @@
1
- # This file handles rusty object notation.
2
- require_relative "classnames"
3
-
4
- $indent = 0
5
-
6
- class Object
7
- def rmxp_serialize
8
- $indent += 2
9
- str = "#{self.class.name.split("::").last}(\n"
10
- self.instance_variables.each { |var| str += "#{" " * $indent}#{var.to_s.delete("@")}: #{self.instance_variable_get(var).rmxp_serialize},\n" }
11
- $indent -= 2
12
- str += "#{" " * $indent})"
13
- str
14
- end
15
- end
16
-
17
- class Table
18
- def rmxp_serialize
19
- str = "Table#{@num_of_dimensions}(\n"
20
- $indent += 2
21
- str += "#{" " * $indent}"
22
- str += case @num_of_dimensions
23
- when 1
24
- "xsize: #{@xsize},\n"
25
- when 2
26
- "xsize: #{@xsize}, ysize: #{@ysize},\n"
27
- when 3
28
- "xsize: #{@xsize}, ysize: #{@ysize}, zsize: #{@zsize},\n"
29
- end
30
- str += "#{" " * $indent}data: [\n"
31
- $indent += 2
32
- case @num_of_dimensions
33
- when 1
34
- str += "#{" " * $indent}"
35
- @elements.each_with_index do |e, index|
36
- str += "#{e}, "
37
- str += "\n#{" " * $indent}" if (index + 1) % 8 == 0
38
- end
39
- str += "\n"
40
- when 2
41
- @elements.each do |y|
42
- str += " " * $indent
43
- y.each { |e| str += "#{e}, " }
44
- str += "\n"
45
- end
46
- when 3
47
- @elements.each do |z|
48
- z.each do |y|
49
- str += " " * $indent
50
- y.each { |e| str += "#{e}, " }
51
- str += "\n"
52
- end
53
- str += "\n"
54
- end
55
- end
56
- $indent -= 2
57
- str += "#{" " * $indent}]\n"
58
- $indent -= 2
59
- str += "#{" " * $indent})"
60
- str
61
- end
62
- end
63
-
64
- class Hash
65
- def rmxp_serialize
66
- str = "{\n"
67
- $indent += 2
68
- self.each { |key, value| str += "#{" " * $indent}#{key.rmxp_serialize}: #{value.rmxp_serialize},\n" }
69
- $indent -= 2
70
- str += "#{" " * $indent}}"
71
- str
72
- end
73
- end
74
-
75
- # BAD BAD
76
- class NilClass
77
- def rmxp_serialize
78
- "None"
79
- end
80
- end
81
-
82
- class String
83
- def rmxp_serialize
84
- self.inspect
85
- end
86
- end
87
-
88
- class Array
89
- def rmxp_serialize
90
- unless self.empty?
91
- str = "[\n"
92
- $indent += 2
93
- self.each { |e| next unless e; str += "#{" " * $indent}#{e.rmxp_serialize},\n" }
94
- $indent -= 2
95
- str += "#{" " * $indent}]"
96
- else
97
- str = "[]"
98
- end
99
- str
100
- end
101
- end
102
-
103
- module RPG
104
- class EventCommand
105
- def rmxp_serialize
106
- str = "EventCommand(\n"
107
- $indent += 2
108
- str += "#{" " * $indent}indent: #{@indent},\n"
109
- str += "#{" " * $indent}code: #{@code},\n"
110
- str += "#{" " * $indent}parameters: ["
111
- if @parameters.empty?
112
- str += "],\n"
113
- else
114
- $indent += 2
115
- @parameters.each do |param|
116
- str += "\n#{" " * $indent}#{param.class.name.split("::").last}(#{param.rmxp_serialize}),"
117
- end
118
- $indent -= 2
119
- str += "\n#{" " * $indent}],\n"
120
- end
121
- $indent -= 2
122
- str += "#{" " * $indent})"
123
- str
124
- end
125
- end
126
-
127
- class MoveCommand
128
- def rmxp_serialize
129
- str = "MoveCommand(\n"
130
- $indent += 2
131
- str += "#{" " * $indent}code: #{@code},\n"
132
- str += "#{" " * $indent}parameters: ["
133
- $indent += 2
134
- @parameters.each do |param|
135
- str += "\n#{" " * $indent}#{param.class.name.split("::").last}(#{param.rmxp_serialize}),"
136
- end
137
- $indent -= 2
138
- str += "\n#{" " * $indent}],\n"
139
- $indent -= 2
140
- str += "#{" " * $indent})"
141
- str
142
- end
143
- end
144
- end
1
+ # This file handles rusty object notation.
2
+ require_relative "classnames"
3
+
4
+ $indent = 0
5
+
6
+ class Object
7
+ def rmxp_serialize
8
+ $indent += 2
9
+ str = "#{self.class.name.split("::").last}(\n"
10
+ self.instance_variables.sort.each { |var| str += "#{" " * $indent}#{var.to_s.delete("@")}: #{self.instance_variable_get(var).rmxp_serialize},\n" }
11
+ $indent -= 2
12
+ str += "#{" " * $indent})"
13
+ str
14
+ end
15
+ end
16
+
17
+ class Table
18
+ def rmxp_serialize
19
+ str = "Table#{@num_of_dimensions}(\n"
20
+ $indent += 2
21
+ str += "#{" " * $indent}"
22
+ str += case @num_of_dimensions
23
+ when 1
24
+ "xsize: #{@xsize},\n"
25
+ when 2
26
+ "xsize: #{@xsize}, ysize: #{@ysize},\n"
27
+ when 3
28
+ "xsize: #{@xsize}, ysize: #{@ysize}, zsize: #{@zsize},\n"
29
+ end
30
+ str += "#{" " * $indent}data: [\n"
31
+ $indent += 2
32
+ case @num_of_dimensions
33
+ when 1
34
+ str += "#{" " * $indent}"
35
+ @elements.each_with_index do |e, index|
36
+ str += "#{e}, "
37
+ str += "\n#{" " * $indent}" if (index + 1) % 8 == 0
38
+ end
39
+ str += "\n"
40
+ when 2
41
+ @elements.each do |y|
42
+ str += " " * $indent
43
+ y.each { |e| str += "#{e}, " }
44
+ str += "\n"
45
+ end
46
+ when 3
47
+ @elements.each do |z|
48
+ z.each do |y|
49
+ str += " " * $indent
50
+ y.each { |e| str += "#{e}, " }
51
+ str += "\n"
52
+ end
53
+ str += "\n"
54
+ end
55
+ end
56
+ $indent -= 2
57
+ str += "#{" " * $indent}]\n"
58
+ $indent -= 2
59
+ str += "#{" " * $indent})"
60
+ str
61
+ end
62
+ end
63
+
64
+ class Hash
65
+ def rmxp_serialize
66
+ str = "{\n"
67
+ $indent += 2
68
+ self.sort.each { |key, value| str += "#{" " * $indent}#{key.rmxp_serialize}: #{value.rmxp_serialize},\n" }
69
+ $indent -= 2
70
+ str += "#{" " * $indent}}"
71
+ str
72
+ end
73
+ end
74
+
75
+ # BAD BAD
76
+ class NilClass
77
+ def rmxp_serialize
78
+ "None"
79
+ end
80
+ end
81
+
82
+ class String
83
+ def rmxp_serialize
84
+ self.inspect
85
+ end
86
+ end
87
+
88
+ class Array
89
+ def rmxp_serialize
90
+ unless self.empty?
91
+ str = "[\n"
92
+ $indent += 2
93
+ self.each { |e| next unless e; str += "#{" " * $indent}#{e.rmxp_serialize},\n" }
94
+ $indent -= 2
95
+ str += "#{" " * $indent}]"
96
+ else
97
+ str = "[]"
98
+ end
99
+ str
100
+ end
101
+ end
102
+
103
+ module RPG
104
+ class EventCommand
105
+ def rmxp_serialize
106
+ str = "EventCommand(\n"
107
+ $indent += 2
108
+ str += "#{" " * $indent}indent: #{@indent},\n"
109
+ str += "#{" " * $indent}code: #{@code},\n"
110
+ str += "#{" " * $indent}parameters: ["
111
+ if @parameters.empty?
112
+ str += "],\n"
113
+ else
114
+ $indent += 2
115
+ @parameters.each do |param|
116
+ str += "\n#{" " * $indent}#{param.class.name.split("::").last}(#{param.rmxp_serialize}),"
117
+ end
118
+ $indent -= 2
119
+ str += "\n#{" " * $indent}],\n"
120
+ end
121
+ $indent -= 2
122
+ str += "#{" " * $indent})"
123
+ str
124
+ end
125
+ end
126
+
127
+ class MoveCommand
128
+ def rmxp_serialize
129
+ str = "MoveCommand(\n"
130
+ $indent += 2
131
+ str += "#{" " * $indent}code: #{@code},\n"
132
+ str += "#{" " * $indent}parameters: ["
133
+ $indent += 2
134
+ @parameters.each do |param|
135
+ str += "\n#{" " * $indent}#{param.class.name.split("::").last}(#{param.rmxp_serialize}),"
136
+ end
137
+ $indent -= 2
138
+ str += "\n#{" " * $indent}],\n"
139
+ $indent -= 2
140
+ str += "#{" " * $indent})"
141
+ str
142
+ end
143
+ end
144
+ end
@@ -1,85 +1,85 @@
1
- #!/usr/bin/ruby
2
- require "zlib"
3
-
4
- module RMXPExtractor
5
- def self.rpgscript(game_dir, scripts_dir, script_name, extract = false)
6
- # Determine version of game engine
7
- game_data_dir = File.join(game_dir, "Data")
8
- unless Dir.exist? game_data_dir
9
- STDERR.puts "error: #{game_dir} does not have a Data subdirectory"
10
- exit 1
11
- end
12
-
13
- target_path = File.join(game_data_dir, script_name)
14
-
15
- # Generate path of script list
16
- list_path = File.join(scripts_dir, "_scripts.txt")
17
-
18
- if extract
19
- # Make sure the script directory exists
20
- Dir.mkdir(scripts_dir) unless Dir.exists? scripts_dir
21
-
22
- # Keep track of names of scripts extracted so we can warn about duplicates
23
- names = Hash.new(0)
24
-
25
- # Read scripts
26
- File.open(target_path, "rb") do |fin|
27
- File.open(list_path, "w") do |flist|
28
- Marshal.load(fin).each_with_index do |script, index|
29
- name = script[1].strip
30
- data = Zlib::Inflate.inflate(script[2]).rstrip
31
- .gsub(/[ \t]*(?:$|\r\n?)/, "\n")
32
-
33
- # Make sure this file doesn't already exist
34
- if name.empty?
35
- if data.empty? || data == "\n"
36
- flist.puts
37
- next
38
- else
39
- name = "UNTITLED"
40
- end
41
- end
42
-
43
- names[name] += 1
44
- if names[name] > 1
45
- name << " (#{names[name]})"
46
- end
47
-
48
- if data.empty? || data == "\n"
49
- # Treat this like a comment
50
- flist.puts("# " + name)
51
- else
52
- # Write to file order list
53
- flist.puts(name)
54
-
55
- # Write script file
56
- File.open(File.join(scripts_dir, name + ".rb"), "wb") do |fout|
57
- fout.write(data)
58
- end
59
- end
60
- end
61
- end
62
- end
63
- #puts "#{target_path} extracted."
64
- else
65
- # Write scripts
66
- scripts = []
67
-
68
- IO.foreach(list_path) do |name|
69
- name.strip!
70
- next if name.empty? || name.start_with?("#")
71
-
72
- data = File.read(File.join(scripts_dir, name + ".rb")).rstrip.gsub("\n", "\r\n")
73
-
74
- script = Array.new(3)
75
- script[0] = 0
76
- script[1] = name
77
- script[2] = Zlib.deflate(data)
78
- scripts << script
79
- end
80
-
81
- File.open(target_path, "wb") { |f| f.write(Marshal.dump(scripts)) }
82
- #puts "#{target_path} written."
83
- end
84
- end
85
- end
1
+ #!/usr/bin/ruby
2
+ require "zlib"
3
+
4
+ module RMXPExtractor
5
+ def self.rpgscript(game_dir, scripts_dir, script_name, extract = false)
6
+ # Determine version of game engine
7
+ game_data_dir = File.join(game_dir, "Data")
8
+ unless Dir.exist? game_data_dir
9
+ STDERR.puts "error: #{game_dir} does not have a Data subdirectory"
10
+ exit 1
11
+ end
12
+
13
+ target_path = File.join(game_data_dir, script_name)
14
+
15
+ # Generate path of script list
16
+ list_path = File.join(scripts_dir, "_scripts.txt")
17
+
18
+ if extract
19
+ # Make sure the script directory exists
20
+ Dir.mkdir(scripts_dir) unless Dir.exists? scripts_dir
21
+
22
+ # Keep track of names of scripts extracted so we can warn about duplicates
23
+ names = Hash.new(0)
24
+
25
+ # Read scripts
26
+ File.open(target_path, "rb") do |fin|
27
+ File.open(list_path, "w") do |flist|
28
+ Marshal.load(fin).each_with_index do |script, index|
29
+ name = script[1].strip
30
+ data = Zlib::Inflate.inflate(script[2]).rstrip
31
+ .gsub(/[ \t]*(?:$|\r\n?)/, "\n")
32
+
33
+ # Make sure this file doesn't already exist
34
+ if name.empty?
35
+ if data.empty? || data == "\n"
36
+ flist.puts
37
+ next
38
+ else
39
+ name = "UNTITLED"
40
+ end
41
+ end
42
+
43
+ names[name] += 1
44
+ if names[name] > 1
45
+ name << " (#{names[name]})"
46
+ end
47
+
48
+ if data.empty? || data == "\n"
49
+ # Treat this like a comment
50
+ flist.puts("# " + name)
51
+ else
52
+ # Write to file order list
53
+ flist.puts(name)
54
+
55
+ # Write script file
56
+ File.open(File.join(scripts_dir, name + ".rb"), "wb") do |fout|
57
+ fout.write(data)
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
63
+ #puts "#{target_path} extracted."
64
+ else
65
+ # Write scripts
66
+ scripts = []
67
+
68
+ IO.foreach(list_path) do |name|
69
+ name.strip!
70
+ next if name.empty? || name.start_with?("#")
71
+
72
+ data = File.read(File.join(scripts_dir, name + ".rb")).rstrip.gsub("\n", "\r\n")
73
+
74
+ script = Array.new(3)
75
+ script[0] = 0
76
+ script[1] = name
77
+ script[2] = Zlib.deflate(data)
78
+ scripts << script
79
+ end
80
+
81
+ File.open(target_path, "wb") { |f| f.write(Marshal.dump(scripts)) }
82
+ #puts "#{target_path} written."
83
+ end
84
+ end
85
+ end
@@ -1,3 +1,3 @@
1
- module RMXPExtractor
2
- VERSION = "1.8"
3
- end
1
+ module RMXPExtractor
2
+ VERSION = "1.9"
3
+ end