-
DK
-
-
Вне сайта
-
Светлый дракон
-
-
DKPlugins
- Сообщений: 946
- Спасибо получено: 1129
-
-
|
Скрипт добавляет в игру восстанавливающуюся полосу.
Особенности:
Можно использовать клавишу для уменьшения значения полосы
Возможность использовать разные цвета для полосы (используются цвета текста)
Если не используйте клавишу, то шкала будет автоматически уменьшаться
Возможность проверять состояние шкалы (текущее значение и равенство 0) и разные другие функции (см. шапку скрипта)
Версия: 1.43
Что нового:
Добавлено 3 новых вызова скрипта: управление остановкой полос при сообщении на экране и управление скоростью
Небольшие исправления
Версия: 1.42
Адаптированно для Глобальных настроек
Версия 1.41
Добавлено большое количество вызовов скрипта для управления полосами:
energy_bar_inversed?(index) по индексу полосы вернет true (если полоса inverse), иначе false;
get_energy_bar_parameter(index, type) вернет по индексу и символу параметра текущее значения параметра;
set_energy_bar_value(index, value) - установит по индексу конкретное значение (value) для полосы;
set_all_energy_bar_value(value) - установит всем полосам значение;
increase_energy_bar_value(index, value) увеличить полосе значение;
increase_all_energy_bar_value(value) увеличить всем полосам значение;
decrease_energy_bar_value(index, value) уменьшить значение полосе;
decrease_all_energy_bar_value(value) уменьшить значения всем полосам;
check_energy_bar(index, inverse) если inverse true, то вернет равенство полосы максимальному значению, если inverse false, то вернет равенство 0;
get_energy_bar_value(index) - узнать текущее значение полосы
Добавлена новая функция - когда полоса достигает 0 (для inverse максимального значения) можно сделать следующие вещи: 1) изменить переменную; 2) изменить переключатель; 3) вызвать общее событие. Также после выполнения этих действий можно сделать дополнительно: 1) ничего не делать 2) удалить полосу 3) увеличить значение полосы 4) вызвать общее событие
Добавлена дополнительная настройка скорости полос в самом скрипте, возможность ставить на паузу полосы, когда на экране сообщение
Новый вызов скрипта: energy_bar_exist?(text, max) по индексу и максимальному значению вернет true, если полоса существует, иначе false. Вернет -1, если какая-то другая ошибка.
Исправлены ошибки
Версия 1.32:
Добавлены следующие вызовы скрипта: use_all_energy_bar, dont_use_all_energy_bar, change_use_all_energy_bar(flag),change_all_energy_bar_parameter(type, value). Их действие распространяется на все полосы, а делают они тоже самое, что и use_energy_bar(index), dont_use_energy_bar(index), change_use_energy_bar(index, flag), change_energy_bar_parameter(index, type, value).
Версия 1.3:
Поменял местами inverse и button при создании полосы
Добавил возможность узнать индекс полосы: используйте вызов сприпта get_energy_bar_index(text, max) text - текст полосы, которой хотите узнать индекс, max - максимальное значение, которые вы указывали. Если такой полосы нет, то вернет -1
Версия 1.2:
Исправил ошибку исчезновения полос при смене сцены
Переписал почти весть скрипт заново
Возможность отображать несколько полос одновременно
Обновил методы проверки полос (все в шапке скрипта)
Возможность отображать в минимальном стиле
Убрал возможность менять высоту окна (высчитывается автоматически из количества полос)
Версия 1.1:
Возможность инвертировать полосу (при нажатии клавиши будет увеличиваться значение, а не уменьшаться)
Если вы используете клавишу, то при ее нажатии окно будет отображаться, а при отпускании будет плавно исчезать (используйте кнопку в настройках, если хотите явно указать отображать окно или нет). В автоматическом режиме окно будет всегда отображаться
Изменил внешний вид: чуть уменьшил шрифт и теперь текущее значение отображается на шкале, а не под ней
Добавлена возможность отображать значение в процентах
Версия 1.0:
Первый релиз
Скриншоты
Инструкция: в шапке скрипта
Демо 1.41: Демо 1.41
Скрипт
=begin
###############################################################################
# #
# Восстанавливающаяся полоса (Energy Bar) #
# #
###############################################################################
Автор: Денис Кузнецов (http://vk.com/id8137201)
Версия: 1.43
Релиз от: 03.07.15
Существует дополнение Energy Bar Settings
Инструкция:
используйте вызов скрипта, чтобы создать полосу:
start_new_energy_bar(text, max, use_speed, restore_speed, color, inverse, event, button)
text - текст в ковычках ""
max - максимальное значение
use_speed - скорость убывания шкалы
restore_speed - скорость восстановления шкалы
color - цвет полосы (используется цвет текста)
inverse - true/false - инвентирование полосы (увеличение значения вместо уменьшения)
event - номер обработки события (см. ниже) # Добавлено в версии 1.41 от 10.04.15
button - символ клавиши, которая отвечает за уменьшение шкалы (когда вы ее жмете),
вы можете не использовать клавишу (просто не указывайте ничего)
Если вы не используете клавишу для изменения шкалы, то вызывайте слудующие скрипты:
use_energy_bar(index) - чтобы уменьшать шкалу (index - индекс полосы)
dont_use_energy_bar(index) - чтобы восстанавливать шкалу
change_use_energy_bar(index, flag) - чтобы явно указать, что делать со шкалой
flag = true/false (уменьшать/восстанавливать)
index - индекс полосы (все индексы начинаются с 0)
Чтобы изменить сразу все полосы, используйте:
use_all_energy_bar
dont_use_all_energy_bar
change_use_all_energy_bar(flag)
если не уверены какой index использовать, вызовите скрипт:
get_energy_bar_index(text, max)
этим вы получите index нужной вам полосы (укажите текст в ковычках и максимальное значение)
Изменение шкалы:
change_energy_bar_parameter(index, type, value)
type - символ, что менять
Возможно - :text, :now, :max, :use_speed, :restore_speed, :color, :inverse, :event, :button
change_all_energy_bar_parameter(type, value) чтобы поменять параметр для всех полос
get_energy_bar_parameter(index, type) по индексу и символу (type см. выше) вернет
значение параметра. Вернет -1, если возникла какая-то ошибка
set_energy_bar_value(index, value) установит значение (value) для полосы
set_all_energy_bar_value(value) устновит значение всем полосам
increase_energy_bar_value(index, value) увеличит полосу по индексу на value
increase_all_energy_bar_value(value) увеличит все полосы на value
decrease_energy_bar_value(index, value) уменьшит полосу по индексу на value
decrease_all_energy_bar_value(value) уменьшит все полосы на value
Проверка шкалы:
check_energy_bar(index, inverse) если inverse указать false,
то вернет true, когда полоса = 0, иначе false
если inverse будет true, то вернет true, когда полоса = максимальному значению,
иначе false
energy_bar_inversed?(index) провека полосы на inverse. Вернет true (да), если
полоса inverse, иначе false (нет)
get_energy_bar_value(index) узнать текущее значение полосы по индексу
Уничтожение:
dispose_one_energy_bar(index) - убрать конкретную полосу по индексу
dispose_all_energy_bar - убрать все полосы
Другое:
### Добавлено в версии 1.43 от 03.07.15
Изменить остановку полосы при сообщении:
change_energy_bar_message_stop(flag)
flag = true - да, false - нет
Переключить остановку полос при сообщении:
toggle_energy_bar_message_stop
Изменить скорость полос:
Значение от 2 до 30. -1, чтобы не использовать
change_energy_bar_speed(value)
value - новое значение скорости
=end
module Energy_Bar_Settings
# Координата X окна
$ENERGY_BAR_WINDOW_X = 0
# Координата Y окна
$ENERGY_BAR_WINDOW_Y = 0
# Ширина окна
$ENERGY_BAR_WINDOW_WIDTH = 200
# Останавливать полосы, если на экране сообщение
$ENERGY_BAR_MESSAGE_STOP = true
# Скорость изменения полос (от 2 до 30), -1, чтобы не использовать
$ENERGY_BAR_SPEED = 10
# Отображать проценты вместо текущего значения ? true - да, false - нет
$USE_ENERGY_BAR_WINDOW_PERCENT = true
# Использовать минимальный стиль отображения полосы ? true - да, false - нет
$USE_MINIMAL_ENERGY_BAR_STYLE = true
# Кнопка показа/скрытия окна
# -1, чтобы не использовать
ENERGY_BAR_BUTTON = :Z
# Номера событий (индексы при создании полосы начинаются с 0 (event = 0, 1, 2, 3...)
ENERGY_BAR_EVENTS = [
# тип (переменная), номер, действие, значение, действие после, номер после
[1, 1, 3, 10, 2, 50], # Приравняет третью переменную к 10, после увеличит значение полосы на 50
# тип (переключатель), номер, значение, действие после, номер после
[2, 1, 1, 1], # Вкл. первый переключатель и удалим полосу
# тип (общее событие), номер, действие после, номер после
[3, 2, -1] # Вызовем второе общее событие и больше ничего не сделаем
]
# Инструкция:
# если хотите использовать переменную
# [тип, номер, действие, значение, действие после, номер после]
# если хотите поменять переключатель
# [тип, номер, значение, действие после, номер после]
# если хотите вызвать общее событие
# [тип, номер, действие после, номер после]
# тип: 1 - переменная, 2 - переключатель, 3 - событие
# номер: номер переменной, переключателя, события
# значение: для переменной (1 - увеличить, 2 - уменьшить, 3 - равно)
# для переключателя (1 - вкл, 2 - выкл, 3 - переключить)
# действие после: 1 - удалить полосу, 2 - увеличить значение полосы, 3 - общее событие
# номер после: если увеличиваете значение полосы, то значение увеличения,
# если вызываете общее событие, то номер события
end
$ENERGY_BAR_ARRAY = []
$imported = {} if $imported.nil?
$imported["DenKyz_EnergyBar"] = true
class Scene_Map < Scene_Base
include Energy_Bar_Settings
attr_reader :create_energy_bar_window
attr_accessor :fix_show_energy_bar_window
alias denis_kyznetsov_energy_bar_scn_map_start start
def start
@create_energy_bar_window = nil
# если false, то окно испаряется, если восстанавливается (при клавише)
# если true, то пользователь явно указывает, что хочет видеть окно на экране
@fix_show_energy_bar_window = false
create_energy_bar if !$ENERGY_BAR_ARRAY.empty? # создаем окно, если есть полосы
denis_kyznetsov_energy_bar_scn_map_start
end
def create_energy_bar
@create_energy_bar_window = Energy_Bar_Window.new
@fix_show_energy_bar_window = true
end
def start_new_energy_bar(text, max, use_speed, restore_speed, color, inverse, event, button)
$ENERGY_BAR_ARRAY.push({ :text => text, :max => max, :now => inverse ? 0 : max, :use_speed => use_speed, :restore_speed => restore_speed,
:color => color, :inverse => inverse, :event => (event >= 0 && event < ENERGY_BAR_EVENTS.size) ? ENERGY_BAR_EVENTS[event] : [],
:event_ok => :event == [] ? false : true, :button => button, :auto => button.is_a?(Symbol) ? false : true })
if @create_energy_bar_window == nil
create_energy_bar
else
@create_energy_bar_window.change_window_height
end
end
def energy_bar_array_update
return if $game_message.busy? && $ENERGY_BAR_MESSAGE_STOP
if $ENERGY_BAR_SPEED != -1
return if Graphics.frame_count % $ENERGY_BAR_SPEED == 0
end
$ENERGY_BAR_ARRAY.each do |index|
next if index == nil
if index[:button].is_a?(Symbol) # если у нас символ кнопки
if Input.press?(index[:button]) # если жмем кнопку
energy_bar_animation_update(true)
index[:inverse] == false ? update_decrease_value_energy_bar(index) : update_increase_value_energy_bar(index)
else # Input.press?(index[:button])
energy_bar_animation_update(false)
index[:inverse] == false ? update_increase_value_energy_bar(index) : update_decrease_value_energy_bar(index)
end
else # if index[:button].is_a?(Symbol)
if index[:auto] # если у нас автоматическое использование
index[:inverse] == false ? update_decrease_value_energy_bar(index) : update_increase_value_energy_bar(index)
else
index[:inverse] == false ? update_increase_value_energy_bar(index) : update_decrease_value_energy_bar(index)
end
end # if index[:button].is_a?(Symbol)
check_energy_bar_event_ok(index)
check_energy_bar_event(index)
end # $ENERGY_BAR_ARRAY.each do |index|
end
def check_energy_bar_event_ok(index)
return if index[:event] == []
if index[:inverse]
index[:event_ok] = true if (index[:now].to_f/index[:max] * 100).to_i < 99
else
index[:event_ok] = true if (index[:now].to_f/index[:max] * 100).to_i > 0
end
end
def check_energy_bar_event(index)
return if index[:event] == []
return if !index[:event_ok]
if index[:inverse]
return if index[:now].to_i != index[:max].to_i
else
return if index[:now].to_i != 0
end
event_list = index[:event]
process_value = 0 # номер переменной, с которой начинается обработка после
case event_list[0] # переменная, переключатель, общее событие
when 1 # переменная
case event_list[2]
when 1 # увеличить переменную
$game_variables[event_list[1]] += event_list[3]
when 2 # уменьшить переменную
$game_variables[event_list[1]] -= event_list[3]
when 3 # установить переменную
$game_variables[event_list[1]] = event_list[3]
end
process_value = 4
when 2 # переключатель
case event_list[2]
when 1
$game_switches[event_list[1]] = true
when 2
$game_switches[event_list[1]] = false
when 3
$game_switches[event_list[1]] = !$game_switches[event_list[1]]
end
process_value = 3
when 3 # общее событие
$game_temp.reserve_common_event(event_list[1])
process_value = 2
end
case event_list[process_value] # обработка после
when 1 # удалить полосу
return dispose_one_energy_bar(find_id_from_index(index))
when 2 # увеличить полосу
index[:inverse] == false ? increase_energy_bar_value(index, event_list[process_value + 1]) : decrease_energy_bar_value(index, event_list[process_value + 1])
when 3 # общее событие
$game_temp.reserve_common_event(event_list[process_value + 1])
end
index[:event_ok] = false
end
def energy_bar_animation_update(mode)
return if @fix_show_energy_bar_window
if mode
@create_energy_bar_window.opacity += 15
@create_energy_bar_window.contents_opacity += 15
@create_energy_bar_window.visible = true
else
@create_energy_bar_window.opacity -= 10
@create_energy_bar_window.contents_opacity -= 10
if @create_energy_bar_window.opacity <= 0
@create_energy_bar_window.opacity = 0
@create_energy_bar_window.contents_opacity = 0
@create_energy_bar_window.visible = false
end
end
end
alias denis_kyznetsov_energy_bar_scn_map_update update
def update
denis_kyznetsov_energy_bar_scn_map_update
if @create_energy_bar_window != nil # если у нас есть окно на экране
if !Energy_Bar_Settings::ENERGY_BAR_BUTTON.is_a?(Integer) # если кнопка используется
if Input.trigger?(Energy_Bar_Settings::ENERGY_BAR_BUTTON) # если нажата кнопка
# явно указываем, что хотим видеть окно на экране (не будет испаряться)
@fix_show_energy_bar_window = !@create_energy_bar_window.visible
@create_energy_bar_window.opacity = 255
@create_energy_bar_window.contents_opacity = 255
@create_energy_bar_window.visible = !@create_energy_bar_window.visible
end
end
energy_bar_array_update
end
end
def check_energy_bar_value_range(index)
index = $ENERGY_BAR_ARRAY[index] if index.is_a?(Integer)
index[:now] = 0 if index[:now] < 0
index[:now] = index[:max].to_i if index[:now] > index[:max]
end
def set_energy_bar_value(index, value)
index = $ENERGY_BAR_ARRAY[index] if index.is_a?(Integer)
index[:now] = value
check_energy_bar_value_range(index)
end
def increase_energy_bar_value(index, value)
index = $ENERGY_BAR_ARRAY[index] if index.is_a?(Integer)
index[:now] += value
check_energy_bar_value_range(index)
end
def decrease_energy_bar_value(index, value)
index = $ENERGY_BAR_ARRAY[index] if index.is_a?(Integer)
index[:now] -= value
check_energy_bar_value_range(index)
end
def update_increase_value_energy_bar(index)
increase_energy_bar_value(index, index[:restore_speed])
end
def update_decrease_value_energy_bar(index)
decrease_energy_bar_value(index, index[:use_speed])
end
def find_id_from_index(index)
return if index == nil
for i in 0..$ENERGY_BAR_ARRAY.size - 1
return i if index[:text] == $ENERGY_BAR_ARRAY[i][:text] && index[:max].to_i == $ENERGY_BAR_ARRAY[i][:max].to_i && index[:now].to_i == $ENERGY_BAR_ARRAY[i][:now].to_i
end
return -1
end
def dispose_one_energy_bar(index)
$ENERGY_BAR_ARRAY[index] = nil
$ENERGY_BAR_ARRAY.compact!
return dispose_energy_bar_window if $ENERGY_BAR_ARRAY.empty?
@create_energy_bar_window.change_window_height
end
def dispose_energy_bar_window
$ENERGY_BAR_ARRAY.clear
return if @create_energy_bar_window.nil?
@create_energy_bar_window.dispose
@create_energy_bar_window = nil
end
end
class Energy_Bar_Window < Window_Base
include Energy_Bar_Settings
def initialize
@optimal_window_height = 72
@optimal_window_height = 48 if $USE_MINIMAL_ENERGY_BAR_STYLE
super($ENERGY_BAR_WINDOW_X, $ENERGY_BAR_WINDOW_Y, $ENERGY_BAR_WINDOW_WIDTH, @optimal_window_height)
change_window_height
end
def draw_rect
rect = Rect.new
rect.x = 0
rect.y = 0
rect.width = contents_width
rect.height = 24
rect
end
def change_window_height
# с одной полосой окно занимает 72 при стандартной отрисовке (24 на отступы + 48 на содержимое)
self.height = @optimal_window_height + ($ENERGY_BAR_ARRAY.size - 1) * (@optimal_window_height - 2 * standard_padding)
self.height = Graphics.height if self.height > Graphics.height
create_contents
end
def window_setup
self.x = $ENERGY_BAR_WINDOW_X if self.x != $ENERGY_BAR_WINDOW_X
self.y = $ENERGY_BAR_WINDOW_Y if self.y != $ENERGY_BAR_WINDOW_Y
if self.width != $ENERGY_BAR_WINDOW_WIDTH
self.width = $ENERGY_BAR_WINDOW_WIDTH
create_contents
end
end
def update
contents.clear
window_setup
i = 0
$ENERGY_BAR_ARRAY.each do |index|
next if index.nil?
rect = draw_rect # получаем rect для текста
rect.y += i * (@optimal_window_height - 2 * standard_padding) # i-ой полосы
if $USE_MINIMAL_ENERGY_BAR_STYLE # рисуем текст
draw_text(rect, index[:text])
else
draw_text(rect, index[:text], 1)
end
if $USE_MINIMAL_ENERGY_BAR_STYLE # рисуем полосу
rect.x = contents_width / 2
rect.y += 4
rect.width = index[:now] * (contents_width - rect.x) / index[:max]
else
rect.y += rect.height
rect.width = index[:now] * contents_width / index[:max]
end
rect.height = 16
contents.fill_rect(rect, text_color(index[:color]))
# рисуем значение
rect.y -= 4
rect.width = contents_width
rect.height = 24
text = $USE_ENERGY_BAR_WINDOW_PERCENT ? (((index[:now].to_f / index[:max] * 100).to_i).to_s + "%") : (index[:now].to_i.to_s + "/" + index[:max].to_i.to_s)
if $USE_MINIMAL_ENERGY_BAR_STYLE
rect.x = 0
draw_text(rect, text, 2)
else
draw_text(rect, text, 1)
end
i += 1
end # $ENERGY_BAR_ARRAY.each do |index|
end
end # class Energy_Bar_Window < Window_Base
class Game_Interpreter
def start_new_energy_bar(text, max, use_speed, restore_speed, color, inverse = false, event = -1, button = -1)
return if !SceneManager.scene.is_a?(Scene_Map)
SceneManager.scene.start_new_energy_bar(text.to_s, max, use_speed, restore_speed, color, inverse, event, button)
end
def get_energy_bar_index(text, max)
return -1 if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
index = 0
$ENERGY_BAR_ARRAY.each do |ind|
return index if ind[:text] == text && ind[:max].to_i == max
index += 1
end
return -1
end
def change_energy_bar_parameter(index, type, value)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
return if !type.is_a?(Symbol)
$ENERGY_BAR_ARRAY[index][type] = value
$ENERGY_BAR_ARRAY[index][:auto] = true if type == :button && !value.is_a?(Symbol)
end
def change_all_energy_bar_parameter(type, value)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
for index in 0..$ENERGY_BAR_ARRAY.size - 1
change_energy_bar_parameter(index, type, value)
end
end
def use_energy_bar(index)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
$ENERGY_BAR_ARRAY[index][:auto] = true
end
def use_all_energy_bar
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
for index in 0..$ENERGY_BAR_ARRAY.size - 1
use_energy_bar(index)
end
end
def dont_use_energy_bar(index)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
$ENERGY_BAR_ARRAY[index][:auto] = false
end
def dont_use_all_energy_bar
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
for index in 0..$ENERGY_BAR_ARRAY.size - 1
dont_use_energy_bar(index)
end
end
def change_use_energy_bar(index, flag)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
$ENERGY_BAR_ARRAY[index][:auto] = flag
end
def change_use_all_energy_bar(flag)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
for index in 0..$ENERGY_BAR_ARRAY.size - 1
change_use_energy_bar(index, flag)
end
end
def energy_bar_inversed?(index)
return -1 if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
return $ENERGY_BAR_ARRAY[index][:inverse]
end
def get_energy_bar_parameter(index, type)
return -1 if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
return -1 if !type.is_a?(Symbol)
return $ENERGY_BAR_ARRAY[index][type]
end
def set_energy_bar_value(index, value)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
return SceneManager.scene.set_energy_bar_value(index, 0) if value < 0
SceneManager.scene.set_energy_bar_value(index, value)
end
def set_all_energy_bar_value(value)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
for index in 0..$ENERGY_BAR_ARRAY.size - 1
set_energy_bar_value(index, flag)
end
end
def increase_energy_bar_value(index, value)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
SceneManager.scene.increase_energy_bar_value(index, value)
end
def increase_all_energy_bar_value(value)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
for index in 0..$ENERGY_BAR_ARRAY.size - 1
increase_energy_bar_value(index, value)
end
end
def decrease_energy_bar_value(index, value)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
SceneManager.scene.deacrease_energy_bar_value(index, value)
end
def decrease_all_energy_bar_value(value)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
for index in 0..$ENERGY_BAR_ARRAY.size - 1
decrease_energy_bae_value(index, value)
end
end
def check_energy_bar(index, inverse = false)
return -1 if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
value = $ENERGY_BAR_ARRAY[index][:now].to_i
type = inverse ? $ENERGY_BAR_ARRAY[index][:max].to_i : 0
return value == type
end
def get_energy_bar_value(index)
return -1 if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
return $ENERGY_BAR_ARRAY[index][:now].to_i
end
def energy_bar_exist?(text, max)
return -1 if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
return get_energy_bar_index(text, max) != -1 ? true : false
end
def dispose_one_energy_bar(index)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
SceneManager.scene.dispose_one_energy_bar(index)
end
def dispose_all_energy_bar
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil?
SceneManager.scene.dispose_energy_bar_window
end
def change_energy_bar_message_stop(flag)
$ENERGY_BAR_MESSAGE_STOP = flag
end
def toggle_energy_bar_message_stop
$ENERGY_BAR_MESSAGE_STOP = !$ENERGY_BAR_MESSAGE_STOP
end
def change_energy_bar_speed(value)
return $ENERGY_BAR_SPEED = value if value == -1
$ENERGY_BAR_SPEED = [[2, value].max, 30].min
end
end # class Game_Interpreter
module DataManager
class << self
alias denis_kyznetsov_energy_bar_dt_mngr_make_save_contents make_save_contents
def make_save_contents
contents = denis_kyznetsov_energy_bar_dt_mngr_make_save_contents
contents[:ENERGY_BAR_ARRAY] = $ENERGY_BAR_ARRAY
contents[:ENERGY_BAR_WINDOW_X] = $ENERGY_BAR_WINDOW_X
contents[:ENERGY_BAR_WINDOW_Y] = $ENERGY_BAR_WINDOW_Y
contents[:ENERGY_BAR_WINDOW_WIDTH] = $ENERGY_BAR_WINDOW_WIDTH
contents[:ENERGY_BAR_MESSAGE_STOP] = $ENERGY_BAR_MESSAGE_STOP
contents[:ENERGY_BAR_SPEED] = $ENERGY_BAR_SPEED
contents[:USE_ENERGY_BAR_WINDOW_PERCENT] = $USE_ENERGY_BAR_WINDOW_PERCENT
contents[:USE_MINIMAL_ENERGY_BAR_STYLE] = $USE_MINIMAL_ENERGY_BAR_STYLE
contents
end
alias denis_kyznetsov_energy_bar_dt_mngr_extract_save_contents extract_save_contents
def extract_save_contents(contents)
denis_kyznetsov_energy_bar_dt_mngr_extract_save_contents(contents)
$ENERGY_BAR_ARRAY = contents[:ENERGY_BAR_ARRAY]
$ENERGY_BAR_WINDOW_X = contents[:ENERGY_BAR_WINDOW_X]
$ENERGY_BAR_WINDOW_Y = contents[:ENERGY_BAR_WINDOW_Y]
$ENERGY_BAR_WINDOW_WIDTH = contents[:ENERGY_BAR_WINDOW_WIDTH]
$ENERGY_BAR_MESSAGE_STOP = contents[:ENERGY_BAR_MESSAGE_STOP]
$ENERGY_BAR_SPEED = contents[:ENERGY_BAR_SPEED]
$USE_ENERGY_BAR_WINDOW_PERCENT = contents[:USE_ENERGY_BAR_WINDOW_PERCENT]
$USE_MINIMAL_ENERGY_BAR_STYLE = contents[:USE_MINIMAL_ENERGY_BAR_STYLE]
end
end
end # module DataManager
|