=begin ¿©·¯Ç׸ñ ¼±ÅÃÁö Ç¥½Ã by Çã°Æ 4°³ ÀÌ»óÀÇ ¼±ÅÃÁö Ç׸ñÀ» Ç¥½ÃÇÏ°í ½ÍÀº °æ¿ì »ç¿ëÇÕ´Ï´Ù. lb_call(list) ¶Ç´Â, lb_call(list, width, line, column) ÀÇ Çü½ÄÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹> lb_call([1,2,3,4,5,6,7,8,9]) ¶Ç´Â, lb_call([1,2,3,4,5,6,7,8,9], 160) ¶Ç´Â, lb_call([1,2,3,4,5,6,7,8,9], 320, 3, 2) list : [1,2,3] µî°ú °°Àº ¹è¿­ÀÇ ÇüÅ·ΠÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù. listÀÇ ³»¿ëÀÌ Çϳª ÀÌ»óÀÏ °æ¿ì¸¸ ÀÛµ¿ÇÏ¸ç ³»¿ëÀÌ ÇϳªÀÏ °æ¿ìµµ [1] ó·³ ¹è¿­·Î ¸¸µé¾î¾ß ÇÕ´Ï´Ù. width : ¼±ÅÃÁöÀÇ ³ÐÀ̸¦ ¼³Á¤ÇÕ´Ï´Ù. line : ¼¼·Î·Î º¸¿©Áú Ç׸ñÀÇ ¼ö ÀÔ´Ï´Ù. column : °¡·Î·Î º¸¿©Áú Ç׸ñÀÇ ¼ö ÀÔ´Ï´Ù. lb_call() À» »ç¿ëÇÑ ÈÄ °á°ú°ªÀº lb_last·Î È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù. Ãë¼Ò¸¦ ´©¸¥°æ¿ì 0 È®ÀÎÀ» ´©¸¥°æ¿ì´Â ¹è¿­ÀÇ ¼ø¹øÀ» ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. (1ºÎÅÍ ¸î¹ø° Ç׸ñÀÎÁö ¹øÈ£ ¼ýÀÚ¸¦ µ¹·Á¹Þ½À´Ï´Ù.) º¯¼öÁ¶ÀÛÀÇ ½ºÅ©¸³Æ®µî¿¡¼­ lb_last¸¦ Àû¾î¼­ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. =end module ListBox WIDTH = 240 # À©µµ¿ì ³ÐÀÌ ±âº»°ª VISIBLE_MAX_LINE = 7 # ¼¼·Î·Î º¸¿©Áú ±âº» Ç׸ñ ¼ö VISIBLE_MAX_COLUMN = 1 # °¡·Î·Î º¸¿©Áú ±âº» Ç׸ñ ¼ö #################################################### # ÀÌÇÏ ¼öÁ¤ ±ÝÁö # #################################################### class ListBox_TempData attr_accessor :list attr_accessor :width attr_accessor :line attr_accessor :column def initialize @list = [] @width = ListBox::WIDTH @line = ListBox::VISIBLE_MAX_LINE @column = ListBox::VISIBLE_MAX_COLUMN end def size @list.size end def set(data) @list = data[0] @width = data[1] if data[1] @line = data[2] if data[2] @column = data[3] if data[3] end end def self.data $game_temp.listbox_data end def self.size self.data.size end end class Game_Interpreter def lb_call(list, width = nil, line = nil, column = nil) if list.size > 0 $game_temp.listbox_result = 0 lb_data = [list, width, line,column] $game_temp.listbox_data.set(lb_data) SceneManager.call(Scene_ListBox) wait(1) end end def lb_last $game_temp.listbox_result end end class Game_Temp attr_accessor :listbox_result attr_accessor :listbox_data #-------------------------------------------------------------------------- # ¡Ü ÃʱâÈ­ #-------------------------------------------------------------------------- alias listbox_initialize initialize def initialize listbox_initialize init_listbox end #-------------------------------------------------------------------------- # ¡Ü listbox ÃʱâÈ­ #-------------------------------------------------------------------------- def init_listbox @listbox_result = 0 @listbox_data = ListBox::ListBox_TempData.new end end class Window_ListBox < Window_Command #-------------------------------------------------------------------------- # ¡Ü ÃʱâÈ­ #-------------------------------------------------------------------------- def initialize super(0,0) update_placement end #-------------------------------------------------------------------------- # ¡Ü À©µµ¿ì ³ÐÀÌ #-------------------------------------------------------------------------- def window_width return ListBox.data.width end #-------------------------------------------------------------------------- # ¡Ü °¡½Ã Ç׸ñ ¼ö #-------------------------------------------------------------------------- def visible_line_number ln1 = (item_max + (col_max - 1)) / col_max ln2 = ListBox.data.line return [ln1, ln2].min end #-------------------------------------------------------------------------- # ¡Ü °¡½Ã Ç׸ñ ¼ö #-------------------------------------------------------------------------- def col_max return ListBox.data.column end #-------------------------------------------------------------------------- # ¡Ü Ç׸ñ ¼ö #-------------------------------------------------------------------------- def item_max ListBox.size end #-------------------------------------------------------------------------- # ¡Ü À§Ä¡º¸Á¤ #-------------------------------------------------------------------------- def update_placement self.x = (Graphics.width - window_width) / 2 self.y = (Graphics.height - window_height) / 2 end #-------------------------------------------------------------------------- # ¡Ü ½ÇÇà #-------------------------------------------------------------------------- def call_handler(symbol) if handle?(symbol) unless symbol == :cancel $game_temp.listbox_result = symbol.to_s.to_i + 1 end @handler[symbol].call end end #-------------------------------------------------------------------------- # ¡Ü Ç׸ñ ÀÛ¼º #-------------------------------------------------------------------------- def make_command_list for i in 0...ListBox.size add_command(ListBox.data.list[i], i.to_s.to_sym) end end #-------------------------------------------------------------------------- # ¡Ü Ç׸ñ Ç¥½Ã #-------------------------------------------------------------------------- def draw_item(index) change_color(normal_color, command_enabled?(index)) r = item_rect_for_text(index) draw_text_ex(r.x, r.y, command_name(index)) end end class Scene_ListBox < Scene_MenuBase #-------------------------------------------------------------------------- # ¡Ü 󸮽ÃÀÛ #-------------------------------------------------------------------------- def start super create_command_window end #-------------------------------------------------------------------------- # ¡Ü Á¾·á Àüó¸® #-------------------------------------------------------------------------- def pre_terminate super close_command_window end #-------------------------------------------------------------------------- # ¡Ü Ä¿¸Çµå À©µµ¿ì ÀÛ¼º #-------------------------------------------------------------------------- def create_command_window @command_window = Window_ListBox.new for i in 0...ListBox.size @command_window.set_handler(i.to_s.to_sym, method(:return_scene)) end @command_window.set_handler(:cancel, method(:return_scene)) end #-------------------------------------------------------------------------- # ¡Ü Ä¿¸Çµå À©µµ¿ì ´Ý±â #-------------------------------------------------------------------------- def close_command_window @command_window.close update until @command_window.close? end end # presented by Çã°Æ