Taka Engine - Menu Horizontal
Ruby:
#===============================================================================
# Taka Engine - Menu Horizontal
# Por Takkun
#-------------------------------------------------------------------------------
# Este e um script que permite a mudança do layout do menu. Toda a as janelas
# menu foram modificadas para se adentra no estilo Horizontal, gráficos de
# Windows, Fonte e Cores podem ser modificadas no Modulo abaixo. O menu é
# de uso simples basta adiciona-ló acima do Menu do seu projeto. Pode gerar
# incompatibilidade com outros scripts que modifiquem o Menu. O mesmo pode
# ser usado de forma comercial ou não-comercial desde que os devidos créditos
# sejam apresentados a mim o criador do script.
#
# Qualquer dúvida me procure nos fóruns de RPG Maker.
#===============================================================================
($imported ||= {})["Taka Engine - Menu Horizontal"] = true
#==============================================================================#
# ► Módulo de configuração do Script
#==============================================================================#
module TAKA
module MENUHORIZONTAL
#--------------------------------------------------------------------------#
# ◆ Configurações
#--------------------------------------------------------------------------#
# Fonte que irá mostrar o nome dos Heróis.
FONT_NAME = "Verdana"
# Tamanho da fonte que mostrará o nome dos Heróis
FONT_NAME_SIZE = 18
# Fonte que mostrará demais informações.
# Ícone que será mostrada na janela de Gold.
ICON_GOLD = 361
# Ícone que será mostrada na janela de Exibição do nome do Mapa.
ICON_MAPS = 231
Font.default_name = TAKA::MENUHORIZONTAL::FONT_NAME
Font.default_size = TAKA::MENUHORIZONTAL::FONT_NAME_SIZE
end #MENU
end #TAKA
#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
# Esta é a superclasse para todas as janelas no jogo.
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# * Desenho dos atributos básicos 2
# actor : herói
# x : coordenada X
# y : coordenada Y
#--------------------------------------------------------------------------
def draw_actor_simple_status2(actor, x, y)
draw_actor_name(actor, x - 105, y + 82)
draw_actor_level(actor, x - 105, y + 98)
draw_actor_icons(actor, x, y + line_height * 3)
draw_actor_class(actor, x + 5, y)
draw_actor_hp(actor, x + 5, y + line_height * 1)
draw_actor_mp(actor, x + 5, y + line_height * 2)
end
end
#==============================================================================
# ** Window_MenuStatus
#------------------------------------------------------------------------------
# Esta janela exibe os parâmetros dos membros do grupo na tela de menu.
#==============================================================================
class Window_MenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# * Variáveis públicas
#--------------------------------------------------------------------------
attr_reader :pending_index # Manter a posição (para organizar)
#--------------------------------------------------------------------------
# * Inicialização do objeto
# x : coordenada X
# y : coordenada Y
#--------------------------------------------------------------------------
def initialize(x, y)
super(x, y + 48, window_width, window_height)
@pending_index = -1
refresh
end
#--------------------------------------------------------------------------
# * Aquisição da largura da janela
#--------------------------------------------------------------------------
def window_width
Graphics.width
end
#--------------------------------------------------------------------------
# * Aquisição da altura da janela
#--------------------------------------------------------------------------
def window_height
Graphics.height - 96
end
#--------------------------------------------------------------------------
# * Aquisição do número máximo de itens
#--------------------------------------------------------------------------
def col_max
return 2
end
#--------------------------------------------------------------------------
# * Aquisição de altura do item
#--------------------------------------------------------------------------
def item_height
(height - standard_padding * 4) / 2
end
#--------------------------------------------------------------------------
# * Desenho de um item
# index : índice do item
#--------------------------------------------------------------------------
def draw_item(index)
actor = $game_party.members[index]
enabled = $game_party.battle_members.include?(actor)
rect = item_rect(index)
draw_item_background(index)
draw_actor_face(actor, rect.x + 1, rect.y + 1, enabled)
draw_actor_simple_status2(actor, rect.x + 108, rect.y + line_height / 2)
end
#--------------------------------------------------------------------------
# * Desenhar fundo do item
# index : índice do item
#--------------------------------------------------------------------------
def draw_item_background(index)
if index == @pending_index
contents.fill_rect(item_rect(index), pending_color)
end
end
#--------------------------------------------------------------------------
# * Definição de resultado ao pressionar o botão de confirmação
#--------------------------------------------------------------------------
def process_ok
super
$game_party.menu_actor = $game_party.members[index]
end
#--------------------------------------------------------------------------
# * Retorno à seleção anterior
#--------------------------------------------------------------------------
def select_last
select($game_party.menu_actor.index || 0)
end
#--------------------------------------------------------------------------
# * Definição de última posição (para organizar)
#--------------------------------------------------------------------------
def pending_index=(index)
last_pending_index = @pending_index
@pending_index = index
redraw_item(@pending_index)
redraw_item(last_pending_index)
end
end
#==============================================================================
# ** Window_MenuHorzCommand
#------------------------------------------------------------------------------
# Esta janela exibe os comandos do menu na horizontal.
#==============================================================================
class Window_MenuHorzCommand < Window_HorzCommand
#--------------------------------------------------------------------------
# * Inicialização da posição do comando de seleção (método da classe)
#--------------------------------------------------------------------------
def self.init_command_position
@@last_command_symbol = nil
end
#--------------------------------------------------------------------------
# * Inicialização do objeto
#--------------------------------------------------------------------------
def initialize
super(0, 0)
end
#--------------------------------------------------------------------------
# * Aquisição da largura da janela
#--------------------------------------------------------------------------
def window_width
Graphics.width
end
#--------------------------------------------------------------------------
# * Aquisição do número de colunas
#--------------------------------------------------------------------------
def col_max
return 5
end
#--------------------------------------------------------------------------
# * Aquisição do espaçamento entre os itens
#--------------------------------------------------------------------------
def spacing
return -1
end
#--------------------------------------------------------------------------
# * Criação da lista de comandos
#--------------------------------------------------------------------------
def make_command_list
add_main_commands
add_formation_command
add_original_commands
add_save_command
add_game_end_command
end
#--------------------------------------------------------------------------
# * Adição dos comandos principais
#--------------------------------------------------------------------------
def add_main_commands
add_command(Vocab::item, :item, main_commands_enabled)
add_command(Vocab::skill, :skill, main_commands_enabled)
add_command(Vocab::equip, :equip, main_commands_enabled)
add_command(Vocab::status, :status, main_commands_enabled)
end
#--------------------------------------------------------------------------
# * Adição do comando de formação
#--------------------------------------------------------------------------
def add_formation_command
add_command(Vocab::formation, :formation, formation_enabled)
end
#--------------------------------------------------------------------------
# * Adição de comandos próprios
#--------------------------------------------------------------------------
def add_original_commands
end
#--------------------------------------------------------------------------
# * Adição do comando de salvar
#--------------------------------------------------------------------------
def add_save_command
add_command(Vocab::save, :save, save_enabled)
end
#--------------------------------------------------------------------------
# * Adição do comando de fim do jogo
#--------------------------------------------------------------------------
def add_game_end_command
add_command(Vocab::game_end, :game_end)
end
#--------------------------------------------------------------------------
# * Definição de habilitação dos comandos principais
#--------------------------------------------------------------------------
def main_commands_enabled
$game_party.exists
end
#--------------------------------------------------------------------------
# * Definição de habilitação do comando de formação
#--------------------------------------------------------------------------
def formation_enabled
$game_party.members.size >= 2 && !$game_system.formation_disabled
end
#--------------------------------------------------------------------------
# * Definição de habilitação do comando de salvar
#--------------------------------------------------------------------------
def save_enabled
!$game_system.save_disabled
end
#--------------------------------------------------------------------------
# * Definição de resultado ao pressionar o botão de confirmação
#--------------------------------------------------------------------------
def process_ok
@@last_command_symbol = current_symbol
super
end
#--------------------------------------------------------------------------
# * Retorno à seleção anterior
#--------------------------------------------------------------------------
def select_last
select_symbol(@@last_command_symbol)
end
end
#==============================================================================
# ► Window_Gold
#==============================================================================
class Window_Gold2 < Window_Base
#--------------------------------------------------------------------------
# * Inicialização do objeto
#--------------------------------------------------------------------------
def initialize
super(0, 0, window_width, fitting_height(1))
refresh
end
#--------------------------------------------------------------------------
# ◆ Aquisição da largura da janela
#--------------------------------------------------------------------------
def window_width
Graphics.width
end
#--------------------------------------------------------------------------
# * Aquisição do valor em dinheiro
#--------------------------------------------------------------------------
def value
$game_party.gold
end
#--------------------------------------------------------------------------
# * Aquisição da unidade monetária
#--------------------------------------------------------------------------
def currency_unit
Vocab::currency_unit
end
#--------------------------------------------------------------------------
# * Abertura da janela
#--------------------------------------------------------------------------
def open
refresh
super
end
#--------------------------------------------------------------------------
# ◆ Renovação
#--------------------------------------------------------------------------
def refresh
contents.clear
icon = draw_icon(TAKA::MENUHORIZONTAL::ICON_GOLD, 400, 0)
icon = draw_icon(TAKA::MENUHORIZONTAL::ICON_MAPS, 0, 0)
self.contents.font.name = TAKA::MENUHORIZONTAL::FONT_NAME
self.contents.font.size = TAKA::MENUHORIZONTAL::FONT_NAME_SIZE
draw_currency_value(value, currency_unit, 4, 0, contents.width - 8)
self.change_color(normal_color)
draw_text(x + 35, y, width, line_height, $game_map.display_name)
end
end
#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
# Esta classe executa o processamento da tela de menu.
#==============================================================================
class Scene_Menu < Scene_MenuBase
#--------------------------------------------------------------------------
# * Criação da janela de comando
#--------------------------------------------------------------------------
def create_command_window
@command_window = Window_MenuHorzCommand.new
@command_window.set_handler(:item, method(:command_item))
@command_window.set_handler(:skill, method(:command_personal))
@command_window.set_handler(:equip, method(:command_personal))
@command_window.set_handler(:status, method(:command_personal))
@command_window.set_handler(:formation, method(:command_formation))
@command_window.set_handler(:save, method(:command_save))
@command_window.set_handler(:game_end, method(:command_game_end))
@command_window.set_handler(:cancel, method(:return_scene))
end
#--------------------------------------------------------------------------
# * Criação da janela de atributos
#--------------------------------------------------------------------------
def create_status_window
@status_window = Window_MenuStatus.new(0, 0)
end
#--------------------------------------------------------------------------
# * Criação da janela de dinheiro
#--------------------------------------------------------------------------
def create_gold_window
@gold2_window = Window_Gold2.new
@gold2_window.x = 0
@gold2_window.y = Graphics.height - @gold2_window.height
end
end