rgss3_default_scripts 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/Gemfile +4 -0
  4. data/README.md +9 -0
  5. data/Rakefile +2 -0
  6. data/lib/rgss3_default_scripts.rb +109 -0
  7. data/lib/rgss3_default_scripts/BattleManager.rb +392 -0
  8. data/lib/rgss3_default_scripts/Cache.rb +134 -0
  9. data/lib/rgss3_default_scripts/DataManager.rb +267 -0
  10. data/lib/rgss3_default_scripts/Game_Action.rb +262 -0
  11. data/lib/rgss3_default_scripts/Game_ActionResult.rb +159 -0
  12. data/lib/rgss3_default_scripts/Game_Actor.rb +696 -0
  13. data/lib/rgss3_default_scripts/Game_Actors.rb +22 -0
  14. data/lib/rgss3_default_scripts/Game_BaseItem.rb +51 -0
  15. data/lib/rgss3_default_scripts/Game_Battler.rb +824 -0
  16. data/lib/rgss3_default_scripts/Game_BattlerBase.rb +731 -0
  17. data/lib/rgss3_default_scripts/Game_Character.rb +396 -0
  18. data/lib/rgss3_default_scripts/Game_CharacterBase.rb +443 -0
  19. data/lib/rgss3_default_scripts/Game_CommonEvent.rb +41 -0
  20. data/lib/rgss3_default_scripts/Game_Enemy.rb +264 -0
  21. data/lib/rgss3_default_scripts/Game_Event.rb +308 -0
  22. data/lib/rgss3_default_scripts/Game_Follower.rb +74 -0
  23. data/lib/rgss3_default_scripts/Game_Followers.rb +112 -0
  24. data/lib/rgss3_default_scripts/Game_Interpreter.rb +1413 -0
  25. data/lib/rgss3_default_scripts/Game_Map.rb +704 -0
  26. data/lib/rgss3_default_scripts/Game_Message.rb +101 -0
  27. data/lib/rgss3_default_scripts/Game_Party.rb +418 -0
  28. data/lib/rgss3_default_scripts/Game_Picture.rb +161 -0
  29. data/lib/rgss3_default_scripts/Game_Pictures.rb +28 -0
  30. data/lib/rgss3_default_scripts/Game_Player.rb +488 -0
  31. data/lib/rgss3_default_scripts/Game_Screen.rb +234 -0
  32. data/lib/rgss3_default_scripts/Game_SelfSwitches.rb +35 -0
  33. data/lib/rgss3_default_scripts/Game_Switches.rb +35 -0
  34. data/lib/rgss3_default_scripts/Game_System.rb +122 -0
  35. data/lib/rgss3_default_scripts/Game_Temp.rb +45 -0
  36. data/lib/rgss3_default_scripts/Game_Timer.rb +56 -0
  37. data/lib/rgss3_default_scripts/Game_Troop.rb +205 -0
  38. data/lib/rgss3_default_scripts/Game_Unit.rb +131 -0
  39. data/lib/rgss3_default_scripts/Game_Variables.rb +34 -0
  40. data/lib/rgss3_default_scripts/Game_Vehicle.rb +193 -0
  41. data/lib/rgss3_default_scripts/SceneManager.rb +94 -0
  42. data/lib/rgss3_default_scripts/Scene_Base.rb +132 -0
  43. data/lib/rgss3_default_scripts/Scene_Battle.rb +693 -0
  44. data/lib/rgss3_default_scripts/Scene_Debug.rb +87 -0
  45. data/lib/rgss3_default_scripts/Scene_End.rb +61 -0
  46. data/lib/rgss3_default_scripts/Scene_Equip.rb +144 -0
  47. data/lib/rgss3_default_scripts/Scene_File.rb +203 -0
  48. data/lib/rgss3_default_scripts/Scene_Gameover.rb +85 -0
  49. data/lib/rgss3_default_scripts/Scene_Item.rb +75 -0
  50. data/lib/rgss3_default_scripts/Scene_ItemBase.rb +147 -0
  51. data/lib/rgss3_default_scripts/Scene_Load.rb +40 -0
  52. data/lib/rgss3_default_scripts/Scene_Map.rb +276 -0
  53. data/lib/rgss3_default_scripts/Scene_Menu.rb +127 -0
  54. data/lib/rgss3_default_scripts/Scene_MenuBase.rb +63 -0
  55. data/lib/rgss3_default_scripts/Scene_Name.rb +32 -0
  56. data/lib/rgss3_default_scripts/Scene_Save.rb +38 -0
  57. data/lib/rgss3_default_scripts/Scene_Shop.rb +299 -0
  58. data/lib/rgss3_default_scripts/Scene_Skill.rb +108 -0
  59. data/lib/rgss3_default_scripts/Scene_Status.rb +25 -0
  60. data/lib/rgss3_default_scripts/Scene_Title.rb +137 -0
  61. data/lib/rgss3_default_scripts/Sound.rb +135 -0
  62. data/lib/rgss3_default_scripts/Sprite_Base.rb +232 -0
  63. data/lib/rgss3_default_scripts/Sprite_Battler.rb +231 -0
  64. data/lib/rgss3_default_scripts/Sprite_Character.rb +226 -0
  65. data/lib/rgss3_default_scripts/Sprite_Picture.rb +82 -0
  66. data/lib/rgss3_default_scripts/Sprite_Timer.rb +77 -0
  67. data/lib/rgss3_default_scripts/Spriteset_Battle.rb +389 -0
  68. data/lib/rgss3_default_scripts/Spriteset_Map.rb +273 -0
  69. data/lib/rgss3_default_scripts/Spriteset_Weather.rb +184 -0
  70. data/lib/rgss3_default_scripts/Vocab.rb +145 -0
  71. data/lib/rgss3_default_scripts/Window_ActorCommand.rb +78 -0
  72. data/lib/rgss3_default_scripts/Window_Base.rb +571 -0
  73. data/lib/rgss3_default_scripts/Window_BattleActor.rb +38 -0
  74. data/lib/rgss3_default_scripts/Window_BattleEnemy.rb +70 -0
  75. data/lib/rgss3_default_scripts/Window_BattleItem.rb +40 -0
  76. data/lib/rgss3_default_scripts/Window_BattleLog.rb +425 -0
  77. data/lib/rgss3_default_scripts/Window_BattleSkill.rb +34 -0
  78. data/lib/rgss3_default_scripts/Window_BattleStatus.rb +111 -0
  79. data/lib/rgss3_default_scripts/Window_ChoiceList.rb +88 -0
  80. data/lib/rgss3_default_scripts/Window_Command.rb +152 -0
  81. data/lib/rgss3_default_scripts/Window_DebugLeft.rb +104 -0
  82. data/lib/rgss3_default_scripts/Window_DebugRight.rb +119 -0
  83. data/lib/rgss3_default_scripts/Window_EquipCommand.rb +36 -0
  84. data/lib/rgss3_default_scripts/Window_EquipItem.rb +78 -0
  85. data/lib/rgss3_default_scripts/Window_EquipSlot.rb +111 -0
  86. data/lib/rgss3_default_scripts/Window_EquipStatus.rb +97 -0
  87. data/lib/rgss3_default_scripts/Window_GameEnd.rb +38 -0
  88. data/lib/rgss3_default_scripts/Window_Gold.rb +47 -0
  89. data/lib/rgss3_default_scripts/Window_Help.rb +43 -0
  90. data/lib/rgss3_default_scripts/Window_HorzCommand.rb +106 -0
  91. data/lib/rgss3_default_scripts/Window_ItemCategory.rb +54 -0
  92. data/lib/rgss3_default_scripts/Window_ItemList.rb +117 -0
  93. data/lib/rgss3_default_scripts/Window_KeyItem.rb +55 -0
  94. data/lib/rgss3_default_scripts/Window_MapName.rb +96 -0
  95. data/lib/rgss3_default_scripts/Window_MenuActor.rb +43 -0
  96. data/lib/rgss3_default_scripts/Window_MenuCommand.rb +106 -0
  97. data/lib/rgss3_default_scripts/Window_MenuStatus.rb +85 -0
  98. data/lib/rgss3_default_scripts/Window_Message.rb +397 -0
  99. data/lib/rgss3_default_scripts/Window_NameEdit.rb +129 -0
  100. data/lib/rgss3_default_scripts/Window_NameInput.rb +253 -0
  101. data/lib/rgss3_default_scripts/Window_NumberInput.rb +148 -0
  102. data/lib/rgss3_default_scripts/Window_PartyCommand.rb +47 -0
  103. data/lib/rgss3_default_scripts/Window_SaveFile.rb +69 -0
  104. data/lib/rgss3_default_scripts/Window_ScrollText.rb +90 -0
  105. data/lib/rgss3_default_scripts/Window_Selectable.rb +442 -0
  106. data/lib/rgss3_default_scripts/Window_ShopBuy.rb +115 -0
  107. data/lib/rgss3_default_scripts/Window_ShopCommand.rb +36 -0
  108. data/lib/rgss3_default_scripts/Window_ShopNumber.rb +137 -0
  109. data/lib/rgss3_default_scripts/Window_ShopSell.rb +27 -0
  110. data/lib/rgss3_default_scripts/Window_ShopStatus.rb +124 -0
  111. data/lib/rgss3_default_scripts/Window_SkillCommand.rb +76 -0
  112. data/lib/rgss3_default_scripts/Window_SkillList.rb +121 -0
  113. data/lib/rgss3_default_scripts/Window_SkillStatus.rb +38 -0
  114. data/lib/rgss3_default_scripts/Window_Status.rb +125 -0
  115. data/lib/rgss3_default_scripts/Window_TitleCommand.rb +45 -0
  116. data/rgss3_default_scripts.gemspec +23 -0
  117. metadata +186 -0
@@ -0,0 +1,43 @@
1
+ #==============================================================================
2
+ # ** Window_MenuActor
3
+ #------------------------------------------------------------------------------
4
+ # This window is for selecting actors that will be the target of item or
5
+ # skill use.
6
+ #==============================================================================
7
+
8
+ class Window_MenuActor < Window_MenuStatus
9
+ #--------------------------------------------------------------------------
10
+ # * Object Initialization
11
+ #--------------------------------------------------------------------------
12
+ def initialize
13
+ super(0, 0)
14
+ self.visible = false
15
+ end
16
+ #--------------------------------------------------------------------------
17
+ # * Processing When OK Button Is Pressed
18
+ #--------------------------------------------------------------------------
19
+ def process_ok
20
+ $game_party.target_actor = $game_party.members[index] unless @cursor_all
21
+ call_ok_handler
22
+ end
23
+ #--------------------------------------------------------------------------
24
+ # * Restore Previous Selection Position
25
+ #--------------------------------------------------------------------------
26
+ def select_last
27
+ select($game_party.target_actor.index || 0)
28
+ end
29
+ #--------------------------------------------------------------------------
30
+ # * Set Position of Cursor for Item
31
+ #--------------------------------------------------------------------------
32
+ def select_for_item(item)
33
+ @cursor_fix = item.for_user?
34
+ @cursor_all = item.for_all?
35
+ if @cursor_fix
36
+ select($game_party.menu_actor.index)
37
+ elsif @cursor_all
38
+ select(0)
39
+ else
40
+ select_last
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,106 @@
1
+ #==============================================================================
2
+ # ** Window_MenuCommand
3
+ #------------------------------------------------------------------------------
4
+ # This command window appears on the menu screen.
5
+ #==============================================================================
6
+
7
+ class Window_MenuCommand < Window_Command
8
+ #--------------------------------------------------------------------------
9
+ # * Initialize Command Selection Position (Class Method)
10
+ #--------------------------------------------------------------------------
11
+ def self.init_command_position
12
+ @@last_command_symbol = nil
13
+ end
14
+ #--------------------------------------------------------------------------
15
+ # * Object Initialization
16
+ #--------------------------------------------------------------------------
17
+ def initialize
18
+ super(0, 0)
19
+ select_last
20
+ end
21
+ #--------------------------------------------------------------------------
22
+ # * Get Window Width
23
+ #--------------------------------------------------------------------------
24
+ def window_width
25
+ return 160
26
+ end
27
+ #--------------------------------------------------------------------------
28
+ # * Get Number of Lines to Show
29
+ #--------------------------------------------------------------------------
30
+ def visible_line_number
31
+ item_max
32
+ end
33
+ #--------------------------------------------------------------------------
34
+ # * Create Command List
35
+ #--------------------------------------------------------------------------
36
+ def make_command_list
37
+ add_main_commands
38
+ add_formation_command
39
+ add_original_commands
40
+ add_save_command
41
+ add_game_end_command
42
+ end
43
+ #--------------------------------------------------------------------------
44
+ # * Add Main Commands to List
45
+ #--------------------------------------------------------------------------
46
+ def add_main_commands
47
+ add_command(Vocab::item, :item, main_commands_enabled)
48
+ add_command(Vocab::skill, :skill, main_commands_enabled)
49
+ add_command(Vocab::equip, :equip, main_commands_enabled)
50
+ add_command(Vocab::status, :status, main_commands_enabled)
51
+ end
52
+ #--------------------------------------------------------------------------
53
+ # * Add Formation to Command List
54
+ #--------------------------------------------------------------------------
55
+ def add_formation_command
56
+ add_command(Vocab::formation, :formation, formation_enabled)
57
+ end
58
+ #--------------------------------------------------------------------------
59
+ # * For Adding Original Commands
60
+ #--------------------------------------------------------------------------
61
+ def add_original_commands
62
+ end
63
+ #--------------------------------------------------------------------------
64
+ # * Add Save to Command List
65
+ #--------------------------------------------------------------------------
66
+ def add_save_command
67
+ add_command(Vocab::save, :save, save_enabled)
68
+ end
69
+ #--------------------------------------------------------------------------
70
+ # * Add Exit Game to Command List
71
+ #--------------------------------------------------------------------------
72
+ def add_game_end_command
73
+ add_command(Vocab::game_end, :game_end)
74
+ end
75
+ #--------------------------------------------------------------------------
76
+ # * Get Activation State of Main Commands
77
+ #--------------------------------------------------------------------------
78
+ def main_commands_enabled
79
+ $game_party.exists
80
+ end
81
+ #--------------------------------------------------------------------------
82
+ # * Get Activation State of Formation
83
+ #--------------------------------------------------------------------------
84
+ def formation_enabled
85
+ $game_party.members.size >= 2 && !$game_system.formation_disabled
86
+ end
87
+ #--------------------------------------------------------------------------
88
+ # * Get Activation State of Save
89
+ #--------------------------------------------------------------------------
90
+ def save_enabled
91
+ !$game_system.save_disabled
92
+ end
93
+ #--------------------------------------------------------------------------
94
+ # * Processing When OK Button Is Pressed
95
+ #--------------------------------------------------------------------------
96
+ def process_ok
97
+ @@last_command_symbol = current_symbol
98
+ super
99
+ end
100
+ #--------------------------------------------------------------------------
101
+ # * Restore Previous Selection Position
102
+ #--------------------------------------------------------------------------
103
+ def select_last
104
+ select_symbol(@@last_command_symbol)
105
+ end
106
+ end
@@ -0,0 +1,85 @@
1
+ #==============================================================================
2
+ # ** Window_MenuStatus
3
+ #------------------------------------------------------------------------------
4
+ # This window displays party member status on the menu screen.
5
+ #==============================================================================
6
+
7
+ class Window_MenuStatus < Window_Selectable
8
+ #--------------------------------------------------------------------------
9
+ # * Public Instance Variables
10
+ #--------------------------------------------------------------------------
11
+ attr_reader :pending_index # Pending position (for formation)
12
+ #--------------------------------------------------------------------------
13
+ # * Object Initialization
14
+ #--------------------------------------------------------------------------
15
+ def initialize(x, y)
16
+ super(x, y, window_width, window_height)
17
+ @pending_index = -1
18
+ refresh
19
+ end
20
+ #--------------------------------------------------------------------------
21
+ # * Get Window Width
22
+ #--------------------------------------------------------------------------
23
+ def window_width
24
+ Graphics.width - 160
25
+ end
26
+ #--------------------------------------------------------------------------
27
+ # * Get Window Height
28
+ #--------------------------------------------------------------------------
29
+ def window_height
30
+ Graphics.height
31
+ end
32
+ #--------------------------------------------------------------------------
33
+ # * Get Number of Items
34
+ #--------------------------------------------------------------------------
35
+ def item_max
36
+ $game_party.members.size
37
+ end
38
+ #--------------------------------------------------------------------------
39
+ # * Get Item Height
40
+ #--------------------------------------------------------------------------
41
+ def item_height
42
+ (height - standard_padding * 2) / 4
43
+ end
44
+ #--------------------------------------------------------------------------
45
+ # * Draw Item
46
+ #--------------------------------------------------------------------------
47
+ def draw_item(index)
48
+ actor = $game_party.members[index]
49
+ enabled = $game_party.battle_members.include?(actor)
50
+ rect = item_rect(index)
51
+ draw_item_background(index)
52
+ draw_actor_face(actor, rect.x + 1, rect.y + 1, enabled)
53
+ draw_actor_simple_status(actor, rect.x + 108, rect.y + line_height / 2)
54
+ end
55
+ #--------------------------------------------------------------------------
56
+ # * Draw Background for Item
57
+ #--------------------------------------------------------------------------
58
+ def draw_item_background(index)
59
+ if index == @pending_index
60
+ contents.fill_rect(item_rect(index), pending_color)
61
+ end
62
+ end
63
+ #--------------------------------------------------------------------------
64
+ # * Processing When OK Button Is Pressed
65
+ #--------------------------------------------------------------------------
66
+ def process_ok
67
+ super
68
+ $game_party.menu_actor = $game_party.members[index]
69
+ end
70
+ #--------------------------------------------------------------------------
71
+ # * Restore Previous Selection Position
72
+ #--------------------------------------------------------------------------
73
+ def select_last
74
+ select($game_party.menu_actor.index || 0)
75
+ end
76
+ #--------------------------------------------------------------------------
77
+ # * Set Pending Position (for Formation)
78
+ #--------------------------------------------------------------------------
79
+ def pending_index=(index)
80
+ last_pending_index = @pending_index
81
+ @pending_index = index
82
+ redraw_item(@pending_index)
83
+ redraw_item(last_pending_index)
84
+ end
85
+ end
@@ -0,0 +1,397 @@
1
+ #==============================================================================
2
+ # ** Window_Message
3
+ #------------------------------------------------------------------------------
4
+ # This message window is used to display text.
5
+ #==============================================================================
6
+
7
+ class Window_Message < Window_Base
8
+ #--------------------------------------------------------------------------
9
+ # * Object Initialization
10
+ #--------------------------------------------------------------------------
11
+ def initialize
12
+ super(0, 0, window_width, window_height)
13
+ self.z = 200
14
+ self.openness = 0
15
+ create_all_windows
16
+ create_back_bitmap
17
+ create_back_sprite
18
+ clear_instance_variables
19
+ end
20
+ #--------------------------------------------------------------------------
21
+ # * Get Window Width
22
+ #--------------------------------------------------------------------------
23
+ def window_width
24
+ Graphics.width
25
+ end
26
+ #--------------------------------------------------------------------------
27
+ # * Get Window Height
28
+ #--------------------------------------------------------------------------
29
+ def window_height
30
+ fitting_height(visible_line_number)
31
+ end
32
+ #--------------------------------------------------------------------------
33
+ # * Clear Instance Variables
34
+ #--------------------------------------------------------------------------
35
+ def clear_instance_variables
36
+ @fiber = nil # Fiber
37
+ @background = 0 # Background type
38
+ @position = 2 # Display position
39
+ clear_flags
40
+ end
41
+ #--------------------------------------------------------------------------
42
+ # * Clear Flag
43
+ #--------------------------------------------------------------------------
44
+ def clear_flags
45
+ @show_fast = false # Fast forward flag
46
+ @line_show_fast = false # Fast forward by line flag
47
+ @pause_skip = false # Input standby omission flag
48
+ end
49
+ #--------------------------------------------------------------------------
50
+ # * Get Number of Lines to Show
51
+ #--------------------------------------------------------------------------
52
+ def visible_line_number
53
+ return 4
54
+ end
55
+ #--------------------------------------------------------------------------
56
+ # * Free
57
+ #--------------------------------------------------------------------------
58
+ def dispose
59
+ super
60
+ dispose_all_windows
61
+ dispose_back_bitmap
62
+ dispose_back_sprite
63
+ end
64
+ #--------------------------------------------------------------------------
65
+ # * Frame Update
66
+ #--------------------------------------------------------------------------
67
+ def update
68
+ super
69
+ update_all_windows
70
+ update_back_sprite
71
+ update_fiber
72
+ end
73
+ #--------------------------------------------------------------------------
74
+ # * Update Fiber
75
+ #--------------------------------------------------------------------------
76
+ def update_fiber
77
+ if @fiber
78
+ @fiber.resume
79
+ elsif $game_message.busy? && !$game_message.scroll_mode
80
+ @fiber = Fiber.new { fiber_main }
81
+ @fiber.resume
82
+ else
83
+ $game_message.visible = false
84
+ end
85
+ end
86
+ #--------------------------------------------------------------------------
87
+ # * Create All Windows
88
+ #--------------------------------------------------------------------------
89
+ def create_all_windows
90
+ @gold_window = Window_Gold.new
91
+ @gold_window.x = Graphics.width - @gold_window.width
92
+ @gold_window.y = 0
93
+ @gold_window.openness = 0
94
+ @choice_window = Window_ChoiceList.new(self)
95
+ @number_window = Window_NumberInput.new(self)
96
+ @item_window = Window_KeyItem.new(self)
97
+ end
98
+ #--------------------------------------------------------------------------
99
+ # * Create Background Bitmap
100
+ #--------------------------------------------------------------------------
101
+ def create_back_bitmap
102
+ @back_bitmap = Bitmap.new(width, height)
103
+ rect1 = Rect.new(0, 0, width, 12)
104
+ rect2 = Rect.new(0, 12, width, height - 24)
105
+ rect3 = Rect.new(0, height - 12, width, 12)
106
+ @back_bitmap.gradient_fill_rect(rect1, back_color2, back_color1, true)
107
+ @back_bitmap.fill_rect(rect2, back_color1)
108
+ @back_bitmap.gradient_fill_rect(rect3, back_color1, back_color2, true)
109
+ end
110
+ #--------------------------------------------------------------------------
111
+ # * Get Background Color 1
112
+ #--------------------------------------------------------------------------
113
+ def back_color1
114
+ Color.new(0, 0, 0, 160)
115
+ end
116
+ #--------------------------------------------------------------------------
117
+ # * Get Background Color 2
118
+ #--------------------------------------------------------------------------
119
+ def back_color2
120
+ Color.new(0, 0, 0, 0)
121
+ end
122
+ #--------------------------------------------------------------------------
123
+ # * Create Background Sprite
124
+ #--------------------------------------------------------------------------
125
+ def create_back_sprite
126
+ @back_sprite = Sprite.new
127
+ @back_sprite.bitmap = @back_bitmap
128
+ @back_sprite.visible = false
129
+ @back_sprite.z = z - 1
130
+ end
131
+ #--------------------------------------------------------------------------
132
+ # * Free All Windows
133
+ #--------------------------------------------------------------------------
134
+ def dispose_all_windows
135
+ @gold_window.dispose
136
+ @choice_window.dispose
137
+ @number_window.dispose
138
+ @item_window.dispose
139
+ end
140
+ #--------------------------------------------------------------------------
141
+ # * Free Background Bitmap
142
+ #--------------------------------------------------------------------------
143
+ def dispose_back_bitmap
144
+ @back_bitmap.dispose
145
+ end
146
+ #--------------------------------------------------------------------------
147
+ # * Free Background Sprite
148
+ #--------------------------------------------------------------------------
149
+ def dispose_back_sprite
150
+ @back_sprite.dispose
151
+ end
152
+ #--------------------------------------------------------------------------
153
+ # * Update All Windows
154
+ #--------------------------------------------------------------------------
155
+ def update_all_windows
156
+ @gold_window.update
157
+ @choice_window.update
158
+ @number_window.update
159
+ @item_window.update
160
+ end
161
+ #--------------------------------------------------------------------------
162
+ # * Update Background Sprite
163
+ #--------------------------------------------------------------------------
164
+ def update_back_sprite
165
+ @back_sprite.visible = (@background == 1)
166
+ @back_sprite.y = y
167
+ @back_sprite.opacity = openness
168
+ @back_sprite.update
169
+ end
170
+ #--------------------------------------------------------------------------
171
+ # * Main Processing of Fiber
172
+ #--------------------------------------------------------------------------
173
+ def fiber_main
174
+ $game_message.visible = true
175
+ update_background
176
+ update_placement
177
+ loop do
178
+ process_all_text if $game_message.has_text?
179
+ process_input
180
+ $game_message.clear
181
+ @gold_window.close
182
+ Fiber.yield
183
+ break unless text_continue?
184
+ end
185
+ close_and_wait
186
+ $game_message.visible = false
187
+ @fiber = nil
188
+ end
189
+ #--------------------------------------------------------------------------
190
+ # * Update Window Background
191
+ #--------------------------------------------------------------------------
192
+ def update_background
193
+ @background = $game_message.background
194
+ self.opacity = @background == 0 ? 255 : 0
195
+ end
196
+ #--------------------------------------------------------------------------
197
+ # * Update Window Position
198
+ #--------------------------------------------------------------------------
199
+ def update_placement
200
+ @position = $game_message.position
201
+ self.y = @position * (Graphics.height - height) / 2
202
+ @gold_window.y = y > 0 ? 0 : Graphics.height - @gold_window.height
203
+ end
204
+ #--------------------------------------------------------------------------
205
+ # * Process All Text
206
+ #--------------------------------------------------------------------------
207
+ def process_all_text
208
+ open_and_wait
209
+ text = convert_escape_characters($game_message.all_text)
210
+ pos = {}
211
+ new_page(text, pos)
212
+ process_character(text.slice!(0, 1), text, pos) until text.empty?
213
+ end
214
+ #--------------------------------------------------------------------------
215
+ # * Input Processing
216
+ #--------------------------------------------------------------------------
217
+ def process_input
218
+ if $game_message.choice?
219
+ input_choice
220
+ elsif $game_message.num_input?
221
+ input_number
222
+ elsif $game_message.item_choice?
223
+ input_item
224
+ else
225
+ input_pause unless @pause_skip
226
+ end
227
+ end
228
+ #--------------------------------------------------------------------------
229
+ # * Open Window and Wait for It to Fully Open
230
+ #--------------------------------------------------------------------------
231
+ def open_and_wait
232
+ open
233
+ Fiber.yield until open?
234
+ end
235
+ #--------------------------------------------------------------------------
236
+ # * Close Window and Wait for It to Fully Close
237
+ #--------------------------------------------------------------------------
238
+ def close_and_wait
239
+ close
240
+ Fiber.yield until all_close?
241
+ end
242
+ #--------------------------------------------------------------------------
243
+ # * Determine if All Windows Are Fully Closed
244
+ #--------------------------------------------------------------------------
245
+ def all_close?
246
+ close? && @choice_window.close? &&
247
+ @number_window.close? && @item_window.close?
248
+ end
249
+ #--------------------------------------------------------------------------
250
+ # * Determine Whether to Continue Displaying Text
251
+ #--------------------------------------------------------------------------
252
+ def text_continue?
253
+ $game_message.has_text? && !settings_changed?
254
+ end
255
+ #--------------------------------------------------------------------------
256
+ # * Determine if Background and Position Changed
257
+ #--------------------------------------------------------------------------
258
+ def settings_changed?
259
+ @background != $game_message.background ||
260
+ @position != $game_message.position
261
+ end
262
+ #--------------------------------------------------------------------------
263
+ # * Wait
264
+ #--------------------------------------------------------------------------
265
+ def wait(duration)
266
+ duration.times { Fiber.yield }
267
+ end
268
+ #--------------------------------------------------------------------------
269
+ # * Update Fast Forward Flag
270
+ #--------------------------------------------------------------------------
271
+ def update_show_fast
272
+ @show_fast = true if Input.trigger?(:C)
273
+ end
274
+ #--------------------------------------------------------------------------
275
+ # * Wait After Output of One Character
276
+ #--------------------------------------------------------------------------
277
+ def wait_for_one_character
278
+ update_show_fast
279
+ Fiber.yield unless @show_fast || @line_show_fast
280
+ end
281
+ #--------------------------------------------------------------------------
282
+ # * New Page
283
+ #--------------------------------------------------------------------------
284
+ def new_page(text, pos)
285
+ contents.clear
286
+ draw_face($game_message.face_name, $game_message.face_index, 0, 0)
287
+ reset_font_settings
288
+ pos[:x] = new_line_x
289
+ pos[:y] = 0
290
+ pos[:new_x] = new_line_x
291
+ pos[:height] = calc_line_height(text)
292
+ clear_flags
293
+ end
294
+ #--------------------------------------------------------------------------
295
+ # * Get New Line Position
296
+ #--------------------------------------------------------------------------
297
+ def new_line_x
298
+ $game_message.face_name.empty? ? 0 : 112
299
+ end
300
+ #--------------------------------------------------------------------------
301
+ # * Normal Character Processing
302
+ #--------------------------------------------------------------------------
303
+ def process_normal_character(c, pos)
304
+ super
305
+ wait_for_one_character
306
+ end
307
+ #--------------------------------------------------------------------------
308
+ # * New Line Character Processing
309
+ #--------------------------------------------------------------------------
310
+ def process_new_line(text, pos)
311
+ @line_show_fast = false
312
+ super
313
+ if need_new_page?(text, pos)
314
+ input_pause
315
+ new_page(text, pos)
316
+ end
317
+ end
318
+ #--------------------------------------------------------------------------
319
+ # * Determine if New Page Is Needed
320
+ #--------------------------------------------------------------------------
321
+ def need_new_page?(text, pos)
322
+ pos[:y] + pos[:height] > contents.height && !text.empty?
323
+ end
324
+ #--------------------------------------------------------------------------
325
+ # * New Page Character Processing
326
+ #--------------------------------------------------------------------------
327
+ def process_new_page(text, pos)
328
+ text.slice!(/^\n/)
329
+ input_pause
330
+ new_page(text, pos)
331
+ end
332
+ #--------------------------------------------------------------------------
333
+ # * Icon Drawing Process by Control Characters
334
+ #--------------------------------------------------------------------------
335
+ def process_draw_icon(icon_index, pos)
336
+ super
337
+ wait_for_one_character
338
+ end
339
+ #--------------------------------------------------------------------------
340
+ # * Control Character Processing
341
+ # code : the core of the control character
342
+ # e.g. "C" in the case of the control character \C[1].
343
+ # text : character string buffer in drawing processing (destructive)
344
+ # pos : draw position {:x, :y, :new_x, :height}
345
+ #--------------------------------------------------------------------------
346
+ def process_escape_character(code, text, pos)
347
+ case code.upcase
348
+ when '$'
349
+ @gold_window.open
350
+ when '.'
351
+ wait(15)
352
+ when '|'
353
+ wait(60)
354
+ when '!'
355
+ input_pause
356
+ when '>'
357
+ @line_show_fast = true
358
+ when '<'
359
+ @line_show_fast = false
360
+ when '^'
361
+ @pause_skip = true
362
+ else
363
+ super
364
+ end
365
+ end
366
+ #--------------------------------------------------------------------------
367
+ # * Input Pause Processing
368
+ #--------------------------------------------------------------------------
369
+ def input_pause
370
+ self.pause = true
371
+ wait(10)
372
+ Fiber.yield until Input.trigger?(:B) || Input.trigger?(:C)
373
+ Input.update
374
+ self.pause = false
375
+ end
376
+ #--------------------------------------------------------------------------
377
+ # * Choice Input Processing
378
+ #--------------------------------------------------------------------------
379
+ def input_choice
380
+ @choice_window.start
381
+ Fiber.yield while @choice_window.active
382
+ end
383
+ #--------------------------------------------------------------------------
384
+ # * Number Input Processing
385
+ #--------------------------------------------------------------------------
386
+ def input_number
387
+ @number_window.start
388
+ Fiber.yield while @number_window.active
389
+ end
390
+ #--------------------------------------------------------------------------
391
+ # * Item Selection Processing
392
+ #--------------------------------------------------------------------------
393
+ def input_item
394
+ @item_window.start
395
+ Fiber.yield while @item_window.active
396
+ end
397
+ end