rgss_db 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (156) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +5 -0
  3. data/COPYING.md +674 -0
  4. data/README.md +347 -0
  5. data/bin/rgss-db +4 -0
  6. data/bin/rgssdb +4 -0
  7. data/lib/rgss_db/app.rb +928 -0
  8. data/lib/rgss_db/controller/data_manager.rb +557 -0
  9. data/lib/rgss_db/model/data_file.rb +516 -0
  10. data/lib/rgss_db/model/data_file_factory.rb +94 -0
  11. data/lib/rgss_db/model/debug.rb +199 -0
  12. data/lib/rgss_db/model/errors.rb +17 -0
  13. data/lib/rgss_db/model/mixins/jsonable.rb +35 -0
  14. data/lib/rgss_db/model/mixins/jsonable_constructor.rb +40 -0
  15. data/lib/rgss_db/model/rpg_maker_data/vx/rgss/color.rb +72 -0
  16. data/lib/rgss_db/model/rpg_maker_data/vx/rgss/rect.rb +70 -0
  17. data/lib/rgss_db/model/rpg_maker_data/vx/rgss/table.rb +99 -0
  18. data/lib/rgss_db/model/rpg_maker_data/vx/rgss/tone.rb +72 -0
  19. data/lib/rgss_db/model/rpg_maker_data/vx/rgss.rb +11 -0
  20. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/actor.rb +44 -0
  21. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/animation.rb +31 -0
  22. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/animation_frame.rb +20 -0
  23. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/animation_timing.rb +23 -0
  24. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/area.rb +26 -0
  25. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/armor.rb +31 -0
  26. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/audio_file.rb +23 -0
  27. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/base_item.rb +25 -0
  28. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/bgm.rb +36 -0
  29. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/bgs.rb +36 -0
  30. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/class.rb +31 -0
  31. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/class_learning.rb +20 -0
  32. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/common_event.rb +25 -0
  33. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/enemy.rb +44 -0
  34. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/enemy_action.rb +29 -0
  35. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/enemy_drop_item.rb +23 -0
  36. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/event.rb +36 -0
  37. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/event_command.rb +19 -0
  38. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/event_page.rb +32 -0
  39. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/event_page_condition.rb +34 -0
  40. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/event_page_graphic.rb +25 -0
  41. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/item.rb +27 -0
  42. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/map.rb +47 -0
  43. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/map_info.rb +26 -0
  44. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/me.rb +27 -0
  45. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/move_command.rb +18 -0
  46. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/move_route.rb +20 -0
  47. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/se.rb +21 -0
  48. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/skill.rb +22 -0
  49. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/state.rb +47 -0
  50. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/system.rb +43 -0
  51. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/system_terms.rb +53 -0
  52. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/system_test_battler.rb +25 -0
  53. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/system_vehicle.rb +24 -0
  54. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/troop.rb +24 -0
  55. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/troop_member.rb +23 -0
  56. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/troop_page.rb +21 -0
  57. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/troop_page_condition.rb +33 -0
  58. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/usable_item.rb +87 -0
  59. data/lib/rgss_db/model/rpg_maker_data/vx/rpg/weapon.rb +31 -0
  60. data/lib/rgss_db/model/rpg_maker_data/vx/rpg.rb +59 -0
  61. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rgss/color.rb +72 -0
  62. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rgss/rect.rb +70 -0
  63. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rgss/table.rb +99 -0
  64. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rgss/tone.rb +72 -0
  65. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rgss.rb +11 -0
  66. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/actor.rb +27 -0
  67. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/animation.rb +31 -0
  68. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/animation_frame.rb +23 -0
  69. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/animation_timing.rb +26 -0
  70. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/armor.rb +20 -0
  71. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/audio_file.rb +23 -0
  72. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/base_item.rb +31 -0
  73. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/base_item_feature.rb +29 -0
  74. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/bgm.rb +43 -0
  75. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/bgs.rb +43 -0
  76. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/class.rb +37 -0
  77. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/class_learning.rb +24 -0
  78. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/common_event.rb +33 -0
  79. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/enemy.rb +27 -0
  80. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/enemy_action.rb +26 -0
  81. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/enemy_drop_item.rb +24 -0
  82. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/equip_item.rb +19 -0
  83. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/event.rb +36 -0
  84. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/event_command.rb +19 -0
  85. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/event_page.rb +35 -0
  86. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/event_page_condition.rb +40 -0
  87. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/event_page_graphic.rb +31 -0
  88. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/item.rb +25 -0
  89. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/map.rb +58 -0
  90. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/map_encounter.rb +23 -0
  91. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/map_info.rb +26 -0
  92. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/me.rb +27 -0
  93. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/move_command.rb +17 -0
  94. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/move_route.rb +19 -0
  95. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/se.rb +21 -0
  96. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/skill.rb +25 -0
  97. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/state.rb +34 -0
  98. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/system.rb +62 -0
  99. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/system_terms.rb +25 -0
  100. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/system_test_battler.rb +24 -0
  101. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/system_vehicle.rb +27 -0
  102. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/tileset.rb +26 -0
  103. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/troop.rb +24 -0
  104. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/troop_member.rb +25 -0
  105. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/troop_page.rb +24 -0
  106. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/troop_page_condition.rb +39 -0
  107. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/usable_item.rb +84 -0
  108. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/usable_item_damage.rb +56 -0
  109. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/usable_item_effect.rb +25 -0
  110. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg/weapon.rb +25 -0
  111. data/lib/rgss_db/model/rpg_maker_data/vx_ace/rpg.rb +66 -0
  112. data/lib/rgss_db/model/rpg_maker_data/xp/rgss/color.rb +72 -0
  113. data/lib/rgss_db/model/rpg_maker_data/xp/rgss/rect.rb +70 -0
  114. data/lib/rgss_db/model/rpg_maker_data/xp/rgss/table.rb +99 -0
  115. data/lib/rgss_db/model/rpg_maker_data/xp/rgss/tone.rb +72 -0
  116. data/lib/rgss_db/model/rpg_maker_data/xp/rgss.rb +11 -0
  117. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/actor.rb +44 -0
  118. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/animation.rb +28 -0
  119. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/animation_frame.rb +20 -0
  120. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/animation_timing.rb +24 -0
  121. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/armor.rb +37 -0
  122. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/audio_file.rb +23 -0
  123. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/class.rb +28 -0
  124. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/class_learning.rb +20 -0
  125. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/common_event.rb +25 -0
  126. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/enemy.rb +47 -0
  127. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/enemy_action.rb +28 -0
  128. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/event.rb +36 -0
  129. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/event_command.rb +19 -0
  130. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/event_page.rb +32 -0
  131. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/event_page_condition.rb +30 -0
  132. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/event_page_graphic.rb +27 -0
  133. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/item.rb +48 -0
  134. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/map.rb +39 -0
  135. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/map_info.rb +26 -0
  136. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/move_command.rb +18 -0
  137. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/move_route.rb +19 -0
  138. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/skill.rb +47 -0
  139. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/state.rb +51 -0
  140. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/system.rb +56 -0
  141. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/system_test_battler.rb +25 -0
  142. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/system_words.rb +39 -0
  143. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/tileset.rb +39 -0
  144. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/troop.rb +24 -0
  145. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/troop_member.rb +23 -0
  146. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/troop_page.rb +21 -0
  147. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/troop_page_condition.rb +32 -0
  148. data/lib/rgss_db/model/rpg_maker_data/xp/rpg/weapon.rb +38 -0
  149. data/lib/rgss_db/model/rpg_maker_data/xp/rpg.rb +52 -0
  150. data/lib/rgss_db/model/strings.rb +607 -0
  151. data/lib/rgss_db/model/utilities.rb +90 -0
  152. data/lib/rgss_db/version.rb +7 -0
  153. data/lib/rgss_db/view/app_cli.rb +449 -0
  154. data/lib/rgss_db.rb +41 -0
  155. data/sig/rgss_db.rbs +5221 -0
  156. metadata +496 -0
@@ -0,0 +1,199 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "fileutils"
4
+
5
+ module RgssDb
6
+ #
7
+ # Debug module
8
+ #
9
+ module Debug
10
+ # Debug log file name
11
+ # @return [String]
12
+ DEBUG_FILE_NAME = "rgss-db.log"
13
+
14
+ # Debug mode disabled
15
+ # @return [Integer]
16
+ DEBUG_MODE_DISABLE = 0
17
+
18
+ # Debug mode errors and below
19
+ # @return [Integer]
20
+ DEBUG_MODE_ERROR = 1
21
+
22
+ # Debug mode warnings and below
23
+ # @return [Integer]
24
+ DEBUG_MODE_WARNING = 2
25
+
26
+ # Debug mode info and below
27
+ # @return [Integer]
28
+ DEBUG_MODE_INFO = 3
29
+
30
+ # Debug absolute file path
31
+ # @return [String]
32
+ @debug_file_path = ""
33
+
34
+ # Debug mode
35
+ # @return [Integer]
36
+ @debug_mode = 0
37
+
38
+ # Debug extra information
39
+ # @return [String]
40
+ @debug_extra_info = ""
41
+
42
+ #
43
+ # Starts the debug module with the given information
44
+ #
45
+ # Optionally sets the debug mode
46
+ #
47
+ # @param debug_file_path [String] Path to the debug file
48
+ # @param debug_mode [Integer] Debug mode
49
+ #
50
+ def self.start(debug_file_path, debug_mode = nil)
51
+ @debug_file_path = File.join(debug_file_path, DEBUG_FILE_NAME)
52
+ @debug_mode = debug_mode unless debug_mode.nil?
53
+
54
+ # Creates the directory (recursively)
55
+ FileUtils.mkdir_p(debug_file_path)
56
+
57
+ # Overwrites file if it exists already
58
+ File.truncate(@debug_file_path, 0) if File.exist?(@debug_file_path)
59
+ end
60
+
61
+ #
62
+ # Gets the debug mode
63
+ #
64
+ # @return [Integer]
65
+ #
66
+ def self.debug_mode
67
+ @debug_mode
68
+ end
69
+
70
+ #
71
+ # Sets the debug mode
72
+ #
73
+ # Set to 0 to disable
74
+ #
75
+ # @param debug_mode [Integer] Debug mode
76
+ #
77
+ def self.update_debug_mode(debug_mode)
78
+ @debug_mode = debug_mode
79
+ end
80
+
81
+ #
82
+ # Sets the debug extra information
83
+ #
84
+ # @param extra_info [Array<String>]
85
+ #
86
+ def self.update_extra_info(*extra_info)
87
+ @debug_extra_info = extra_info
88
+ end
89
+
90
+ #
91
+ # Writes the debug header to the log file
92
+ #
93
+ def self.write_debug_header
94
+ log("<--- debug module started --->")
95
+ log("debug mode: #{Debug.debug_mode}")
96
+ log("debug extra:")
97
+ @debug_extra_info.each { |str| log("\t- #{str}") }
98
+ log("<---------------------------->")
99
+ end
100
+
101
+ #
102
+ # Logs the string
103
+ #
104
+ # @param string [String]
105
+ #
106
+ def self.log(string)
107
+ File.write(@debug_file_path, "#{string}\n", mode: "a") unless disabled?
108
+ end
109
+
110
+ #
111
+ # Logs the string as information
112
+ #
113
+ # @param string [String]
114
+ #
115
+ def self.log_info(string)
116
+ log("info: #{string}") if info?
117
+ end
118
+
119
+ #
120
+ # Logs the string as an error
121
+ #
122
+ # @param string [String]
123
+ #
124
+ def self.log_error(string)
125
+ log("error: #{string}") if error?
126
+ end
127
+
128
+ #
129
+ # Logs the string as a warning
130
+ #
131
+ # @param string [String]
132
+ #
133
+ def self.log_warning(string)
134
+ log("warning: #{string}") if warning?
135
+ end
136
+
137
+ #
138
+ # Logs the given exception as an error
139
+ #
140
+ # Optionally logs the application options if given
141
+ #
142
+ # @param app_options [Hash]
143
+ #
144
+ # @param [StandardError] exception
145
+ #
146
+ def self.log_exception(exception, app_options = nil)
147
+ # Logs the exception
148
+ log_error("Application Exception:")
149
+ log_error("\t#{exception.message} (#{exception.class})")
150
+ exception.backtrace.each do |str|
151
+ log_error("\t\tfrom #{str}")
152
+ end
153
+
154
+ return unless app_options.is_a?(Hash)
155
+
156
+ # Logs the application options
157
+ log_error("Application options:")
158
+ app_options.each_pair do |opt_id, opt_value|
159
+ log_error("\t- #{opt_id} => #{opt_value}")
160
+ end
161
+ end
162
+
163
+ #
164
+ # Checks whether the debug module is disabled or not
165
+ #
166
+ # @return [Boolean]
167
+ #
168
+ def self.disabled?
169
+ @debug_mode == DEBUG_MODE_DISABLE
170
+ end
171
+
172
+ #
173
+ # Checks whether the debug mode is info or not
174
+ #
175
+ # @return [Boolean]
176
+ #
177
+ def self.info?
178
+ @debug_mode >= DEBUG_MODE_INFO
179
+ end
180
+
181
+ #
182
+ # Checks whether the debug mode is error or not
183
+ #
184
+ # @return [Boolean]
185
+ #
186
+ def self.error?
187
+ @debug_mode >= DEBUG_MODE_ERROR
188
+ end
189
+
190
+ #
191
+ # Checks whether the debug mode is warning or not
192
+ #
193
+ # @return [Boolean]
194
+ #
195
+ def self.warning?
196
+ @debug_mode >= DEBUG_MODE_WARNING
197
+ end
198
+ end
199
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RgssDb
4
+ #
5
+ # Base Error class
6
+ #
7
+ class Error < StandardError
8
+ #
9
+ # Creates a new error object
10
+ #
11
+ # @param message [String] Error message
12
+ #
13
+ def initialize(message)
14
+ super("[rgss-db] #{message}")
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RgssDb
4
+ #
5
+ # Jsonable mixin
6
+ #
7
+ module Jsonable
8
+ #
9
+ # Returns this instance as a json-ready hash
10
+ #
11
+ # @return [Hash]
12
+ #
13
+ def as_json
14
+ hash = {}
15
+ hash.store(JSON.create_id, self.class.name)
16
+ instance_variables.each do |ivar|
17
+ ivar_id = ivar.to_s.delete("@")
18
+ ivar_value = instance_variable_get(ivar)
19
+ hash.store(ivar_id, ivar_value)
20
+ end
21
+ hash
22
+ end
23
+
24
+ #
25
+ # Converts this instance to a JSON string
26
+ #
27
+ # @param args [Array] Arguments
28
+ #
29
+ # @return [String]
30
+ #
31
+ def to_json(*args)
32
+ as_json.to_json(*args)
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RgssDb
4
+ #
5
+ # Jsonable constructor module
6
+ #
7
+ module JsonableConstructor
8
+ #
9
+ # JSON constructor
10
+ #
11
+ # This constructor is used to create a default instance
12
+ #
13
+ # Note: Needs to be overriden in case class constructor needs arguments
14
+ #
15
+ # @param args [Array]
16
+ #
17
+ # @return Class instance
18
+ #
19
+ def json_new(*args)
20
+ new(*args)
21
+ end
22
+
23
+ #
24
+ # JSON deserializer
25
+ #
26
+ # @param hash [Hash]
27
+ # @param args [Array]
28
+ #
29
+ # @return Class instance
30
+ #
31
+ def json_create(hash, *args)
32
+ instance = json_new(*args)
33
+ hash.each_pair do |key, value|
34
+ ivar = "@#{key}".to_sym
35
+ instance.instance_variable_set(ivar, value) if instance.instance_variables.include?(ivar)
36
+ end
37
+ instance
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,72 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # The RGBA color class.
5
+ #
6
+ # Each component is handled with a floating-point value (Float).
7
+ #
8
+ class Color
9
+ include RgssDb::Jsonable
10
+ extend RgssDb::JsonableConstructor
11
+
12
+ #
13
+ # Creates a Color object. If alpha is omitted, it is assumed to be 255.
14
+ #
15
+ # The default values when no arguments are specified are (0, 0, 0, 0).
16
+ #
17
+ # @param red [Integer]
18
+ # @param green [Integer]
19
+ # @param blue [Integer]
20
+ # @param alpha [Integer]
21
+ #
22
+ def initialize(red = 0, green = 0, blue = 0, alpha = 0)
23
+ @red = red
24
+ @green = green
25
+ @blue = blue
26
+ @alpha = [red, green, blue].sum.positive? && alpha.zero? ? 255 : alpha
27
+ end
28
+
29
+ #
30
+ # Dumps this instance into a binary string
31
+ #
32
+ # Note: needed for Marshal module support
33
+ #
34
+ # @return [String]
35
+ #
36
+ def _dump(*)
37
+ # double, double, double, double (double-precision)
38
+ [@red, @green, @blue, @alpha].pack("dddd")
39
+ end
40
+
41
+ #
42
+ # Creates a new instance using the given binary data
43
+ #
44
+ # Note: needed for Marshal module support
45
+ #
46
+ # @param serialized_string [String]
47
+ #
48
+ # @return [Color]
49
+ #
50
+ def self._load(serialized_string)
51
+ Color.new_serialized(serialized_string)
52
+ end
53
+
54
+ #
55
+ # Creates a new instance from a serialized string
56
+ #
57
+ # Note: needed for Marshal module support
58
+ #
59
+ # @param serialized_string [String]
60
+ #
61
+ # @return [Color]
62
+ #
63
+ def self.new_serialized(serialized_string)
64
+ # double, double, double, double (double-precision)
65
+ red, green, blue, alpha = serialized_string.unpack("dddd")
66
+
67
+ # Creates the instance
68
+ Color.new(red, green, blue, alpha)
69
+ end
70
+
71
+ attr_accessor :red, :green, :blue, :alpha
72
+ end
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # The rectangle class.
5
+ #
6
+ class Rect
7
+ include RgssDb::Jsonable
8
+ extend RgssDb::JsonableConstructor
9
+
10
+ #
11
+ # Creates a new Rect object.
12
+ #
13
+ # The default values when no arguments are specified are (0, 0, 0, 0).
14
+ #
15
+ # @param x [Integer]
16
+ # @param y [Integer]
17
+ # @param width [Integer]
18
+ # @param height [Integer]
19
+ #
20
+ def initialize(x = 0, y = 0, width = 0, height = 0)
21
+ @x = x
22
+ @y = y
23
+ @width = width
24
+ @height = height
25
+ end
26
+
27
+ #
28
+ # Dumps this instance into a binary string
29
+ #
30
+ # Note: needed for Marshal module support
31
+ #
32
+ # @return [String]
33
+ #
34
+ def _dump(*)
35
+ # int32_t, int32_t, int32_t, int32_t
36
+ [@x, @y, @width, @height].pack("llll")
37
+ end
38
+
39
+ #
40
+ # Creates a new instance using the given binary data
41
+ #
42
+ # Note: needed for Marshal module support
43
+ #
44
+ # @param serialized_string [String]
45
+ #
46
+ # @return [Rect]
47
+ #
48
+ def self._load(serialized_string)
49
+ Rect.new_serialized(serialized_string)
50
+ end
51
+
52
+ #
53
+ # Creates a new instance from a serialized string
54
+ #
55
+ # Note: needed for Marshal module support
56
+ #
57
+ # @param serialized_string [String]
58
+ #
59
+ # @return [Rect]
60
+ #
61
+ def self.new_serialized(serialized_string)
62
+ # int32_t, int32_t, int32_t, int32_t
63
+ x, y, width, height = serialized_string.unpack("llll")
64
+
65
+ # Creates the instance
66
+ Rect.new(x, y, width, height)
67
+ end
68
+
69
+ attr_accessor :x, :y, :width, :height
70
+ end
@@ -0,0 +1,99 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # The multidimensional array class.
5
+ #
6
+ # Each element is an integer of 2 signed bytes ranging from -32,768 to 32,767.
7
+ #
8
+ class Table
9
+ include RgssDb::Jsonable
10
+ extend RgssDb::JsonableConstructor
11
+
12
+ #
13
+ # Creates a Table object.
14
+ #
15
+ # Specifies the size of each dimension in the multidimensional array. 1-, 2-, and 3-dimensional arrays are possible.
16
+ #
17
+ # Arrays with no parameters are also permitted.
18
+ #
19
+ # @param xsize [Integer]
20
+ # @param ysize [Integer]
21
+ # @param zsize [Integer]
22
+ #
23
+ def initialize(xsize, ysize = 0, zsize = 0)
24
+ # RMXP needs dimensions
25
+ @dim = 1
26
+ @dim = 2 if ysize.positive?
27
+ @dim = 3 if zsize.positive?
28
+ @x = xsize
29
+ @y = ysize
30
+ @z = zsize
31
+ @data = []
32
+ end
33
+
34
+ #
35
+ # Dumps this instance into a binary string
36
+ #
37
+ # Note: needed for Marshal module support
38
+ #
39
+ # @return [String]
40
+ #
41
+ def _dump(*)
42
+ # int32_t, int32_t, int32_t, int32_t, int32_t, int16_t *
43
+ [@dim, @x, @y, @z, @x * @y * @z, *@data].pack("llllls*")
44
+ end
45
+
46
+ #
47
+ # Creates a new instance using the given binary data
48
+ #
49
+ # Note: needed for Marshal module support
50
+ #
51
+ # @param serialized_string [String]
52
+ #
53
+ # @return [Table]
54
+ #
55
+ def self._load(serialized_string)
56
+ Table.new_serialized(serialized_string)
57
+ end
58
+
59
+ #
60
+ # Creates a new instance from a serialized string
61
+ #
62
+ # Note: needed for Marshal module support
63
+ #
64
+ # @param serialized_string [String]
65
+ #
66
+ # @return [Table]
67
+ #
68
+ def self.new_serialized(serialized_string)
69
+ # int32_t, int32_t, int32_t, int32_t, int32_t, int16_t *
70
+ dim, x, y, z, size, *data = serialized_string.unpack("llllls*")
71
+
72
+ # Checks if written size value matches the actual size of the table
73
+ raise "Table: bad file format (size mismatch)" unless size == (x * y * z)
74
+ # Double check no data was lost
75
+ raise "Table: bad file format (data length mismatch)" unless size == data.length
76
+
77
+ # Creates the instance
78
+ table = Table.new(0, 0, 0)
79
+ table.dim = dim
80
+ table.x = x
81
+ table.y = y
82
+ table.z = z
83
+ table.data = data
84
+ table
85
+ end
86
+
87
+ #
88
+ # Returns a table instance for JSON deserialization
89
+ #
90
+ # @param args [Array]
91
+ #
92
+ # @return [Table]
93
+ #
94
+ def self.json_new(*args)
95
+ Table.new(0, 0, 0)
96
+ end
97
+
98
+ attr_accessor :dim, :x, :y, :z, :data
99
+ end
@@ -0,0 +1,72 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # The color tone class.
5
+ #
6
+ # Each component is handled with a floating-point value (Float).
7
+ #
8
+ class Tone
9
+ include RgssDb::Jsonable
10
+ extend RgssDb::JsonableConstructor
11
+
12
+ #
13
+ # Creates a Tone object. If gray is omitted, it is assumed to be 0.
14
+ #
15
+ # The default values when no arguments are specified are (0, 0, 0, 0).
16
+ #
17
+ # @param red [Integer]
18
+ # @param green [Integer]
19
+ # @param blue [Integer]
20
+ # @param gray [Integer]
21
+ #
22
+ def initialize(red = 0, green = 0, blue = 0, gray = 0)
23
+ @red = red
24
+ @green = green
25
+ @blue = blue
26
+ @gray = gray
27
+ end
28
+
29
+ #
30
+ # Dumps this instance into a binary string
31
+ #
32
+ # Note: needed for Marshal module support
33
+ #
34
+ # @return [String]
35
+ #
36
+ def _dump(*)
37
+ # double, double, double, double (double-precision)
38
+ [@red, @green, @blue, @gray].pack("dddd")
39
+ end
40
+
41
+ #
42
+ # Creates a new instance using the given binary data
43
+ #
44
+ # Note: needed for Marshal module support
45
+ #
46
+ # @param serialized_string [String]
47
+ #
48
+ # @return [Tone]
49
+ #
50
+ def self._load(serialized_string)
51
+ Tone.new_serialized(serialized_string)
52
+ end
53
+
54
+ #
55
+ # Creates a new instance from a serialized string
56
+ #
57
+ # Note: needed for Marshal module support
58
+ #
59
+ # @param serialized_string [String]
60
+ #
61
+ # @return [Tone]
62
+ #
63
+ def self.new_serialized(serialized_string)
64
+ # double, double, double, double (double-precision)
65
+ red, green, blue, gray = serialized_string.unpack("dddd")
66
+
67
+ # Creates the instance
68
+ Tone.new(red, green, blue, gray)
69
+ end
70
+
71
+ attr_accessor :red, :green, :blue, :gray
72
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Application mixins
4
+ require_relative "../../mixins/jsonable"
5
+ require_relative "../../mixins/jsonable_constructor"
6
+
7
+ # RGSS Impl.
8
+ require_relative "./rgss/color"
9
+ require_relative "./rgss/rect"
10
+ require_relative "./rgss/table"
11
+ require_relative "./rgss/tone"
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RPG
4
+ #
5
+ # Data class for actors.
6
+ #
7
+ class Actor
8
+ include RgssDb::Jsonable
9
+ extend RgssDb::JsonableConstructor
10
+
11
+ def initialize
12
+ @id = 0
13
+ @name = ""
14
+ @class_id = 1
15
+ @initial_level = 1
16
+ @exp_basis = 25
17
+ @exp_inflation = 35
18
+ @character_name = ""
19
+ @character_index = 0
20
+ @face_name = ""
21
+ @face_index = 0
22
+ @parameters = Table.new(6, 100)
23
+ @weapon_id = 0
24
+ @armor1_id = 0
25
+ @armor2_id = 0
26
+ @armor3_id = 0
27
+ @armor4_id = 0
28
+ @two_swords_style = false
29
+ @fix_equipment = false
30
+ @auto_battle = false
31
+ @super_guard = false
32
+ @pharmacology = false
33
+ @critical_bonus = false
34
+ end
35
+
36
+ def to_s
37
+ @name.to_s
38
+ end
39
+
40
+ attr_accessor :id, :name, :class_id, :initial_level, :exp_basis, :exp_inflation, :character_name, :character_index,
41
+ :face_name, :face_index, :parameters, :weapon_id, :armor1_id, :armor2_id, :armor3_id, :armor4_id,
42
+ :two_swords_style, :fix_equipment, :auto_battle, :super_guard, :pharmacology, :critical_bonus
43
+ end
44
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RPG
4
+ #
5
+ # Data class for animation.
6
+ #
7
+ class Animation
8
+ include RgssDb::Jsonable
9
+ extend RgssDb::JsonableConstructor
10
+
11
+ def initialize
12
+ @id = 0
13
+ @name = ""
14
+ @animation1_name = ""
15
+ @animation1_hue = 0
16
+ @animation2_name = ""
17
+ @animation2_hue = 0
18
+ @position = 1
19
+ @frame_max = 1
20
+ @frames = [RPG::Animation::Frame.new]
21
+ @timings = []
22
+ end
23
+
24
+ def to_s
25
+ @name.to_s
26
+ end
27
+
28
+ attr_accessor :id, :name, :animation1_name, :animation1_hue, :animation2_name, :animation2_hue, :position,
29
+ :frame_max, :frames, :timings
30
+ end
31
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RPG
4
+ class Animation
5
+ #
6
+ # Data class for animation frames.
7
+ #
8
+ class Frame
9
+ include RgssDb::Jsonable
10
+ extend RgssDb::JsonableConstructor
11
+
12
+ def initialize
13
+ @cell_max = 0
14
+ @cell_data = Table.new(0, 0)
15
+ end
16
+
17
+ attr_accessor :cell_max, :cell_data
18
+ end
19
+ end
20
+ end