Радиокнопки в списках
de79 radio selectables
Информация:
Автор: DeadElf79
Версия: 1.2
Описание:
Позволяет использовать иконки для выбора вместо прямоугольника.
Установка:
- ставим скрипт как обычно
- в модуле De79Radios ставим следующее:
ICON_DRAW_RADIO = № иконки из иконсета, которая будет использоваться, когда элемент выделен
ICON_THROW_RADIO = № иконки, которая будет использоваться, когда элемент не выделен.
Демо:
Скачать архив ZIP (1,31 МБ)
Скриншот:
Код:# de79 radio selectables
# version: 1.2
module De79Radios
# № иконки из иконсета, которая будет использоваться, когда элемент выделен
ICON_DRAW_RADIO = 3
# № иконки, которая будет использоваться, когда элемент не выделен
ICON_THROW_RADIO = 2
end
class Window_Selectable
alias de79radios_initialize initialize
def initialize(x, y, width, height)
de79radios_initialize(x, y, width, height)
@last_index = @index
end
def radio_offset
26
end
def draw_radio_icon
De79Radios::ICON_DRAW_RADIO
end
def throw_radio_icon
De79Radios::ICON_THROW_RADIO
end
alias de79radios_item_rect item_rect
def item_rect(index)
rect = de79radios_item_rect(index)
rect.x += radio_offset
rect
end
def update_cursor
if @cursor_all
draw_all_radios
self.top_row = 0
elsif @index < 0
throw_all_radios
else
ensure_cursor_visible
throw_radio( item_rect( @last_index ) )
draw_radio( item_rect(@index) )
@last_index = @index
end
end
def draw_all_radios
item_max.times do |index|
draw_radio( item_rect( index ) )
end
end
def throw_all_radios
item_max.times do |index|
throw_radio( item_rect( index ) )
end
end
def clear_all_radios
item_max.times do |index|
clear_radio( item_rect( index ) )
end
end
def draw_radio( rect )
rx = rect.x - radio_offset
ry = rect.y
clear_rect = Rect.new( rx, ry, 24, 24 )
contents.clear_rect( clear_rect )
icon = draw_icon( draw_radio_icon, rx, ry )
end
def throw_radio( rect )
rx = rect.x - radio_offset
ry = rect.y
clear_rect = Rect.new( rx, ry, 24, 24 )
contents.clear_rect( clear_rect )
icon = draw_icon( throw_radio_icon, rx, ry )
end
def clear_radio( rect )
rx = rect.x - radio_offset
ry = rect.y
clear_rect = Rect.new( rx, ry, 24, 24 )
contents.clear_rect( clear_rect )
end
alias de79radios_activate activate
def activate
refresh
de79radios_activate
end
alias de79radios_deactivate deactivate
def deactivate
clear_all_radios
de79radios_deactivate
end
alias de79radios_refresh refresh
def refresh
de79radios_refresh
throw_all_radios
update_cursor
end
end
class Window_HorzCommand
alias de79radios_horz_item_rect item_rect
def item_rect(index)
rect = de79radios_horz_item_rect(index)
rect.x += radio_offset
rect
end
def alignment
return 0
end
end