90 lines
3.4 KiB
Ruby
90 lines
3.4 KiB
Ruby
# -*- coding: utf-8 -*-
|
|
#==============================================================================
|
|
# ** Window_ChoiceList
|
|
#------------------------------------------------------------------------------
|
|
# This window is used for the event command [Show Choices].
|
|
#==============================================================================
|
|
|
|
class Window_ChoiceList < Window_Command
|
|
#--------------------------------------------------------------------------
|
|
# * Object Initialization
|
|
#--------------------------------------------------------------------------
|
|
def initialize(message_window)
|
|
@message_window = message_window
|
|
super(0, 0)
|
|
self.openness = 0
|
|
deactivate
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# * Start Input Processing
|
|
#--------------------------------------------------------------------------
|
|
def start
|
|
update_placement
|
|
refresh
|
|
select(0)
|
|
open
|
|
activate
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# * Update Window Position
|
|
#--------------------------------------------------------------------------
|
|
def update_placement
|
|
self.width = [max_choice_width + 12, 96].max + padding * 2
|
|
self.width = [width, Graphics.width].min
|
|
self.height = fitting_height($game_message.choices.size)
|
|
self.x = Graphics.width - width
|
|
if @message_window.y >= Graphics.height / 2
|
|
self.y = @message_window.y - height
|
|
else
|
|
self.y = @message_window.y + @message_window.height
|
|
end
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# * Get Maximum Width of Choices
|
|
#--------------------------------------------------------------------------
|
|
def max_choice_width
|
|
$game_message.choices.collect {|s| text_size(s).width }.max
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# * Calculate Height of Window Contents
|
|
#--------------------------------------------------------------------------
|
|
def contents_height
|
|
item_max * item_height
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# * Create Command List
|
|
#--------------------------------------------------------------------------
|
|
def make_command_list
|
|
$game_message.choices.each do |choice|
|
|
add_command(choice, :choice)
|
|
end
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# * Draw Item
|
|
#--------------------------------------------------------------------------
|
|
def draw_item(index)
|
|
rect = item_rect_for_text(index)
|
|
draw_text_ex(rect.x, rect.y, command_name(index))
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# * Get Activation State of Cancel Processing
|
|
#--------------------------------------------------------------------------
|
|
def cancel_enabled?
|
|
$game_message.choice_cancel_type > 0
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# * Call OK Handler
|
|
#--------------------------------------------------------------------------
|
|
def call_ok_handler
|
|
$game_message.choice_proc.call(index)
|
|
close
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# * Call Cancel Handler
|
|
#--------------------------------------------------------------------------
|
|
def call_cancel_handler
|
|
$game_message.choice_proc.call($game_message.choice_cancel_type - 1)
|
|
close
|
|
end
|
|
end
|