rgss3_default_scripts 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
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,47 @@
1
+ #==============================================================================
2
+ # ** Window_PartyCommand
3
+ #------------------------------------------------------------------------------
4
+ # This window is used to select whether to fight or escape on the battle
5
+ # screen.
6
+ #==============================================================================
7
+
8
+ class Window_PartyCommand < Window_Command
9
+ #--------------------------------------------------------------------------
10
+ # * Object Initialization
11
+ #--------------------------------------------------------------------------
12
+ def initialize
13
+ super(0, 0)
14
+ self.openness = 0
15
+ deactivate
16
+ end
17
+ #--------------------------------------------------------------------------
18
+ # * Get Window Width
19
+ #--------------------------------------------------------------------------
20
+ def window_width
21
+ return 128
22
+ end
23
+ #--------------------------------------------------------------------------
24
+ # * Get Number of Lines to Show
25
+ #--------------------------------------------------------------------------
26
+ def visible_line_number
27
+ return 4
28
+ end
29
+ #--------------------------------------------------------------------------
30
+ # * Create Command List
31
+ #--------------------------------------------------------------------------
32
+ def make_command_list
33
+ add_command(Vocab::fight, :fight)
34
+ add_command(Vocab::escape, :escape, BattleManager.can_escape?)
35
+ end
36
+ #--------------------------------------------------------------------------
37
+ # * Setup
38
+ #--------------------------------------------------------------------------
39
+ def setup
40
+ clear_command_list
41
+ make_command_list
42
+ refresh
43
+ select(0)
44
+ activate
45
+ open
46
+ end
47
+ end
@@ -0,0 +1,69 @@
1
+ #==============================================================================
2
+ # ** Window_SaveFile
3
+ #------------------------------------------------------------------------------
4
+ # This window displays save files on the save and load screens.
5
+ #==============================================================================
6
+
7
+ class Window_SaveFile < Window_Base
8
+ #--------------------------------------------------------------------------
9
+ # * Public Instance Variables
10
+ #--------------------------------------------------------------------------
11
+ attr_reader :selected # selected
12
+ #--------------------------------------------------------------------------
13
+ # * Object Initialization
14
+ # index : index of save files
15
+ #--------------------------------------------------------------------------
16
+ def initialize(height, index)
17
+ super(0, index * height, Graphics.width, height)
18
+ @file_index = index
19
+ refresh
20
+ @selected = false
21
+ end
22
+ #--------------------------------------------------------------------------
23
+ # * Refresh
24
+ #--------------------------------------------------------------------------
25
+ def refresh
26
+ contents.clear
27
+ change_color(normal_color)
28
+ name = Vocab::File + " #{@file_index + 1}"
29
+ draw_text(4, 0, 200, line_height, name)
30
+ @name_width = text_size(name).width
31
+ draw_party_characters(152, 58)
32
+ draw_playtime(0, contents.height - line_height, contents.width - 4, 2)
33
+ end
34
+ #--------------------------------------------------------------------------
35
+ # * Draw Party Characters
36
+ #--------------------------------------------------------------------------
37
+ def draw_party_characters(x, y)
38
+ header = DataManager.load_header(@file_index)
39
+ return unless header
40
+ header[:characters].each_with_index do |data, i|
41
+ draw_character(data[0], data[1], x + i * 48, y)
42
+ end
43
+ end
44
+ #--------------------------------------------------------------------------
45
+ # * Draw Play Time
46
+ #--------------------------------------------------------------------------
47
+ def draw_playtime(x, y, width, align)
48
+ header = DataManager.load_header(@file_index)
49
+ return unless header
50
+ draw_text(x, y, width, line_height, header[:playtime_s], 2)
51
+ end
52
+ #--------------------------------------------------------------------------
53
+ # * Set Selected
54
+ #--------------------------------------------------------------------------
55
+ def selected=(selected)
56
+ @selected = selected
57
+ update_cursor
58
+ end
59
+ #--------------------------------------------------------------------------
60
+ # * Update Cursor
61
+ #--------------------------------------------------------------------------
62
+ def update_cursor
63
+ if @selected
64
+ cursor_rect.set(0, 0, @name_width + 8, line_height)
65
+ else
66
+ cursor_rect.empty
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,90 @@
1
+ #==============================================================================
2
+ # ** Window_ScrollText
3
+ #------------------------------------------------------------------------------
4
+ # This window is for displaying scrolling text. No frame is displayed, but it
5
+ # is handled as a window for convenience.
6
+ #==============================================================================
7
+
8
+ class Window_ScrollText < Window_Base
9
+ #--------------------------------------------------------------------------
10
+ # * Object Initialization
11
+ #--------------------------------------------------------------------------
12
+ def initialize
13
+ super(0, 0, Graphics.width, Graphics.height)
14
+ self.opacity = 0
15
+ self.arrows_visible = false
16
+ hide
17
+ end
18
+ #--------------------------------------------------------------------------
19
+ # * Frame Update
20
+ #--------------------------------------------------------------------------
21
+ def update
22
+ super
23
+ if $game_message.scroll_mode
24
+ update_message if @text
25
+ start_message if !@text && $game_message.has_text?
26
+ end
27
+ end
28
+ #--------------------------------------------------------------------------
29
+ # * Start Message
30
+ #--------------------------------------------------------------------------
31
+ def start_message
32
+ @text = $game_message.all_text
33
+ refresh
34
+ show
35
+ end
36
+ #--------------------------------------------------------------------------
37
+ # * Refresh
38
+ #--------------------------------------------------------------------------
39
+ def refresh
40
+ reset_font_settings
41
+ update_all_text_height
42
+ create_contents
43
+ draw_text_ex(4, 0, @text)
44
+ self.oy = @scroll_pos = -height
45
+ end
46
+ #--------------------------------------------------------------------------
47
+ # * Update Height Needed to Draw All Text
48
+ #--------------------------------------------------------------------------
49
+ def update_all_text_height
50
+ @all_text_height = 1
51
+ convert_escape_characters(@text).each_line do |line|
52
+ @all_text_height += calc_line_height(line, false)
53
+ end
54
+ reset_font_settings
55
+ end
56
+ #--------------------------------------------------------------------------
57
+ # * Calculate Height of Window Contents
58
+ #--------------------------------------------------------------------------
59
+ def contents_height
60
+ @all_text_height ? @all_text_height : super
61
+ end
62
+ #--------------------------------------------------------------------------
63
+ # * Update Message
64
+ #--------------------------------------------------------------------------
65
+ def update_message
66
+ @scroll_pos += scroll_speed
67
+ self.oy = @scroll_pos
68
+ terminate_message if @scroll_pos >= contents.height
69
+ end
70
+ #--------------------------------------------------------------------------
71
+ # * Get Scroll Speed
72
+ #--------------------------------------------------------------------------
73
+ def scroll_speed
74
+ $game_message.scroll_speed * (show_fast? ? 1.0 : 0.5)
75
+ end
76
+ #--------------------------------------------------------------------------
77
+ # * Determine if Fast Forward
78
+ #--------------------------------------------------------------------------
79
+ def show_fast?
80
+ !$game_message.scroll_no_fast && (Input.press?(:A) || Input.press?(:C))
81
+ end
82
+ #--------------------------------------------------------------------------
83
+ # * End Message
84
+ #--------------------------------------------------------------------------
85
+ def terminate_message
86
+ @text = nil
87
+ $game_message.clear
88
+ hide
89
+ end
90
+ end
@@ -0,0 +1,442 @@
1
+ #==============================================================================
2
+ # ** Window_Selectable
3
+ #------------------------------------------------------------------------------
4
+ # This window class contains cursor movement and scroll functions.
5
+ #==============================================================================
6
+
7
+ class Window_Selectable < Window_Base
8
+ #--------------------------------------------------------------------------
9
+ # * Public Instance Variables
10
+ #--------------------------------------------------------------------------
11
+ attr_reader :index # cursor position
12
+ attr_reader :help_window # help window
13
+ attr_accessor :cursor_fix # fix cursor flag
14
+ attr_accessor :cursor_all # select all cursors flag
15
+ #--------------------------------------------------------------------------
16
+ # * Object Initialization
17
+ #-------------------------------------------------------------------------
18
+ def initialize(x, y, width, height)
19
+ super
20
+ @index = -1
21
+ @handler = {}
22
+ @cursor_fix = false
23
+ @cursor_all = false
24
+ update_padding
25
+ deactivate
26
+ end
27
+ #--------------------------------------------------------------------------
28
+ # * Get Digit Count
29
+ #--------------------------------------------------------------------------
30
+ def col_max
31
+ return 1
32
+ end
33
+ #--------------------------------------------------------------------------
34
+ # * Get Spacing for Items Arranged Side by Side
35
+ #--------------------------------------------------------------------------
36
+ def spacing
37
+ return 32
38
+ end
39
+ #--------------------------------------------------------------------------
40
+ # * Get Number of Items
41
+ #--------------------------------------------------------------------------
42
+ def item_max
43
+ return 0
44
+ end
45
+ #--------------------------------------------------------------------------
46
+ # * Get Item Width
47
+ #--------------------------------------------------------------------------
48
+ def item_width
49
+ (width - standard_padding * 2 + spacing) / col_max - spacing
50
+ end
51
+ #--------------------------------------------------------------------------
52
+ # * Get Item Height
53
+ #--------------------------------------------------------------------------
54
+ def item_height
55
+ line_height
56
+ end
57
+ #--------------------------------------------------------------------------
58
+ # * Get Row Count
59
+ #--------------------------------------------------------------------------
60
+ def row_max
61
+ [(item_max + col_max - 1) / col_max, 1].max
62
+ end
63
+ #--------------------------------------------------------------------------
64
+ # * Calculate Height of Window Contents
65
+ #--------------------------------------------------------------------------
66
+ def contents_height
67
+ [super - super % item_height, row_max * item_height].max
68
+ end
69
+ #--------------------------------------------------------------------------
70
+ # * Update Padding
71
+ #--------------------------------------------------------------------------
72
+ def update_padding
73
+ super
74
+ update_padding_bottom
75
+ end
76
+ #--------------------------------------------------------------------------
77
+ # * Update Bottom Padding
78
+ #--------------------------------------------------------------------------
79
+ def update_padding_bottom
80
+ surplus = (height - standard_padding * 2) % item_height
81
+ self.padding_bottom = padding + surplus
82
+ end
83
+ #--------------------------------------------------------------------------
84
+ # * Set Height
85
+ #--------------------------------------------------------------------------
86
+ def height=(height)
87
+ super
88
+ update_padding
89
+ end
90
+ #--------------------------------------------------------------------------
91
+ # * Change Active State
92
+ #--------------------------------------------------------------------------
93
+ def active=(active)
94
+ super
95
+ update_cursor
96
+ call_update_help
97
+ end
98
+ #--------------------------------------------------------------------------
99
+ # * Set Cursor Position
100
+ #--------------------------------------------------------------------------
101
+ def index=(index)
102
+ @index = index
103
+ update_cursor
104
+ call_update_help
105
+ end
106
+ #--------------------------------------------------------------------------
107
+ # * Select Item
108
+ #--------------------------------------------------------------------------
109
+ def select(index)
110
+ self.index = index if index
111
+ end
112
+ #--------------------------------------------------------------------------
113
+ # * Deselect Item
114
+ #--------------------------------------------------------------------------
115
+ def unselect
116
+ self.index = -1
117
+ end
118
+ #--------------------------------------------------------------------------
119
+ # * Get Current Line
120
+ #--------------------------------------------------------------------------
121
+ def row
122
+ index / col_max
123
+ end
124
+ #--------------------------------------------------------------------------
125
+ # * Get Top Row
126
+ #--------------------------------------------------------------------------
127
+ def top_row
128
+ oy / item_height
129
+ end
130
+ #--------------------------------------------------------------------------
131
+ # * Set Top Row
132
+ #--------------------------------------------------------------------------
133
+ def top_row=(row)
134
+ row = 0 if row < 0
135
+ row = row_max - 1 if row > row_max - 1
136
+ self.oy = row * item_height
137
+ end
138
+ #--------------------------------------------------------------------------
139
+ # * Get Number of Rows Displayable on 1 Page
140
+ #--------------------------------------------------------------------------
141
+ def page_row_max
142
+ (height - padding - padding_bottom) / item_height
143
+ end
144
+ #--------------------------------------------------------------------------
145
+ # * Get Number of Items Displayable on 1 Page
146
+ #--------------------------------------------------------------------------
147
+ def page_item_max
148
+ page_row_max * col_max
149
+ end
150
+ #--------------------------------------------------------------------------
151
+ # * Determine Horizontal Selection
152
+ #--------------------------------------------------------------------------
153
+ def horizontal?
154
+ page_row_max == 1
155
+ end
156
+ #--------------------------------------------------------------------------
157
+ # * Get Bottom Row
158
+ #--------------------------------------------------------------------------
159
+ def bottom_row
160
+ top_row + page_row_max - 1
161
+ end
162
+ #--------------------------------------------------------------------------
163
+ # * Set Bottom Row
164
+ #--------------------------------------------------------------------------
165
+ def bottom_row=(row)
166
+ self.top_row = row - (page_row_max - 1)
167
+ end
168
+ #--------------------------------------------------------------------------
169
+ # * Get Rectangle for Drawing Items
170
+ #--------------------------------------------------------------------------
171
+ def item_rect(index)
172
+ rect = Rect.new
173
+ rect.width = item_width
174
+ rect.height = item_height
175
+ rect.x = index % col_max * (item_width + spacing)
176
+ rect.y = index / col_max * item_height
177
+ rect
178
+ end
179
+ #--------------------------------------------------------------------------
180
+ # * Get Rectangle for Drawing Items (for Text)
181
+ #--------------------------------------------------------------------------
182
+ def item_rect_for_text(index)
183
+ rect = item_rect(index)
184
+ rect.x += 4
185
+ rect.width -= 8
186
+ rect
187
+ end
188
+ #--------------------------------------------------------------------------
189
+ # * Set Help Window
190
+ #--------------------------------------------------------------------------
191
+ def help_window=(help_window)
192
+ @help_window = help_window
193
+ call_update_help
194
+ end
195
+ #--------------------------------------------------------------------------
196
+ # * Set Handler Corresponding to Operation
197
+ # method : Method set as a handler (Method object)
198
+ #--------------------------------------------------------------------------
199
+ def set_handler(symbol, method)
200
+ @handler[symbol] = method
201
+ end
202
+ #--------------------------------------------------------------------------
203
+ # * Check for Handler Existence
204
+ #--------------------------------------------------------------------------
205
+ def handle?(symbol)
206
+ @handler.include?(symbol)
207
+ end
208
+ #--------------------------------------------------------------------------
209
+ # * Call Handler
210
+ #--------------------------------------------------------------------------
211
+ def call_handler(symbol)
212
+ @handler[symbol].call if handle?(symbol)
213
+ end
214
+ #--------------------------------------------------------------------------
215
+ # * Determine if Cursor is Moveable
216
+ #--------------------------------------------------------------------------
217
+ def cursor_movable?
218
+ active && open? && !@cursor_fix && !@cursor_all && item_max > 0
219
+ end
220
+ #--------------------------------------------------------------------------
221
+ # * Move Cursor Down
222
+ #--------------------------------------------------------------------------
223
+ def cursor_down(wrap = false)
224
+ if index < item_max - col_max || (wrap && col_max == 1)
225
+ select((index + col_max) % item_max)
226
+ end
227
+ end
228
+ #--------------------------------------------------------------------------
229
+ # * Move Cursor Up
230
+ #--------------------------------------------------------------------------
231
+ def cursor_up(wrap = false)
232
+ if index >= col_max || (wrap && col_max == 1)
233
+ select((index - col_max + item_max) % item_max)
234
+ end
235
+ end
236
+ #--------------------------------------------------------------------------
237
+ # * Move Cursor Right
238
+ #--------------------------------------------------------------------------
239
+ def cursor_right(wrap = false)
240
+ if col_max >= 2 && (index < item_max - 1 || (wrap && horizontal?))
241
+ select((index + 1) % item_max)
242
+ end
243
+ end
244
+ #--------------------------------------------------------------------------
245
+ # * Move Cursor Left
246
+ #--------------------------------------------------------------------------
247
+ def cursor_left(wrap = false)
248
+ if col_max >= 2 && (index > 0 || (wrap && horizontal?))
249
+ select((index - 1 + item_max) % item_max)
250
+ end
251
+ end
252
+ #--------------------------------------------------------------------------
253
+ # * Move Cursor One Page Down
254
+ #--------------------------------------------------------------------------
255
+ def cursor_pagedown
256
+ if top_row + page_row_max < row_max
257
+ self.top_row += page_row_max
258
+ select([@index + page_item_max, item_max - 1].min)
259
+ end
260
+ end
261
+ #--------------------------------------------------------------------------
262
+ # * Move Cursor One Page Up
263
+ #--------------------------------------------------------------------------
264
+ def cursor_pageup
265
+ if top_row > 0
266
+ self.top_row -= page_row_max
267
+ select([@index - page_item_max, 0].max)
268
+ end
269
+ end
270
+ #--------------------------------------------------------------------------
271
+ # * Frame Update
272
+ #--------------------------------------------------------------------------
273
+ def update
274
+ super
275
+ process_cursor_move
276
+ process_handling
277
+ end
278
+ #--------------------------------------------------------------------------
279
+ # * Cursor Movement Processing
280
+ #--------------------------------------------------------------------------
281
+ def process_cursor_move
282
+ return unless cursor_movable?
283
+ last_index = @index
284
+ cursor_down (Input.trigger?(:DOWN)) if Input.repeat?(:DOWN)
285
+ cursor_up (Input.trigger?(:UP)) if Input.repeat?(:UP)
286
+ cursor_right(Input.trigger?(:RIGHT)) if Input.repeat?(:RIGHT)
287
+ cursor_left (Input.trigger?(:LEFT)) if Input.repeat?(:LEFT)
288
+ cursor_pagedown if !handle?(:pagedown) && Input.trigger?(:R)
289
+ cursor_pageup if !handle?(:pageup) && Input.trigger?(:L)
290
+ Sound.play_cursor if @index != last_index
291
+ end
292
+ #--------------------------------------------------------------------------
293
+ # * Handling Processing for OK and Cancel Etc.
294
+ #--------------------------------------------------------------------------
295
+ def process_handling
296
+ return unless open? && active
297
+ return process_ok if ok_enabled? && Input.trigger?(:C)
298
+ return process_cancel if cancel_enabled? && Input.trigger?(:B)
299
+ return process_pagedown if handle?(:pagedown) && Input.trigger?(:R)
300
+ return process_pageup if handle?(:pageup) && Input.trigger?(:L)
301
+ end
302
+ #--------------------------------------------------------------------------
303
+ # * Get Activation State of OK Processing
304
+ #--------------------------------------------------------------------------
305
+ def ok_enabled?
306
+ handle?(:ok)
307
+ end
308
+ #--------------------------------------------------------------------------
309
+ # * Get Activation State of Cancel Processing
310
+ #--------------------------------------------------------------------------
311
+ def cancel_enabled?
312
+ handle?(:cancel)
313
+ end
314
+ #--------------------------------------------------------------------------
315
+ # * Processing When OK Button Is Pressed
316
+ #--------------------------------------------------------------------------
317
+ def process_ok
318
+ if current_item_enabled?
319
+ Sound.play_ok
320
+ Input.update
321
+ deactivate
322
+ call_ok_handler
323
+ else
324
+ Sound.play_buzzer
325
+ end
326
+ end
327
+ #--------------------------------------------------------------------------
328
+ # * Call OK Handler
329
+ #--------------------------------------------------------------------------
330
+ def call_ok_handler
331
+ call_handler(:ok)
332
+ end
333
+ #--------------------------------------------------------------------------
334
+ # * Processing When Cancel Button Is Pressed
335
+ #--------------------------------------------------------------------------
336
+ def process_cancel
337
+ Sound.play_cancel
338
+ Input.update
339
+ deactivate
340
+ call_cancel_handler
341
+ end
342
+ #--------------------------------------------------------------------------
343
+ # * Call Cancel Handler
344
+ #--------------------------------------------------------------------------
345
+ def call_cancel_handler
346
+ call_handler(:cancel)
347
+ end
348
+ #--------------------------------------------------------------------------
349
+ # * Processing When L Button (Page Up) Is Pressed
350
+ #--------------------------------------------------------------------------
351
+ def process_pageup
352
+ Sound.play_cursor
353
+ Input.update
354
+ deactivate
355
+ call_handler(:pageup)
356
+ end
357
+ #--------------------------------------------------------------------------
358
+ # * Processing When R Button (Page Down) Is Pressed
359
+ #--------------------------------------------------------------------------
360
+ def process_pagedown
361
+ Sound.play_cursor
362
+ Input.update
363
+ deactivate
364
+ call_handler(:pagedown)
365
+ end
366
+ #--------------------------------------------------------------------------
367
+ # * Update Cursor
368
+ #--------------------------------------------------------------------------
369
+ def update_cursor
370
+ if @cursor_all
371
+ cursor_rect.set(0, 0, contents.width, row_max * item_height)
372
+ self.top_row = 0
373
+ elsif @index < 0
374
+ cursor_rect.empty
375
+ else
376
+ ensure_cursor_visible
377
+ cursor_rect.set(item_rect(@index))
378
+ end
379
+ end
380
+ #--------------------------------------------------------------------------
381
+ # * Scroll Cursor to Position Within Screen
382
+ #--------------------------------------------------------------------------
383
+ def ensure_cursor_visible
384
+ self.top_row = row if row < top_row
385
+ self.bottom_row = row if row > bottom_row
386
+ end
387
+ #--------------------------------------------------------------------------
388
+ # * Call Help Window Update Method
389
+ #--------------------------------------------------------------------------
390
+ def call_update_help
391
+ update_help if active && @help_window
392
+ end
393
+ #--------------------------------------------------------------------------
394
+ # * Update Help Window
395
+ #--------------------------------------------------------------------------
396
+ def update_help
397
+ @help_window.clear
398
+ end
399
+ #--------------------------------------------------------------------------
400
+ # * Get Activation State of Selection Item
401
+ #--------------------------------------------------------------------------
402
+ def current_item_enabled?
403
+ return true
404
+ end
405
+ #--------------------------------------------------------------------------
406
+ # * Draw All Items
407
+ #--------------------------------------------------------------------------
408
+ def draw_all_items
409
+ item_max.times {|i| draw_item(i) }
410
+ end
411
+ #--------------------------------------------------------------------------
412
+ # * Draw Item
413
+ #--------------------------------------------------------------------------
414
+ def draw_item(index)
415
+ end
416
+ #--------------------------------------------------------------------------
417
+ # * Erase Item
418
+ #--------------------------------------------------------------------------
419
+ def clear_item(index)
420
+ contents.clear_rect(item_rect(index))
421
+ end
422
+ #--------------------------------------------------------------------------
423
+ # * Redraw Item
424
+ #--------------------------------------------------------------------------
425
+ def redraw_item(index)
426
+ clear_item(index) if index >= 0
427
+ draw_item(index) if index >= 0
428
+ end
429
+ #--------------------------------------------------------------------------
430
+ # * Redraw Selection Item
431
+ #--------------------------------------------------------------------------
432
+ def redraw_current_item
433
+ redraw_item(@index)
434
+ end
435
+ #--------------------------------------------------------------------------
436
+ # * Refresh
437
+ #--------------------------------------------------------------------------
438
+ def refresh
439
+ contents.clear
440
+ draw_all_items
441
+ end
442
+ end