Код:
=begin
###############################################################################
# #
# Аддон к Extended Settings #
# #
###############################################################################
Автор: Денис Кузнецов (http://vk.com/id8137201)
Группа ВК: https://vk.com/scriptsrpgmakervxace
Зависимости:
Extended_Settings (Глобальные настройки) by Denis Kyznetsov (версия 1.2)
Установка: разместить ниже зависимостей
=end
$Extended_Settings_Command_List.push({ :command_name => "Настройки скрипта", :command_symbol => :den_kyz_extended_settings_settings_command_symbol,
:method => :den_kyz_extended_settings_settings_method, :enabled => true, :author => "Денис Кузнецов", :version => "1.3", :date => "12.08.15",
:description => "Настройки главного скрипта VX ACE\nВы можете настроить следующие\nпараметры:\nСортировка списка, управление\nсписком, настройка анимации" })
module Extended_Settings_Settings
# Начало настройки скрипта
# Символ кнопки, которая вызывает этот скрипт в настройках
EXTENDED_SETTINGS_SETTINGS_BUTTON = :Z
# Конец настройки скрипта
EXTENDED_SETTINGS_SETTINGS_COMMAND_LIST = [ "Сортировка списка", "Отображение списка", "Прочее" ]
end # module Extended_Settings_Settings
class Extended_Settings_Scene < Scene_Base
def den_kyz_extended_settings_settings_method
SceneManager.call(Extended_Settings_Settings_Scene)
end
alias den_kyz_extended_settings_settings_update update
def update
den_kyz_extended_settings_settings_update
den_kyz_extended_settings_settings_method if Input.trigger?(Extended_Settings_Settings::EXTENDED_SETTINGS_SETTINGS_BUTTON)
end
end # class Extended_Settings_Scene < Scene_Base
class Extended_Settings_Settings_Scene < Scene_Base
include Extended_Settings_Settings
def start
@animation = 0
super
create_command_window
create_info_window
end
def create_command_window
@create_command_window = Extended_Settings_Settings_Command_Window.new
@create_command_window.set_handler(:cancel, method(:return_scene))
@create_command_window.set_handler(EXTENDED_SETTINGS_SETTINGS_COMMAND_LIST[0].to_sym, method(:create_control_command_window))
@create_command_window.set_handler(EXTENDED_SETTINGS_SETTINGS_COMMAND_LIST[1].to_sym, method(:create_control_command_window))
@create_command_window.set_handler(EXTENDED_SETTINGS_SETTINGS_COMMAND_LIST[2].to_sym, method(:setup_enable_settings))
end
def create_info_window
@create_info_window = Extended_Settings_Settings_Info_Window.new(@create_command_window)
end
def create_control_command_window
dispose_control_command_window
@create_control_command_window = Extended_Settings_Settings_Control_Command_Window.new(@create_command_window, @create_info_window)
@create_control_command_window.set_handler(:cancel, method(:deactivate_control_window))
$Extended_Settings_Command_List.each do |index|
@create_control_command_window.set_handler((index[:command_name] + "sort").to_sym, method(:setup_extended_list_sort))
end
$Extended_Settings_Command_List.each do |index|
@create_control_command_window.set_handler((index[:command_name] + "activate").to_sym, method(:setup_extended_list_enabled))
end
@create_control_command_window.x = Graphics.width
@create_command_window.deactivate
@animation = 1
end
def deactivate_control_window
if @create_control_command_window.sort_index != -1
@create_control_command_window.sort_index = -1
return
end
@create_command_window.activate
@animation = 2
while @animation != 0
update
end
dispose_control_command_window
end
def dispose_control_command_window
return if @create_control_command_window.nil?
@create_control_command_window.dispose
@create_control_command_window = nil
end
# метод сортировки списка
def setup_extended_list_sort
if @create_control_command_window.sort_index == -1
@create_control_command_window.sort_index = @create_control_command_window.index
else
list_sort(@create_control_command_window.sort_index, @create_control_command_window.index)
@create_control_command_window.sort_index = -1
end
@create_info_window.force_update
end
# вызывается в методе сортировки списка. перестановка выбранных команд
def list_sort(one, two)
temp = $Extended_Settings_Command_List[one]
$Extended_Settings_Command_List[one] = $Extended_Settings_Command_List[two]
$Extended_Settings_Command_List[two] = temp
end
# вкл / выкл выбранную команду
def setup_extended_list_enabled
index = @create_control_command_window.index
$Extended_Settings_Command_List[index][:enabled] = !$Extended_Settings_Command_List[index][:enabled]
@create_control_command_window.activate
@create_info_window.force_update
end
# вкл / выкл настройки
def setup_enable_settings
$Extended_Settings_Command_List.each do |index|
index[:enabled] = !index[:enabled] if index[:command_symbol] == :den_kyz_extended_settings_settings_command_symbol
end
@create_command_window.activate
@create_info_window.force_update
end
def update
super
play_animation if @animation != 0
end
# 0 - выключена, 1 - смещение влево, 2 - смещение вправо
def play_animation
if @animation == 1
@create_info_window.width -= 15
@create_info_window.animation_update
@create_control_command_window.x -= 15
if @create_control_command_window.x <= Graphics.width / 5 * 3
@create_info_window.width = Graphics.width / 5 * 3
@create_info_window.animation_update
@create_control_command_window.x = Graphics.width / 5 * 3
@animation = 0
end
else
@create_info_window.width += 15
@create_info_window.animation_update
@create_control_command_window.x += 15
if @create_control_command_window.x >= Graphics.width
@create_info_window.width = Graphics.width
@create_info_window.animation_update
@create_control_command_window.x = Graphics.width
@animation = 0
end
end
end
end # class Extended_Settings_Settings_Scene < Scene_Base
class Extended_Settings_Settings_Command_Window < Window_HorzCommand
include Extended_Settings_Settings
def initialize
super(0, 0)
end
def col_max
3
end
def window_width
Graphics.width
end
def make_command_list
EXTENDED_SETTINGS_SETTINGS_COMMAND_LIST.each do |index|
add_command(index, index.to_sym)
end
end
end # class Extended_Settings_Settings_Command_Window < Window_Command
class Extended_Settings_Settings_Info_Window < Window_Base
def initialize(create_command_window)
@create_command_window = create_command_window
super(0, line_height * 2, Graphics.width, Graphics.height - line_height * 2)
end
def animation_update
create_contents
force_update
end
def force_update
@create_command_window_last_index = -1
update
end
def update
return if @create_command_window_last_index == @create_command_window.index
@create_command_window_last_index = @create_command_window.index
contents.clear
static_text = ""
dynamic_text = ""
case @create_command_window.index
when 0
static_text = "\\c[14]Отсортируйте список команд\\c[0]\n\nСписок активных команд:\n"
i = 1
$Extended_Settings_Command_List.each do |index|
dynamic_text += i.to_s + ") " + index[:command_name] + "\n" if index[:enabled]
i += 1 if index[:enabled]
end
when 1
static_text = "\\c[14]Отображение команд списка\\c[0]\n\nСписок команд:\n"
i = 1
$Extended_Settings_Command_List.each do |index|
command_enable = index[:enabled]
dynamic_text += i.to_s + ") " + index[:command_name]
dynamic_text += " (" + on_off_text_color(command_enable, command_enable) + on_off_text(command_enable) + ")" + "\n"
i += 1
end
when 2
static_text = "\\c[14]Отображение настроек в списке\\c[0]\n\nВы всегда можете вызвать их с помощью кнопки,\nнастроенной в скрипте\n\nОтображение: "
command_enable = extended_settings_settings_enabled_in_list
dynamic_text = on_off_text_color(command_enable, true) + on_off_text(true) + " " + on_off_text_color(command_enable, false) + on_off_text(false)
end
draw_text_ex(0, 0, static_text + dynamic_text)
end
def on_off_text_color(enable1, enable2)
return "\\c[3]" if enable1 && enable2
return "\\c[2]" if !enable1 && !enable2
return "\\c[0]"
end
def on_off_text(enable)
return "Вкл.\\c[0]" if enable
return "Выкл.\\c[0]"
end
# информация о текущем скрипте в списке команд
def extended_settings_settings_enabled_in_list
array = $Extended_Settings_Command_List
array.each_index do |i|
return array[i][:enabled] if array[i][:command_symbol] == :den_kyz_extended_settings_settings_command_symbol
end
end
end # class Extended_Settings_Settings_Info_Window < Window_Base
class Extended_Settings_Settings_Control_Command_Window < Window_Command
attr_accessor :sort_index
def initialize(create_command_window, create_info_window)
@create_command_window = create_command_window
@create_info_window = create_info_window
@sort_index = -1 # индекс первой команды для начала сортировки
super(0, line_height * 2)
end
def sort_index=(sort_index)
@sort_index = sort_index
refresh
activate
end
def window_width
Graphics.width / 5 * 2 + 4
end
def window_height
Graphics.height - line_height * 2
end
def draw_item(index)
if index == @sort_index
color = text_color(24)
else
color = normal_color
end
change_color(color, command_enabled?(index))
draw_text(item_rect_for_text(index), command_name(index), alignment)
end
def make_command_list
case @create_command_window.index
when 0
$Extended_Settings_Command_List.each do |index|
add_command(index[:command_name], (index[:command_name] + "sort").to_sym)
end
when 1
$Extended_Settings_Command_List.each do |index|
add_command(index[:command_name], (index[:command_name] + "activate").to_sym)
end
end
end
def cursor_pageup
@create_info_window.oy += line_height
@create_info_window.oy = 0 if @create_info_window.oy > 0
end
def cursor_pagedown
@create_info_window.oy -= line_height
end
end # class Extended_Settings_Settings_Control_Command_Window < Window_Command
module DataManager
class << self
alias den_kyz_extended_settings_settings_make_save_contents make_save_contents
alias den_kyz_extended_settings_settings_extract_save_contents extract_save_contents
end
def self.make_save_contents
contents = den_kyz_extended_settings_settings_make_save_contents
contents[:Extended_Settings_Command_List] = $Extended_Settings_Command_List
contents
end
def self.extract_save_contents(contents)
denis_kyznetsov_dt_mngr_extract_save_contents(contents)
$Extended_Settings_Command_List = contents[:Extended_Settings_Command_List]
end
end # module DataManager
Социальные закладки