Advertisement
Raizen

Akea Animated Battle Window

Apr 1st, 2015
491
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 60.82 KB | None | 0 0
  1. #=======================================================
  2. #        Akea Animated Battle Hud
  3. # Autor: Raizen
  4. # Comunidade: http://www.centrorpg.com/
  5. # Compatibilidade: RMVXAce
  6. #
  7. #=======================================================
  8. # =========================Não modificar==============================
  9. $imported ||= Hash.new
  10. $imported[:akea_bw_animated] = true
  11. module Akea_Battle_Window
  12. Party_Pos = []
  13. Party_Pos2 = []
  14. Help_Pos = []
  15. Help_Pos2 = []
  16. # =========================Não modificar==============================
  17. # Mostrar icone dos itens/skills?
  18. Show_Icon = true
  19.  
  20. # Mostrar nome dos itens/skills?
  21. Show_Name = true
  22.  
  23. # Mostrar custo/quantidade dos skills/itens?
  24. Show_Cost = true
  25.  
  26. # Posição da janela de Lutar/Fugir
  27. Fight_Pos = [200, 150]
  28.  
  29. # Distancia entre as 2 janelas
  30. Fight_Pos_Dist = [0, 50]
  31.  
  32. # Posição das imagens de comando da party Party_Pos[id] = [x, y]
  33. Party_Pos[0] = [250, 110]
  34. Party_Pos[1] = [310, 145]
  35. Party_Pos[2] = [250, 180]
  36. Party_Pos[3] = [310, 215]
  37.  
  38. # Posição das imagens de skills da party Party_Pos[id] = [x, y]
  39. Party_Pos2[0] = [100, 110]
  40. Party_Pos2[1] = [160, 145]
  41. Party_Pos2[2] = [100, 180]
  42. Party_Pos2[3] = [160, 215]
  43.  
  44. # Velocidade do movimento das janelas = [x, y]
  45. Move_Speed = [3, 4]
  46.  
  47. # Imagem de fundo(Lutar)
  48. Fight_Pic = "Fight_Back"
  49. # Imagem de fundo(Fugir)
  50. Run_Pic = "Run_Back"
  51. # Imagem de fundo dos comandos
  52. Back_Base_Command_Pic = "Skill_Back"
  53. # Imagem de fundo dos skills
  54. Back_Base_Skills_Pic = "Skill_Back"
  55.  
  56.  
  57. # Tamanho da janela de skills(para efeitos de correção)
  58. Skill_Window_Size = [160, 50]
  59.  
  60. # Tamanho da janela de comandos(para efeitos de correção)
  61. Command_Window_Size = [150, 50]
  62. # Alinhamento do texto (0 = esquerda, 1 = centro, 2 = direita)
  63. Text_Align = 0
  64.  
  65. # Para efeitos de correção da posição do custo/quantidade do item
  66. Cost_Align = 70
  67. # Posição da janela de help de acordo com a party
  68. Help_Pos[0] = [0, 220]
  69. Help_Pos[1] = [0, 220]
  70. Help_Pos[2] = [0, 50]
  71. Help_Pos[3] = [0, 50]
  72. # Posição da imagem de help de acordo com a party
  73. Help_Pos2[0] = [0, 170]
  74. Help_Pos2[1] = [0, 170]
  75. Help_Pos2[2] = [0, 0]
  76. Help_Pos2[3] = [0, 0]
  77.  
  78. # Imagem de fundo da janela de Help
  79. Help_Image = "Help_Back"
  80. # Opacidade da janela de Help
  81. Help_Opacity = 0
  82.  
  83. #  Imagens da janela de status, qualquer parte que não queira que seja
  84. # por imagens, basta colocar como '' o nome da imagem
  85.  
  86. # Imagem de fundo dos status (1 para cada personagem)
  87. Status_Window_Base = 'Fundo'
  88.  
  89. # Imagem de frente dos status (1 para cada personagem)
  90. Status_Window_Over = 'Borda'
  91.  
  92. # Barras de status
  93. Status_HP = 'HP_BAR'
  94. Status_MP = 'MP_BAR'
  95. Status_TP = 'TP_BAR'
  96.  
  97. # Num = Valor atual(HP, MP ou TP)
  98. # Max = Valor máximo(HP, MP ou TP)
  99. # Hash = a imagem da barra que separa o máximo do atual
  100. HP_Num = 'Numbers_Hud'
  101. HP_Max = ''
  102. HP_Hash = ''
  103. MP_Num = 'Numbers_Hud'
  104. MP_Max = ''
  105. MP_Hash = ''
  106. TP_Num = 'Numbers_Hud'
  107. TP_Max = ''
  108. TP_Hash = ''
  109.  
  110. # Espaço entre os números do status
  111. Number_Spacing = 8
  112.  
  113.  
  114. # Recorte da face, caso não use uma face desse modo basta
  115. # Face_Rect = false
  116. # Face_Rect pode ser configurado por
  117. # [x, y, largura, altura]
  118. Face_Rect = [0, 27, 96, 27]
  119.  
  120. # Taxa de atualização do Estado do Personagem
  121. State_Update = 60
  122.  
  123. # Aqui é configurado todas as posições de imagens da Hud por
  124. # Personagem da party!
  125. Status_Actor_Pos = []
  126.  
  127.  
  128. # Posição de todas as imagens sempre seguindo o padrão
  129. # [posição em X, posição em Y]
  130. Status_Actor_Pos[0] = {
  131. :Windows_Back => [26, 296],
  132. :State_Pos => [142, 297],
  133. :Hp_Bar => [180, 308],
  134. :Mp_Bar => [256, 308],
  135. :Tp_Bar => [332, 308],
  136. :Hp_Num => [237, 299],
  137. :Hp_Hash => [80, 296],
  138. :Hp_Max => [70, 310],
  139. :Mp_Num => [314, 299],
  140. :Mp_Hash => [160, 296],
  141. :Mp_Max => [150, 310],
  142. :Tp_Num => [386, 299],
  143. :Tp_Hash => [240, 296],
  144. :Tp_Max => [230, 310],
  145. :Face => [26, 296],
  146. }
  147. Status_Actor_Pos[1] = {
  148. :Windows_Back => [26, 326],
  149. :State_Pos => [142, 327],
  150. :Hp_Bar => [180, 338],
  151. :Mp_Bar => [256, 338],
  152. :Tp_Bar => [332, 338],
  153. :Hp_Num => [237, 326],
  154. :Hp_Hash => [80, 326],
  155. :Hp_Max => [70, 340],
  156. :Mp_Num => [314, 326],
  157. :Mp_Hash => [160, 326],
  158. :Mp_Max => [150, 340],
  159. :Tp_Num => [386, 326],
  160. :Tp_Hash => [240, 326],
  161. :Tp_Max => [230, 340],
  162. :Face => [26, 326],
  163. }
  164. Status_Actor_Pos[2] = {
  165. :Windows_Back => [26, 356],
  166. :State_Pos => [142, 357],
  167. :Hp_Bar => [180, 368],
  168. :Mp_Bar => [256, 368],
  169. :Tp_Bar => [332, 368],
  170. :Hp_Num => [237, 356],
  171. :Hp_Hash => [80, 356],
  172. :Hp_Max => [70, 370],
  173. :Mp_Num => [314, 356],
  174. :Mp_Hash => [160, 356],
  175. :Mp_Max => [314, 370],
  176. :Tp_Num => [386, 356],
  177. :Tp_Hash => [240, 356],
  178. :Tp_Max => [230, 370],
  179. :Face => [26, 356],
  180. }
  181. Status_Actor_Pos[3] = {
  182. :Windows_Back => [26, 386],
  183. :State_Pos => [142, 387],
  184. :Hp_Bar => [180, 398],
  185. :Mp_Bar => [256, 398],
  186. :Tp_Bar => [332, 398],
  187. :Hp_Num => [237, 386],
  188. :Hp_Hash => [80, 386],
  189. :Hp_Max => [70, 400],
  190. :Mp_Num => [314, 386],
  191. :Mp_Hash => [160, 386],
  192. :Mp_Max => [150, 400],
  193. :Tp_Num => [386, 386],
  194. :Tp_Hash => [240, 386],
  195. :Tp_Max => [230, 400],
  196. :Face => [26, 386],
  197. }
  198.  
  199. # Imagens especificas para os comandos do personagem,
  200. # Apenas para demonstrar que o script permite essa configuração,
  201. # Coloque 'Nome' => 'Nome_da_Imagem'
  202. Back_Base_Pic = {
  203. 'Atacar' => 'Skill_Back',
  204.  
  205. }
  206. end
  207.  
  208. #==============================================================================
  209. # ** Scene_Battle
  210. #------------------------------------------------------------------------------
  211. #  Esta classe executa o processamento da tela de batalha.
  212. #==============================================================================
  213.  
  214. class Scene_Battle < Scene_Base
  215. alias :akea_bw_create_all_windows :create_all_windows
  216. alias :akea_bw_update :update
  217. alias :akea_bw_command_item :command_item
  218. alias :akea_bw_turn_start :turn_start
  219. alias :akea_bw_start_party_command_selection :start_party_command_selection
  220. alias :akea_bw_dispose_all_windows :dispose_all_windows
  221. alias :akea_bw_command_skill :command_skill
  222. alias :akea_bw_command_item :command_item
  223.   #--------------------------------------------------------------------------
  224.   # * Criação da janela de atributos
  225.   #--------------------------------------------------------------------------
  226.   def create_status_window
  227.     @status_window = Window_Akea_BattleStatus.new
  228.     @status_window.x = 128
  229.   end
  230.   #--------------------------------------------------------------------------
  231.   # * Criação de todas as janelas
  232.   #--------------------------------------------------------------------------
  233.   def create_all_windows(*args, &block)
  234.     @akea_bw_icon = Array.new
  235.     @akea_bw_old_icons = Array.new($game_party.battle_members.size, -1)
  236.     for n in 0...$game_party.battle_members.size
  237.       @akea_bw_icon[n] = Sprite.new
  238.       @akea_bw_icon[n].bitmap = Cache.system("Iconset")
  239.       @akea_bw_icon[n].opacity = 0
  240.       @akea_bw_icon[n].x = Akea_Battle_Window::Status_Actor_Pos[n][:State_Pos][0]
  241.       @akea_bw_icon[n].y = Akea_Battle_Window::Status_Actor_Pos[n][:State_Pos][1]
  242.       @akea_bw_icon[n].z = 1
  243.     end
  244.     akea_bw_create_all_windows(*args, &block)
  245.   end
  246.   #--------------------------------------------------------------------------
  247.   # * Comando [Skill]
  248.   #--------------------------------------------------------------------------
  249.   def command_skill
  250.     akea_bw_command_skill
  251.     @skill_window.refresh_aux_windows
  252.   end
  253.   #--------------------------------------------------------------------------
  254.   # * Comando [Item]
  255.   #--------------------------------------------------------------------------
  256.   def command_item
  257.     akea_bw_command_item
  258.     @item_window.refresh_aux_windows
  259.   end
  260.   #--------------------------------------------------------------------------
  261.   # * Disposição de todas as janelas
  262.   #--------------------------------------------------------------------------
  263.   def dispose_all_windows
  264.     @akea_bw_icon.each{|icon| icon.bitmap.dispose; icon.dispose}
  265.     akea_bw_dispose_all_windows
  266.   end
  267.   #--------------------------------------------------------------------------
  268.   # * Iniciar seleção de grupo
  269.   #--------------------------------------------------------------------------
  270.   def start_party_command_selection
  271.     akea_bw_start_party_command_selection
  272.     @item_window.refresh_aux_windows
  273.   end
  274.   #--------------------------------------------------------------------------
  275.   # * Início do turno
  276.   #--------------------------------------------------------------------------
  277.   def turn_start
  278.     18.times{update}
  279.     akea_bw_turn_start
  280.   end
  281.   #--------------------------------------------------------------------------
  282.   # * Comando [Item]
  283.   #--------------------------------------------------------------------------
  284.   def command_item
  285.     @item_window.actor = BattleManager.actor
  286.     akea_bw_command_item
  287.   end
  288.   #--------------------------------------------------------------------------
  289.   # * Atualização da tela
  290.   #--------------------------------------------------------------------------
  291.   def update
  292.     update_state_icon if Graphics.frame_count % Akea_Battle_Window::State_Update == 0
  293.     update_akea_windows unless BattleManager.in_turn?
  294.     akea_bw_update
  295.   end
  296.   #--------------------------------------------------------------------------
  297.   # * Atualização dos estados dos personagens
  298.   #--------------------------------------------------------------------------
  299.   def update_state_icon
  300.     for n in 0...$game_party.battle_members.size
  301.       update_state_icon_actor(n, $game_party.battle_members[n])
  302.     end    
  303.   end
  304.   #--------------------------------------------------------------------------
  305.   # * Desenho dos ícones de estado, foralecimento e enfraquecimento
  306.   #     actor  : herói
  307.   #     x      : coordenada X
  308.   #     y      : coordenada Y
  309.   #     width  : largura
  310.   #--------------------------------------------------------------------------
  311.   def update_state_icon_actor(n, actor)
  312.     if actor.state_icons.empty? && actor.buff_icons.empty?
  313.       @akea_bw_icon[n].opacity = 0
  314.     else
  315.       icons = (actor.state_icons + actor.buff_icons)
  316.       y = icons.index(@akea_bw_old_icons[n])
  317.       if y
  318.         icons[y + 1] ?  y += 1 : y = 0
  319.       else
  320.         y = 0
  321.       end
  322.       set_icon = icons[y]
  323.       @akea_bw_icon[n].opacity = 255
  324.       @akea_bw_icon[n].src_rect.set(set_icon % 16 * 24, set_icon / 16 * 24, 24, 24)
  325.       @akea_bw_old_icons[n] = set_icon
  326.     end
  327.   end
  328.   #--------------------------------------------------------------------------
  329.   # * Atualização das janelas
  330.   #--------------------------------------------------------------------------
  331.   def update_akea_windows
  332.     if @party_command_window.active
  333.       @party_command_window.move_aux_windows
  334.     else
  335.       @party_command_window.return_aux_windows
  336.     end
  337.     if @actor_command_window.active
  338.       @actor_command_window.move_aux_windows(true)
  339.     elsif @skill_window.active || @item_window.active
  340.       @actor_command_window.move_aux_windows(false)
  341.     else
  342.       @actor_command_window.return_aux_windows
  343.     end
  344.     if @skill_window.active
  345.       @skill_window.update_contents
  346.     else
  347.       @skill_window.return_aux_windows
  348.     end
  349.     if @item_window.active
  350.       @item_window.update_contents
  351.     else
  352.       @item_window.return_aux_windows
  353.     end
  354.   end
  355.   #--------------------------------------------------------------------------
  356.   # * Criação do viewport de informações
  357.   #--------------------------------------------------------------------------
  358.   def create_info_viewport
  359.     @info_viewport = Viewport.new
  360.     @info_viewport.rect.y = 0
  361.     @info_viewport.rect.height = @status_window.height
  362.     @info_viewport.z = 100
  363.     @info_viewport.ox = 128
  364.     @status_window.viewport = @info_viewport
  365.   end
  366.   #--------------------------------------------------------------------------
  367.   # * Movimento da exibição do viewport de informações
  368.   #     ox : nova coordenada x
  369.   #--------------------------------------------------------------------------
  370.   def move_info_viewport(ox)
  371.   end
  372. end
  373.  
  374. #==============================================================================
  375. # ** Window_ActorCommand
  376. #------------------------------------------------------------------------------
  377. #  Esta janela é usada para selecionar os comandos do herói na tela de batalha.
  378. #==============================================================================
  379.  
  380. class Window_ActorCommand < Window_Command
  381. alias :akea_bw_animated_initialize :initialize
  382. alias :akea_bw_setup :setup
  383. alias :akea_bw_dispose :dispose
  384.   #--------------------------------------------------------------------------
  385.   # * Inicialização do objeto
  386.   #--------------------------------------------------------------------------
  387.   def initialize
  388.     akea_bw_animated_initialize
  389.     self.opacity = 0
  390.     self.contents_opacity = 0
  391.     self.y -= Graphics.height
  392.     create_aux_windows
  393.   end
  394.   #--------------------------------------------------------------------------
  395.   # * Atualização do cursor
  396.   #--------------------------------------------------------------------------
  397.   def update_cursor
  398.     cursor_rect.empty
  399.   end
  400.   #--------------------------------------------------------------------------
  401.   # * Atualização do cursor
  402.   #--------------------------------------------------------------------------
  403.   def update_cursor
  404.     cursor_rect.empty
  405.   end
  406.   #--------------------------------------------------------------------------
  407.   # * Criação das janelas auxiliares
  408.   #--------------------------------------------------------------------------
  409.   def create_aux_windows
  410.     @actor_command_windows = Array.new($data_system.skill_types.size)
  411.     for n in 0...($data_system.skill_types.size + 3)
  412.       @actor_command_windows[n] = Window_Command_Akea.new(0, 0, Akea_Battle_Window::Command_Window_Size[0], Akea_Battle_Window::Command_Window_Size[1])
  413.       @actor_command_windows[n].opacity = 0
  414.       @actor_command_windows[n].contents_opacity = 0
  415.       @actor_command_windows[n].y = n*40
  416.       case n
  417.       when 0
  418.         @actor_command_windows[n].show_contents(Vocab::attack, Akea_Battle_Window::Back_Base_Pic[Vocab::attack] ? Akea_Battle_Window::Back_Base_Pic[Vocab::attack] : Akea_Battle_Window::Back_Base_Command_Pic)
  419.       when 1...$data_system.skill_types.size
  420.         @actor_command_windows[n].show_contents($data_system.skill_types[n], Akea_Battle_Window::Back_Base_Pic[$data_system.skill_types[n]] ? Akea_Battle_Window::Back_Base_Pic[$data_system.skill_types[n]] : Akea_Battle_Window::Back_Base_Command_Pic)
  421.       when $data_system.skill_types.size
  422.         @actor_command_windows[n].show_contents(Vocab::guard, Akea_Battle_Window::Back_Base_Pic[Vocab::guard] ? Akea_Battle_Window::Back_Base_Pic[Vocab::guard] : Akea_Battle_Window::Back_Base_Command_Pic)
  423.       when $data_system.skill_types.size + 1
  424.         @actor_command_windows[n].show_contents(Vocab::item, Akea_Battle_Window::Back_Base_Pic[Vocab::item] ? Akea_Battle_Window::Back_Base_Pic[Vocab::item] : Akea_Battle_Window::Back_Base_Command_Pic)
  425.       end
  426.     end
  427.   end
  428.   def dispose
  429.     @actor_command_windows.each{|obj| obj.dispose}
  430.     akea_bw_dispose
  431.   end
  432.   #--------------------------------------------------------------------------
  433.   # * Criação da lista de comandos
  434.   #--------------------------------------------------------------------------
  435.   def make_command_list
  436.     return unless @actor
  437.     add_attack_command
  438.     add_skill_commands
  439.     add_guard_command
  440.     add_item_command
  441.   end
  442.   #--------------------------------------------------------------------------
  443.   # * Adicionar comados aos personagens
  444.   #--------------------------------------------------------------------------
  445.   def make_actor_commands
  446.     @actor_has_command << 0 if @actor.attack_usable?
  447.     @actor.added_skill_types.sort.each{|stype_id| @actor_has_command << stype_id}
  448.     @actor_has_command << $data_system.skill_types.size if @actor.guard_usable?
  449.     @actor_has_command << $data_system.skill_types.size + 1
  450.   end
  451.   #--------------------------------------------------------------------------
  452.   # * Animação de retorno das janelas
  453.   #--------------------------------------------------------------------------
  454.   def return_aux_windows
  455.     @actor_command_windows.each{|pic| pic.contents_opacity -= 20}
  456.   end
  457.   #--------------------------------------------------------------------------
  458.   # * Movimentação das janelas
  459.   #--------------------------------------------------------------------------
  460.   def move_aux_windows(opac)
  461.     for n in 1...(self.index)
  462.       take_opacity(@actor_has_command[self.index - 1 - n])
  463.       move_aux(@actor_has_command[self.index - 1 - n], (n + 1)*(Akea_Battle_Window::Move_Speed[0] * -10) + @actor_pos_x,  (n + 1)*Akea_Battle_Window::Move_Speed[1] * 10 + @actor_pos_y)
  464.     end
  465.     for n in (self.index + 2)...item_max
  466.       take_opacity(@actor_has_command[n])
  467.       move_aux(@actor_has_command[n], (n - self.index)*(Akea_Battle_Window::Move_Speed[0] * -10) + @actor_pos_x,  (n - self.index)*Akea_Battle_Window::Move_Speed[1] * -10 + @actor_pos_y)
  468.     end
  469.     if self.index > 0
  470.       if opac
  471.         side_opacity(@actor_has_command[self.index - 1])
  472.         move_aux(@actor_has_command[self.index - 1],  Akea_Battle_Window::Move_Speed[0] * -10 + @actor_pos_x,  Akea_Battle_Window::Move_Speed[1] * 10 + @actor_pos_y)
  473.       else
  474.         take_opacity(@actor_has_command[self.index - 1])
  475.         move_aux(@actor_has_command[self.index - 1],  @actor_pos_x, @actor_pos_y)
  476.       end
  477.     end
  478.     if self.index + 1 < item_max
  479.       if opac
  480.         side_opacity(@actor_has_command[self.index + 1])
  481.         move_aux(@actor_has_command[self.index + 1],  Akea_Battle_Window::Move_Speed[0] * -10 + @actor_pos_x,  Akea_Battle_Window::Move_Speed[1] * -10 + @actor_pos_y)
  482.       else
  483.         take_opacity(@actor_has_command[self.index + 1])
  484.         move_aux(@actor_has_command[self.index + 1], @actor_pos_x, @actor_pos_y)
  485.       end
  486.     end
  487.     move_aux(@actor_has_command[self.index], @actor_pos_x, @actor_pos_y)
  488.     center_opacity(@actor_has_command[self.index])
  489.   end
  490.   #--------------------------------------------------------------------------
  491.   # * Comando de opacidade lateral
  492.   #--------------------------------------------------------------------------
  493.   def side_opacity(i)
  494.     if @actor_command_windows[i].contents_opacity < 140
  495.       @actor_command_windows[i].contents_opacity += 15
  496.     elsif @actor_command_windows[i].contents_opacity  > 160
  497.       @actor_command_windows[i].contents_opacity -= 15
  498.     end
  499.   end
  500.   #--------------------------------------------------------------------------
  501.   # * Comando de opacidade central
  502.   #--------------------------------------------------------------------------
  503.   def center_opacity(i)
  504.     @actor_command_windows[i].contents_opacity += 15
  505.   end
  506.   #--------------------------------------------------------------------------
  507.   # * Comando de tirar opacidade(com fade)
  508.   #--------------------------------------------------------------------------
  509.   def take_opacity(i)
  510.     @actor_command_windows[i].contents_opacity -= 15
  511.   end
  512.   #--------------------------------------------------------------------------
  513.   # * Comando de tirar opacidade(sem fade)
  514.   #--------------------------------------------------------------------------
  515.   def take_all_opacity
  516.     @actor_command_windows.each{|com| com.contents_opacity = 0}
  517.   end
  518.   #--------------------------------------------------------------------------
  519.   # * Método de movimentação das janelas
  520.   #--------------------------------------------------------------------------
  521.   def move_aux(n, pos_x, pos_y)
  522.      @actor_command_windows[n].x += Akea_Battle_Window::Move_Speed[0] if @actor_command_windows[n].x < pos_x
  523.      @actor_command_windows[n].x -= Akea_Battle_Window::Move_Speed[0] if @actor_command_windows[n].x > pos_x
  524.      @actor_command_windows[n].y += Akea_Battle_Window::Move_Speed[1] if @actor_command_windows[n].y < pos_y
  525.      @actor_command_windows[n].y -= Akea_Battle_Window::Move_Speed[1] if @actor_command_windows[n].y > pos_y
  526.    end
  527.   #--------------------------------------------------------------------------
  528.   # * Movimento do cursor para cima
  529.   #--------------------------------------------------------------------------
  530.   def cursor_up(wrap = false)
  531.     super(false)
  532.   end
  533.   #--------------------------------------------------------------------------
  534.   # * Movimento do cursor para baixo
  535.   #--------------------------------------------------------------------------
  536.    def cursor_down(wrap = false)
  537.     super(false)
  538.   end
  539.   #--------------------------------------------------------------------------
  540.   # * Configuração inicial
  541.   #     actor : herói
  542.   #--------------------------------------------------------------------------
  543.   def setup(actor)
  544.     p_index = $game_party.members.index(actor)
  545.     @actor_has_command = []
  546.     @actor_pos_x = Akea_Battle_Window::Party_Pos[p_index][0]
  547.     @actor_pos_y = Akea_Battle_Window::Party_Pos[p_index][1]
  548.     @actor_command_windows.each{|pic| pic.x = @actor_pos_x; pic.y = @actor_pos_y}
  549.     akea_bw_setup(actor)
  550.     select(1)
  551.     make_actor_commands
  552.     @actor_command_windows.each{|item| item.opacity = 0 ; item.contents_opacity = 0}
  553.   end
  554. end
  555. #==============================================================================
  556. # ** Window_Command_Akea
  557. #------------------------------------------------------------------------------
  558. #  Esta janela é a janela que exibe os comandos do personagem
  559. #==============================================================================
  560. class Window_Command_Akea < Window_Base
  561.   #--------------------------------------------------------------------------
  562.   # * Inicialização
  563.   #--------------------------------------------------------------------------
  564.   def initialize(x, y, width, height)
  565.     @self_width = width
  566.     @self_height = height
  567.     super(x, y, width, height)
  568.   end
  569.   #--------------------------------------------------------------------------
  570.   # * Mostrar o conteúdo da janela
  571.   #--------------------------------------------------------------------------
  572.   def show_contents(item, back_pic, skill = false)
  573.     contents.clear
  574.     bitmap = Cache.akea(back_pic)
  575.     rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  576.     contents.blt(0, 0, bitmap, rect, 255)
  577.     if item.is_a?(String)
  578.       draw_text(0, 0, @self_width, line_height, item , Akea_Battle_Window::Text_Align)
  579.       return
  580.     end
  581.     x = 30
  582.     x = 80 if Akea_Battle_Window::Show_Cost
  583.     if Akea_Battle_Window::Show_Icon
  584.       draw_icon(item.icon_index, 0, 0, true)
  585.       draw_text(30, 0, @self_width - x, line_height, item.name , Akea_Battle_Window::Text_Align) if Akea_Battle_Window::Show_Name
  586.     else
  587.       draw_text(0, 0, @self_width, line_height, item.name , Akea_Battle_Window::Text_Align) if Akea_Battle_Window::Show_Name
  588.     end
  589.     rect = Rect.new(@self_width - Akea_Battle_Window::Cost_Align, 0, 30, line_height)
  590.     if skill
  591.       draw_skill_cost(rect, item)
  592.     else
  593.       draw_item_number(rect, item)
  594.     end
  595.   end
  596.   #--------------------------------------------------------------------------
  597.   # * Desenho do custo das habilidades
  598.   #     rect  : retângulo
  599.   #     skill : habilidade
  600.   #--------------------------------------------------------------------------
  601.   def draw_skill_cost(rect, skill)
  602.     if skill.tp_cost > 0
  603.       change_color(tp_cost_color)
  604.       draw_text(rect, skill.tp_cost, 2)
  605.     elsif skill.mp_cost > 0
  606.       change_color(mp_cost_color)
  607.       draw_text(rect, skill.mp_cost, 2)
  608.     end
  609.     change_color(normal_color)
  610.   end
  611.   #--------------------------------------------------------------------------
  612.   # * Desenho do número de itens possuido
  613.   #     rect : retângulo
  614.   #     item : item
  615.   #--------------------------------------------------------------------------
  616.   def draw_item_number(rect, item)
  617.     draw_text(rect, sprintf(":%2d", $game_party.item_number(item)), 2)
  618.   end
  619. end
  620.  
  621.  
  622. #==============================================================================
  623. # ** Window_BattleStatus
  624. #------------------------------------------------------------------------------
  625. #  Esta janela exibe as condições de todos membros do grupo na tela de batalha.
  626. #==============================================================================
  627.  
  628. class Window_Akea_BattleStatus < Window_BattleStatus
  629. alias :akea_bw_initialize :initialize
  630. alias :akea_bw_open :open
  631. alias :akea_bw_close :close
  632. alias :akea_bw_dispose :dispose
  633.   #--------------------------------------------------------------------------
  634.   # * Inicialização do objeto
  635.   #--------------------------------------------------------------------------
  636.   def initialize
  637.     akea_bw_initialize
  638.     self.opacity = 0
  639.     draw_static_windows
  640.   end
  641.   #--------------------------------------------------------------------------
  642.   # * Método de abertura da janela
  643.   #--------------------------------------------------------------------------
  644.   def open
  645.     akea_bw_open
  646.     @back_actor_status.each{|window| window.opacity = 255}
  647.     @front_actor_status.each{|window| window.opacity = 255}
  648.   end
  649.   #--------------------------------------------------------------------------
  650.   # * Método de fechamento da janela
  651.   #--------------------------------------------------------------------------
  652.   def close
  653.     akea_bw_close
  654.     @back_actor_status.each{|window| window.opacity = 0}
  655.     @front_actor_status.each{|window| window.opacity = 0}
  656.   end
  657.   #--------------------------------------------------------------------------
  658.   # * Desenho das imagens auxiliares
  659.   #--------------------------------------------------------------------------
  660.   def draw_static_windows
  661.     @back_actor_status = Array.new
  662.     @front_actor_status = Array.new
  663.     for n in 0...$game_party.battle_members.size
  664.       param = Akea_Battle_Window::Status_Actor_Pos[n]
  665.       draw_actor_back($game_party.battle_members[n], param, n)
  666.       draw_actor_front($game_party.battle_members[n], param, n)
  667.     end
  668.   end
  669.   #--------------------------------------------------------------------------
  670.   # * Desenho das imagens de fundo
  671.   #--------------------------------------------------------------------------
  672.   def draw_actor_back(actor, param, n)
  673.     @back_actor_status[n] = Sprite.new
  674.     @back_actor_status[n].bitmap = Cache.akea(Akea_Battle_Window::Status_Window_Base)
  675.     @back_actor_status[n].x = param[:Windows_Back][0]
  676.     @back_actor_status[n].y = param[:Windows_Back][1]
  677.     @back_actor_status[n].opacity = 0
  678.   end
  679.   #--------------------------------------------------------------------------
  680.   # * Desenho das imagens de frente
  681.   #--------------------------------------------------------------------------
  682.   def draw_actor_front(actor, param, n)
  683.     @front_actor_status[n] = Sprite.new
  684.     @front_actor_status[n].bitmap = Cache.akea(Akea_Battle_Window::Status_Window_Over)
  685.     @front_actor_status[n].x = param[:Windows_Back][0]
  686.     @front_actor_status[n].y = param[:Windows_Back][1]
  687.     @front_actor_status[n].opacity = 0
  688.     @front_actor_status[n].z = 200
  689.   end
  690.   #--------------------------------------------------------------------------
  691.   # * Atualização do cursor
  692.   #--------------------------------------------------------------------------
  693.   def update_cursor
  694.     cursor_rect.empty
  695.   end
  696.   #--------------------------------------------------------------------------
  697.   # * Atualização do espaçamento abaixo
  698.   #--------------------------------------------------------------------------
  699.   def update_padding_bottom
  700.     #surplus = (height - standard_padding * 2) % item_height
  701.     self.padding_bottom = 0
  702.   end
  703.   #--------------------------------------------------------------------------
  704.   # * Aquisição do espaçamento entre os itens
  705.   #--------------------------------------------------------------------------
  706.   def spacing
  707.     return 0
  708.   end
  709.   #--------------------------------------------------------------------------
  710.   # * Espaçamento lateral padrão
  711.   #--------------------------------------------------------------------------
  712.   def standard_padding
  713.     return 0
  714.   end
  715.   #--------------------------------------------------------------------------
  716.   # * Aquisição da largura da janela
  717.   #--------------------------------------------------------------------------
  718.   def window_width
  719.     Graphics.width
  720.   end
  721.   #--------------------------------------------------------------------------
  722.   # * Aquisição da altura da janela
  723.   #--------------------------------------------------------------------------
  724.   def window_height
  725.     Graphics.height + 20
  726.   end
  727.   #--------------------------------------------------------------------------
  728.   # * Aquisição do número máximo de itens
  729.   #--------------------------------------------------------------------------
  730.   def item_max
  731.     $game_party.battle_members.size
  732.   end
  733.   #--------------------------------------------------------------------------
  734.   # * Renovação
  735.   #--------------------------------------------------------------------------
  736.   def refresh
  737.     contents.clear
  738.     draw_all_items
  739.   end
  740.   #--------------------------------------------------------------------------
  741.   # * Desenho do item
  742.   #     index : índice do item
  743.   #--------------------------------------------------------------------------
  744.   def draw_item(index)
  745.     actor = $game_party.battle_members[index]
  746.     draw_basic_area(actor, index)
  747.   end
  748.   #--------------------------------------------------------------------------
  749.   # * Aquisição da largura da área do medidor
  750.   #--------------------------------------------------------------------------
  751.   def gauge_area_width
  752.     return 220
  753.   end
  754.   #--------------------------------------------------------------------------
  755.   # * Desenho da área básica
  756.   #     rect  : retângulo
  757.   #     actor : herói
  758.   #--------------------------------------------------------------------------
  759.   def draw_basic_area(actor, index)
  760.     param = Akea_Battle_Window::Status_Actor_Pos[index]
  761.     draw_actor_akea_hp(actor, param)
  762.     draw_actor_akea_mp(actor, param)
  763.     draw_actor_akea_tp(actor, param)
  764.     draw_actor_akea_hp_num(actor, param)
  765.     draw_actor_akea_mp_num(actor, param)
  766.     draw_actor_akea_tp_num(actor, param)
  767.     draw_akea_face(actor.face_name, actor.face_index, param) if Akea_Battle_Window::Face_Rect
  768.   end
  769.   #--------------------------------------------------------------------------
  770.   # * Método de desenho : HP
  771.   #--------------------------------------------------------------------------
  772.   def draw_actor_akea_hp(actor, param)
  773.     bitmap = Cache.akea(Akea_Battle_Window::Status_HP)
  774.     rect = Rect.new(0, 0, bitmap.width * actor.hp_rate, bitmap.height)
  775.     contents.blt(param[:Hp_Bar][0], param[:Hp_Bar][1], bitmap, rect, 255)
  776.   end
  777.   #--------------------------------------------------------------------------
  778.   # * Método de desenho : MP
  779.   #--------------------------------------------------------------------------
  780.   def draw_actor_akea_mp(actor, param)
  781.     bitmap = Cache.akea(Akea_Battle_Window::Status_MP)
  782.     rect = Rect.new(0, 0, bitmap.width * actor.mp_rate, bitmap.height)
  783.     contents.blt(param[:Mp_Bar][0], param[:Mp_Bar][1], bitmap, rect, 255)
  784.   end
  785.   #--------------------------------------------------------------------------
  786.   # * Método de desenho : TP
  787.   #--------------------------------------------------------------------------
  788.   def draw_actor_akea_tp(actor, param)
  789.     bitmap = Cache.akea(Akea_Battle_Window::Status_TP)
  790.     rect = Rect.new(0, 0, bitmap.width * actor.tp_rate, bitmap.height)
  791.     contents.blt(param[:Tp_Bar][0], param[:Tp_Bar][1], bitmap, rect, 255)
  792.   end
  793.   #--------------------------------------------------------------------------
  794.   # * Método de desenho : HP - Valor
  795.   #--------------------------------------------------------------------------
  796.   def draw_actor_akea_hp_num(actor, param)
  797.     bitmap = Cache.akea(Akea_Battle_Window::HP_Num)
  798.     spacing_num = 0
  799.     hp = actor.hp
  800.     if hp == 0
  801.       rect = Rect.new(0, 0, bitmap.width/10, bitmap.height)
  802.       contents.blt(param[:Hp_Num][0], param[:Hp_Num][1], bitmap, rect, 255)
  803.     end
  804.     until hp == 0
  805.       rest = hp % 10
  806.       hp = hp/10
  807.       rect = Rect.new((bitmap.width*rest)/10, 0, bitmap.width/10, bitmap.height)
  808.       contents.blt(param[:Hp_Num][0] - spacing_num, param[:Hp_Num][1], bitmap, rect, 255)
  809.       spacing_num += Akea_Battle_Window::Number_Spacing
  810.     end
  811.     bitmap = Cache.akea(Akea_Battle_Window::HP_Hash)
  812.     rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  813.     contents.blt(param[:Hp_Hash][0], param[:Hp_Hash][1], bitmap, rect, 255)
  814.     return if Akea_Battle_Window::HP_Max == ''
  815.     bitmap = Cache.akea(Akea_Battle_Window::HP_Max)
  816.     hp = actor.mhp
  817.     spacing_num = 0
  818.     until hp == 0
  819.       rest = hp % 10
  820.       hp = hp/10
  821.       rect = Rect.new((bitmap.width*rest)/10, 0, bitmap.width/10, bitmap.height)
  822.       contents.blt(param[:Hp_Max][0] - spacing_num, param[:Hp_Max][1], bitmap, rect, 255)
  823.       spacing_num += Akea_Battle_Window::Number_Spacing
  824.     end
  825.   end
  826.   #--------------------------------------------------------------------------
  827.   # * Método de desenho : MP - Valor
  828.   #--------------------------------------------------------------------------
  829.   def draw_actor_akea_mp_num(actor, param)
  830.     bitmap = Cache.akea(Akea_Battle_Window::MP_Num)
  831.     spacing_num = 0
  832.     mp = actor.mp
  833.     if mp == 0
  834.       rect = Rect.new(0, 0, bitmap.width/10, bitmap.height)
  835.       contents.blt(param[:Mp_Num][0], param[:Mp_Num][1], bitmap, rect, 255)
  836.     end
  837.     until mp == 0
  838.       rest = mp % 10
  839.       mp = mp/10
  840.       rect = Rect.new((bitmap.width*rest)/10, 0, bitmap.width/10, bitmap.height)
  841.       contents.blt(param[:Mp_Num][0] - spacing_num, param[:Mp_Num][1], bitmap, rect, 255)
  842.       spacing_num += Akea_Battle_Window::Number_Spacing
  843.     end
  844.     bitmap = Cache.akea(Akea_Battle_Window::MP_Hash)
  845.     rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  846.     contents.blt(param[:Mp_Hash][0], param[:Mp_Hash][1], bitmap, rect, 255)
  847.     return if Akea_Battle_Window::MP_Max == ''
  848.     bitmap = Cache.akea(Akea_Battle_Window::MP_Max)
  849.     mp = actor.mmp
  850.     spacing_num = 0
  851.     until mp == 0
  852.       rest = mp % 10
  853.       mp = mp/10
  854.       rect = Rect.new((bitmap.width*rest)/10, 0, bitmap.width/10, bitmap.height)
  855.       contents.blt(param[:Mp_Max][0] - spacing_num, param[:Mp_Max][1], bitmap, rect, 255)
  856.       spacing_num += Akea_Battle_Window::Number_Spacing
  857.     end
  858.   end
  859.   #--------------------------------------------------------------------------
  860.   # * Método de desenho : TP - Valor
  861.   #--------------------------------------------------------------------------
  862.   def draw_actor_akea_tp_num(actor, param)
  863.     bitmap = Cache.akea(Akea_Battle_Window::TP_Num)
  864.     spacing_num = 0
  865.     tp = actor.tp.to_i
  866.     if tp == 0
  867.       rect = Rect.new(0, 0, bitmap.width/10, bitmap.height)
  868.       contents.blt(param[:Tp_Num][0], param[:Tp_Num][1], bitmap, rect, 255)
  869.     end
  870.     until tp == 0
  871.       rest = tp % 10
  872.       tp = tp/10
  873.       rect = Rect.new((bitmap.width*rest)/10, 0, bitmap.width/10, bitmap.height)
  874.       contents.blt(param[:Tp_Num][0] - spacing_num, param[:Tp_Num][1], bitmap, rect, 255)
  875.       spacing_num += Akea_Battle_Window::Number_Spacing
  876.     end
  877.     bitmap = Cache.akea(Akea_Battle_Window::TP_Hash)
  878.     rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  879.     contents.blt(param[:Tp_Hash][0], param[:Tp_Hash][1], bitmap, rect, 255)
  880.     return if Akea_Battle_Window::TP_Max == ''
  881.     bitmap = Cache.akea(Akea_Battle_Window::TP_Max)
  882.     tp = 100
  883.     spacing_num = 0
  884.     until tp == 0
  885.       rest = tp % 10
  886.       tp = tp/10
  887.       rect = Rect.new((bitmap.width*rest)/10, 0, bitmap.width/10, bitmap.height)
  888.       contents.blt(param[:Tp_Max][0] - spacing_num, param[:Tp_Max][1], bitmap, rect, 255)
  889.       spacing_num += Akea_Battle_Window::Number_Spacing
  890.     end
  891.   end
  892.   #--------------------------------------------------------------------------
  893.   # * Desenho do gráfico de rosto
  894.   #     face_name  : nome do gráfico de face
  895.   #     face_index : índice do gráfico de face
  896.   #     x          : coordenada X
  897.   #     y          : coordenada Y
  898.   #     enabled    : habilitar flag, translucido quando false
  899.   #--------------------------------------------------------------------------
  900.   def draw_akea_face(face_name, face_index, param)
  901.     bitmap = Cache.face(face_name)
  902.     rect = Rect.new(face_index % 4 * 96 + Akea_Battle_Window::Face_Rect[0], face_index / 4 * 96 + Akea_Battle_Window::Face_Rect[1], Akea_Battle_Window::Face_Rect[2], Akea_Battle_Window::Face_Rect[3])
  903.     contents.blt(param[:Face][0], param[:Face][1], bitmap, rect, 255)
  904.     bitmap.dispose
  905.   end
  906.   #--------------------------------------------------------------------------
  907.   # * Desenho da área do medidor (com TP)
  908.   #     rect  : retângulo
  909.   #     actor : herói
  910.   #--------------------------------------------------------------------------
  911.   def draw_gauge_area_with_tp(rect, actor)
  912.     draw_actor_hp(actor, rect.x + 0, rect.y, 72)
  913.     draw_actor_mp(actor, rect.x + 82, rect.y, 64)
  914.     draw_actor_tp(actor, rect.x + 156, rect.y, 64)
  915.   end
  916.   #--------------------------------------------------------------------------
  917.   # * Desenho da área do medidor (sem TP)
  918.   #     rect  : retângulo
  919.   #     actor : herói
  920.   #--------------------------------------------------------------------------
  921.   def draw_gauge_area_without_tp(rect, actor)
  922.     draw_actor_hp(actor, rect.x + 0, rect.y, 134)
  923.     draw_actor_mp(actor, rect.x + 144,  rect.y, 76)
  924.   end
  925.   def dispose
  926.     @front_actor_status.each{|obj| obj.bitmap.dispose; obj.dispose}
  927.     @back_actor_status.each{|obj| obj.bitmap.dispose; obj.dispose}
  928.     akea_bw_dispose
  929.   end
  930. end
  931. #==============================================================================
  932. # ** Window_BattleSkill
  933. #------------------------------------------------------------------------------
  934. #  Esta janela para seleção de habilidades na tela de batalha.
  935. #==============================================================================
  936.  
  937. class Window_BattleSkill < Window_SkillList
  938. alias :akea_bw_initialize :initialize
  939. alias :akea_bw_dispose :dispose
  940.   #--------------------------------------------------------------------------
  941.   # * Inicialização do objeto
  942.   #     info_viewport : viewport para exibir informações
  943.   #--------------------------------------------------------------------------
  944.   def initialize(help_window, info_viewport)
  945.     akea_bw_initialize(help_window, info_viewport)
  946.     @index_window = 0
  947.     @help_Sprite = Sprite.new
  948.     @help_Sprite.opacity = 0
  949.     @help_Sprite.bitmap = Cache.akea(Akea_Battle_Window::Help_Image)
  950.     create_aux_windows
  951.   end
  952.   def dispose
  953.     @actor_command_windows.each{|obj| obj.dispose}
  954.     @help_Sprite.bitmap.dispose
  955.     @help_Sprite.dispose
  956.     akea_bw_dispose
  957.   end
  958.   def col_max
  959.     return 1
  960.   end
  961.   #--------------------------------------------------------------------------
  962.   # * Definição de herói
  963.   #     actor : herói
  964.   #--------------------------------------------------------------------------
  965.   def actor=(actor)
  966.     @p_index = $game_party.members.index(actor)
  967.     @actor_pos_x = Akea_Battle_Window::Party_Pos2[@p_index][0]
  968.     @actor_pos_y = Akea_Battle_Window::Party_Pos2[@p_index][1]
  969.     @actor_command_windows.each{|pic| pic.x = @actor_pos_x; pic.y = @actor_pos_y}
  970.     return if @actor == actor
  971.     @actor = actor
  972.     refresh
  973.     self.oy = 0
  974.     initialize_aux_windows
  975.   end
  976.   #--------------------------------------------------------------------------
  977.   # * Criação de janelas auxiliares
  978.   #--------------------------------------------------------------------------
  979.   def create_aux_windows
  980.     @actor_command_windows = Array.new(7)
  981.     for n in 0...7
  982.       @actor_command_windows[n] = Window_Command_Akea.new(0, 0, Akea_Battle_Window::Skill_Window_Size[0], Akea_Battle_Window::Skill_Window_Size[1])
  983.       @actor_command_windows[n].opacity = 0
  984.       @actor_command_windows[n].contents_opacity = 250
  985.       @actor_command_windows[n].show_contents(@data[n], Akea_Battle_Window::Back_Base_Skills_Pic, true) if @data[n]
  986.     end
  987.   end
  988.   #--------------------------------------------------------------------------
  989.   # * Inicialização da posição e indice das janelas
  990.   #--------------------------------------------------------------------------
  991.   def initialize_aux_windows
  992.     @index_window = -1
  993.     @actor_command_windows.each{|window| window.x = @actor_pos_x; window.y = @actor_pos_y}
  994.   end
  995.   #--------------------------------------------------------------------------
  996.   # * Atualização do conteúdo
  997.   #--------------------------------------------------------------------------
  998.   def update_contents
  999.     return unless @actor_pos_x
  1000.     for n in 0...7
  1001.       get_rest = (self.index - n) % 7
  1002.       case get_rest
  1003.       when 0
  1004.         x = 0
  1005.         y = 0
  1006.       when 1
  1007.         x = 1
  1008.         y = -1
  1009.       when 2
  1010.         x = 2
  1011.         y = -2
  1012.       when 3
  1013.         x = 3
  1014.         y = -3
  1015.       when 4
  1016.         x = 3
  1017.         y = 3
  1018.       when 5
  1019.         x = 2
  1020.         y = 2
  1021.       when 6
  1022.         x = 1
  1023.         y = 1
  1024.       end
  1025.       if x == 3
  1026.         set_aux(n , x * Akea_Battle_Window::Move_Speed[0] * - 10 + @actor_pos_x, y * Akea_Battle_Window::Move_Speed[1] * 10 + @actor_pos_y)
  1027.       else
  1028.         move_aux(n , x * Akea_Battle_Window::Move_Speed[0] * - 10 + @actor_pos_x, y * Akea_Battle_Window::Move_Speed[1] * 10 + @actor_pos_y)
  1029.       end
  1030.       if @data[self.index + y]
  1031.         if y.abs >= 2 || self.index == 0 && y < 0
  1032.           take_opacity(n)
  1033.         elsif y.abs == 1
  1034.           side_opacity(n)
  1035.         else
  1036.           center_opacity(n)
  1037.         end
  1038.         next if @index_window == self.index
  1039.         @actor_command_windows[n].show_contents(@data[self.index + y], Akea_Battle_Window::Back_Base_Skills_Pic, true)
  1040.       else
  1041.         take_opacity(n)
  1042.       end
  1043.     end
  1044.     @help_Sprite.opacity = @actor_command_windows[self.index % 7].contents_opacity
  1045.     @index_window = self.index
  1046.   end
  1047.   #--------------------------------------------------------------------------
  1048.   # * Método de atualização das janelas
  1049.   #--------------------------------------------------------------------------
  1050.   def refresh_aux_windows
  1051.     for n in 0...7
  1052.       if @data[n]
  1053.         @actor_command_windows[n].show_contents(@data[n], Akea_Battle_Window::Back_Base_Skills_Pic, true)
  1054.       end
  1055.     end
  1056.   end
  1057.   #--------------------------------------------------------------------------
  1058.   # * Opacidade lateral
  1059.   #--------------------------------------------------------------------------
  1060.   def side_opacity(i)
  1061.     if @actor_command_windows[i].contents_opacity < 140
  1062.       @actor_command_windows[i].contents_opacity += 15
  1063.     elsif @actor_command_windows[i].contents_opacity  > 160
  1064.       @actor_command_windows[i].contents_opacity -= 15
  1065.     end
  1066.   end
  1067.   #--------------------------------------------------------------------------
  1068.   # * Método de opacidade central
  1069.   #--------------------------------------------------------------------------
  1070.   def center_opacity(i)
  1071.     @actor_command_windows[i].contents_opacity += 15
  1072.   end
  1073.   #--------------------------------------------------------------------------
  1074.   # * Método de reduzir opacidade(com fade)
  1075.   #--------------------------------------------------------------------------
  1076.   def take_opacity(i)
  1077.     @actor_command_windows[i].contents_opacity -= 15
  1078.   end
  1079.   #--------------------------------------------------------------------------
  1080.   # * Método de reduzir opacidade(sem fade)
  1081.   #--------------------------------------------------------------------------
  1082.   def take_all_opacity
  1083.     @actor_command_windows.each{|com| com.contents_opacity = 0}
  1084.   end
  1085.   #--------------------------------------------------------------------------
  1086.   # * Método de retornar as janelas auxiliares
  1087.   #--------------------------------------------------------------------------
  1088.   def return_aux_windows
  1089.     @actor_command_windows.each{|pic| pic.contents_opacity -= 15}
  1090.     @help_Sprite.opacity -= 15
  1091.   end
  1092.   #--------------------------------------------------------------------------
  1093.   # * Método de movimento das janelas
  1094.   #--------------------------------------------------------------------------
  1095.   def move_aux(n, pos_x, pos_y)
  1096.      @actor_command_windows[n].x += Akea_Battle_Window::Move_Speed[0] if @actor_command_windows[n].x < pos_x
  1097.      @actor_command_windows[n].x -= Akea_Battle_Window::Move_Speed[0] if @actor_command_windows[n].x > pos_x
  1098.      @actor_command_windows[n].y += Akea_Battle_Window::Move_Speed[1] if @actor_command_windows[n].y < pos_y
  1099.      @actor_command_windows[n].y -= Akea_Battle_Window::Move_Speed[1] if @actor_command_windows[n].y > pos_y
  1100.    end
  1101.   #--------------------------------------------------------------------------
  1102.   # * Método que seta a posição das janelas
  1103.   #--------------------------------------------------------------------------
  1104.   def set_aux(n, pos_x, pos_y)
  1105.      @actor_command_windows[n].x = pos_x
  1106.      @actor_command_windows[n].y = pos_y
  1107.   end
  1108.   #--------------------------------------------------------------------------
  1109.   # * Movimento do cursor para baixo
  1110.   #     wrap : cursor retornar a primeira ou ultima posição
  1111.   #--------------------------------------------------------------------------
  1112.   def cursor_down(wrap = false)
  1113.     super(false)
  1114.   end
  1115.   #--------------------------------------------------------------------------
  1116.   # * Movimento do cursor para cima
  1117.   #     wrap : cursor retornar a primeira ou ultima posição
  1118.   #--------------------------------------------------------------------------
  1119.   def cursor_up(wrap = false)
  1120.     super(false)
  1121.   end
  1122.   #--------------------------------------------------------------------------
  1123.   # * Movimento do cursor para baixo
  1124.   #     wrap : cursor retornar a primeira ou ultima posição
  1125.   #--------------------------------------------------------------------------
  1126.   def cursor_left(wrap = false)
  1127.     super(false)
  1128.   end
  1129.   #--------------------------------------------------------------------------
  1130.   # * Movimento do cursor para cima
  1131.   #     wrap : cursor retornar a primeira ou ultima posição
  1132.   #--------------------------------------------------------------------------
  1133.   def cursor_right(wrap = false)
  1134.     super(false)
  1135.   end
  1136.   #--------------------------------------------------------------------------
  1137.   # * Exibição da janela
  1138.   #--------------------------------------------------------------------------
  1139.   def show
  1140.     select_last
  1141.     @help_window.show
  1142.     @help_window.opacity = Akea_Battle_Window::Help_Opacity
  1143.     @help_window.x = Akea_Battle_Window::Help_Pos[@p_index][0]
  1144.     @help_window.y = Akea_Battle_Window::Help_Pos[@p_index][1]
  1145.     @help_Sprite.x = Akea_Battle_Window::Help_Pos2[@p_index][0]
  1146.     @help_Sprite.y = Akea_Battle_Window::Help_Pos2[@p_index][1]
  1147.     super
  1148.   end
  1149.   #--------------------------------------------------------------------------
  1150.   # * Ocultação da janela
  1151.   #--------------------------------------------------------------------------
  1152.   def hide
  1153.     @help_window.hide
  1154.     @help_window.opacity = 255
  1155.     @help_window.x = 0
  1156.     @help_window.y = 0
  1157.     super
  1158.   end
  1159. end
  1160.  
  1161.  
  1162. #==============================================================================
  1163. # ** Window_BattleItem
  1164. #------------------------------------------------------------------------------
  1165. #  Esta janela para seleção de itens na tela de batalha.
  1166. #==============================================================================
  1167.  
  1168. class Window_BattleItem < Window_ItemList
  1169. alias :akea_bw_initialize :initialize
  1170. alias :akea_bw_dispose :dispose
  1171.   #--------------------------------------------------------------------------
  1172.   # * Inicialização do objeto
  1173.   #     info_viewport : viewport para exibir informações
  1174.   #--------------------------------------------------------------------------
  1175.   def initialize(help_window, info_viewport)
  1176.     akea_bw_initialize(help_window, info_viewport)
  1177.     @index_window = 0
  1178.     @help_Sprite = Sprite.new
  1179.     @help_Sprite.opacity = 0
  1180.     @help_Sprite.bitmap = Cache.akea(Akea_Battle_Window::Help_Image)
  1181.     create_aux_windows
  1182.   end
  1183.   def dispose
  1184.     @actor_command_windows.each{|obj| obj.dispose}
  1185.     @help_Sprite.bitmap.dispose
  1186.     @help_Sprite.dispose
  1187.     akea_bw_dispose
  1188.   end
  1189.   #--------------------------------------------------------------------------
  1190.   # * Número de colunas
  1191.   #--------------------------------------------------------------------------
  1192.   def col_max
  1193.     return 1
  1194.   end
  1195.   #--------------------------------------------------------------------------
  1196.   # * Definição de herói
  1197.   #     actor : herói
  1198.   #--------------------------------------------------------------------------
  1199.   def actor=(actor)
  1200.     @p_index = $game_party.members.index(actor)
  1201.     @actor_pos_x = Akea_Battle_Window::Party_Pos2[@p_index][0]
  1202.     @actor_pos_y = Akea_Battle_Window::Party_Pos2[@p_index][1]
  1203.     @actor_command_windows.each{|pic| pic.x = @actor_pos_x; pic.y = @actor_pos_y}
  1204.     return if @actor == actor
  1205.     @actor = actor
  1206.     refresh
  1207.     self.oy = 0
  1208.     initialize_aux_windows
  1209.   end
  1210.   #--------------------------------------------------------------------------
  1211.   # * Método de criação das janelas auxiliares
  1212.   #--------------------------------------------------------------------------
  1213.   def create_aux_windows
  1214.     @actor_command_windows = Array.new(7)
  1215.     for n in 0...7
  1216.       @actor_command_windows[n] = Window_Command_Akea.new(0, 0, Akea_Battle_Window::Skill_Window_Size[0], Akea_Battle_Window::Skill_Window_Size[1])
  1217.       @actor_command_windows[n].opacity = 0
  1218.       @actor_command_windows[n].contents_opacity = 250
  1219.       @actor_command_windows[n].show_contents(@data[n].name, Akea_Battle_Window::Back_Base_Skills_Pic) if @data[n]
  1220.     end
  1221.   end
  1222.   #--------------------------------------------------------------------------
  1223.   # * Método de atualização das janelas
  1224.   #--------------------------------------------------------------------------
  1225.   def refresh_aux_windows
  1226.     for n in 0...7
  1227.       if @data[n]
  1228.         @actor_command_windows[n].show_contents(@data[n], Akea_Battle_Window::Back_Base_Skills_Pic)
  1229.       end
  1230.     end
  1231.   end
  1232.   #--------------------------------------------------------------------------
  1233.   # * Método de inicialização do indice e posições da janela
  1234.   #--------------------------------------------------------------------------
  1235.   def initialize_aux_windows
  1236.     @index_window = -1
  1237.     @actor_command_windows.each{|window| window.x = @actor_pos_x; window.y = @actor_pos_y}
  1238.   end
  1239.   #--------------------------------------------------------------------------
  1240.   # * Método de atualização do conteúdo
  1241.   #--------------------------------------------------------------------------
  1242.   def update_contents
  1243.     return unless @actor_pos_x
  1244.     for n in 0...7
  1245.       get_rest = (self.index - n) % 7
  1246.       case get_rest
  1247.       when 0
  1248.         x = 0
  1249.         y = 0
  1250.       when 1
  1251.         x = 1
  1252.         y = -1
  1253.       when 2
  1254.         x = 2
  1255.         y = -2
  1256.       when 3
  1257.         x = 3
  1258.         y = -3
  1259.       when 4
  1260.         x = 3
  1261.         y = 3
  1262.       when 5
  1263.         x = 2
  1264.         y = 2
  1265.       when 6
  1266.         x = 1
  1267.         y = 1
  1268.       end
  1269.       if x == 3
  1270.         set_aux(n , x * Akea_Battle_Window::Move_Speed[0] * - 10 + @actor_pos_x, y * Akea_Battle_Window::Move_Speed[1] * 10 + @actor_pos_y)
  1271.       else
  1272.         move_aux(n , x * Akea_Battle_Window::Move_Speed[0] * - 10 + @actor_pos_x, y * Akea_Battle_Window::Move_Speed[1] * 10 + @actor_pos_y)
  1273.       end
  1274.       if @data[self.index + y]
  1275.         if y.abs >= 2 || self.index == 0 && y < 0
  1276.           take_opacity(n)
  1277.         elsif y.abs == 1
  1278.           side_opacity(n)
  1279.         else
  1280.           center_opacity(n)
  1281.         end
  1282.         next if @index_window == self.index
  1283.         @actor_command_windows[n].show_contents(@data[self.index + y], Akea_Battle_Window::Back_Base_Skills_Pic)
  1284.       else
  1285.         take_opacity(n)
  1286.       end
  1287.     end
  1288.     @help_Sprite.opacity = @actor_command_windows[self.index % 7].contents_opacity
  1289.     @index_window = self.index
  1290.   end
  1291.   #--------------------------------------------------------------------------
  1292.   # * Opacidade lateral
  1293.   #--------------------------------------------------------------------------
  1294.   def side_opacity(i)
  1295.     if @actor_command_windows[i].contents_opacity < 140
  1296.       @actor_command_windows[i].contents_opacity += 15
  1297.     elsif @actor_command_windows[i].contents_opacity  > 160
  1298.       @actor_command_windows[i].contents_opacity -= 15
  1299.     end
  1300.   end
  1301.   #--------------------------------------------------------------------------
  1302.   # * Método de opacidade central
  1303.   #--------------------------------------------------------------------------
  1304.   def center_opacity(i)
  1305.     @actor_command_windows[i].contents_opacity += 15
  1306.   end
  1307.   #--------------------------------------------------------------------------
  1308.   # * Método de reduzir opacidade(com fade)
  1309.   #--------------------------------------------------------------------------
  1310.   def take_opacity(i)
  1311.     @actor_command_windows[i].contents_opacity -= 15
  1312.   end
  1313.   #--------------------------------------------------------------------------
  1314.   # * Método de reduzir opacidade(sem fade)
  1315.   #--------------------------------------------------------------------------
  1316.   def take_all_opacity
  1317.     @actor_command_windows.each{|com| com.contents_opacity = 0}
  1318.   end
  1319.   #--------------------------------------------------------------------------
  1320.   # * Método de retornar as janelas auxiliares
  1321.   #--------------------------------------------------------------------------
  1322.   def return_aux_windows
  1323.     @actor_command_windows.each{|pic| pic.contents_opacity -= 15}
  1324.     @help_Sprite.opacity -= 15
  1325.   end
  1326.   #--------------------------------------------------------------------------
  1327.   # * Método de movimentação das janelas auxiliares
  1328.   #--------------------------------------------------------------------------
  1329.   def move_aux(n, pos_x, pos_y)
  1330.      @actor_command_windows[n].x += Akea_Battle_Window::Move_Speed[0] if @actor_command_windows[n].x < pos_x
  1331.      @actor_command_windows[n].x -= Akea_Battle_Window::Move_Speed[0] if @actor_command_windows[n].x > pos_x
  1332.      @actor_command_windows[n].y += Akea_Battle_Window::Move_Speed[1] if @actor_command_windows[n].y < pos_y
  1333.      @actor_command_windows[n].y -= Akea_Battle_Window::Move_Speed[1] if @actor_command_windows[n].y > pos_y
  1334.    end
  1335.   #--------------------------------------------------------------------------
  1336.   # * Método para setar a posição das janelas
  1337.   #--------------------------------------------------------------------------
  1338.   def set_aux(n, pos_x, pos_y)
  1339.      @actor_command_windows[n].x = pos_x
  1340.      @actor_command_windows[n].y = pos_y
  1341.   end
  1342.   #--------------------------------------------------------------------------
  1343.   # * Movimento do cursor para baixo
  1344.   #     wrap : cursor retornar a primeira ou ultima posição
  1345.   #--------------------------------------------------------------------------
  1346.   def cursor_down(wrap = false)
  1347.     super(false)
  1348.   end
  1349.   #--------------------------------------------------------------------------
  1350.   # * Movimento do cursor para cima
  1351.   #     wrap : cursor retornar a primeira ou ultima posição
  1352.   #--------------------------------------------------------------------------
  1353.   def cursor_up(wrap = false)
  1354.     super(false)
  1355.   end
  1356.   #--------------------------------------------------------------------------
  1357.   # * Movimento do cursor para baixo
  1358.   #     wrap : cursor retornar a primeira ou ultima posição
  1359.   #--------------------------------------------------------------------------
  1360.   def cursor_left(wrap = false)
  1361.     super(false)
  1362.   end
  1363.   #--------------------------------------------------------------------------
  1364.   # * Movimento do cursor para cima
  1365.   #     wrap : cursor retornar a primeira ou ultima posição
  1366.   #--------------------------------------------------------------------------
  1367.   def cursor_right(wrap = false)
  1368.     super(false)
  1369.   end
  1370.   #--------------------------------------------------------------------------
  1371.   # * Exibição da janela
  1372.   #--------------------------------------------------------------------------
  1373.   def show
  1374.     select_last
  1375.     @help_window.show
  1376.     @help_window.opacity = Akea_Battle_Window::Help_Opacity
  1377.     @help_window.x = Akea_Battle_Window::Help_Pos[@p_index][0]
  1378.     @help_window.y = Akea_Battle_Window::Help_Pos[@p_index][1]
  1379.     @help_Sprite.x = Akea_Battle_Window::Help_Pos2[@p_index][0]
  1380.     @help_Sprite.y = Akea_Battle_Window::Help_Pos2[@p_index][1]
  1381.     super
  1382.   end
  1383.   #--------------------------------------------------------------------------
  1384.   # * Ocultação da janela
  1385.   #--------------------------------------------------------------------------
  1386.   def hide
  1387.     @help_window.hide
  1388.     @help_window.opacity = 255
  1389.     @help_window.x = 0
  1390.     @help_window.y = 0
  1391.     super
  1392.   end
  1393. end
  1394.  
  1395. #==============================================================================
  1396. # ** Window_PartyCommand
  1397. #------------------------------------------------------------------------------
  1398. #  Esta janela é usada para se escolher se deseja lutar ou fugir na
  1399. # tela de batalha.
  1400. #==============================================================================
  1401.  
  1402. class Window_PartyCommand < Window_Command
  1403. alias :akea_bw_initialize :initialize
  1404. alias :akea_bw_dispose :dispose
  1405.   #--------------------------------------------------------------------------
  1406.   # * Inicialização do objeto
  1407.   #--------------------------------------------------------------------------
  1408.   def initialize
  1409.     akea_bw_initialize
  1410.     @aux_sprite = []
  1411.     for n in 0...2
  1412.       @aux_sprite[n] = Sprite.new
  1413.       @aux_sprite[n].opacity = 0
  1414.       @aux_sprite[n].x = Akea_Battle_Window::Fight_Pos[0]
  1415.       @aux_sprite[n].y = Akea_Battle_Window::Fight_Pos[1]
  1416.     end
  1417.     @aux_sprite[0].bitmap = Cache.akea(Akea_Battle_Window::Fight_Pic)
  1418.     @aux_sprite[1].bitmap = Cache.akea(Akea_Battle_Window::Run_Pic)
  1419.     @aux_sprite[0].bitmap.draw_text(0, 0, @aux_sprite[0].bitmap.width, @aux_sprite[0].bitmap.height, Vocab::fight, 1)
  1420.     @aux_sprite[1].bitmap.draw_text(0, 0, @aux_sprite[1].bitmap.width, @aux_sprite[1].bitmap.height, Vocab::escape, 1)
  1421.     self.x = -150
  1422.     self.y = -150
  1423.   end
  1424.   def dispose
  1425.     @aux_sprite.each{|obj| obj.bitmap.dispose; obj.dispose}
  1426.     akea_bw_dispose
  1427.   end
  1428.   #--------------------------------------------------------------------------
  1429.   # * Movimento de janelas auxiliares
  1430.   #--------------------------------------------------------------------------
  1431.   def move_aux_windows
  1432.     if self.index == 0
  1433.       @aux_sprite[0].opacity += 15
  1434.       side_opacity(1)
  1435.       move_aux(0, Akea_Battle_Window::Fight_Pos[0], Akea_Battle_Window::Fight_Pos[1])
  1436.       move_aux(1, Akea_Battle_Window::Fight_Pos[0] + Akea_Battle_Window::Fight_Pos_Dist[0], Akea_Battle_Window::Fight_Pos[1] + Akea_Battle_Window::Fight_Pos_Dist[1])
  1437.     else
  1438.       @aux_sprite[1].opacity += 15
  1439.       side_opacity(0)
  1440.       move_aux(1, Akea_Battle_Window::Fight_Pos[0], Akea_Battle_Window::Fight_Pos[1])
  1441.       move_aux(0, Akea_Battle_Window::Fight_Pos[0] - Akea_Battle_Window::Fight_Pos_Dist[0], Akea_Battle_Window::Fight_Pos[1] - Akea_Battle_Window::Fight_Pos_Dist[1])
  1442.     end
  1443.   end
  1444.   #--------------------------------------------------------------------------
  1445.   # * Movimento de retorno das janelas
  1446.   #--------------------------------------------------------------------------
  1447.   def return_aux_windows
  1448.     for n in 0..1
  1449.       @aux_sprite[n].opacity -= 25
  1450.       move_aux(0, Akea_Battle_Window::Fight_Pos[0], Akea_Battle_Window::Fight_Pos[1])
  1451.       move_aux(1, Akea_Battle_Window::Fight_Pos[0], Akea_Battle_Window::Fight_Pos[1])
  1452.     end
  1453.   end
  1454.   #--------------------------------------------------------------------------
  1455.   # * Opacidade lateral
  1456.   #--------------------------------------------------------------------------
  1457.   def side_opacity(i)
  1458.     if @aux_sprite[i].opacity < 140
  1459.       @aux_sprite[i].opacity += 15
  1460.     elsif @aux_sprite[i].opacity  > 160
  1461.       @aux_sprite[i].opacity -= 15
  1462.     end
  1463.   end
  1464.   #--------------------------------------------------------------------------
  1465.   # * Método de movimento das janelas
  1466.   #--------------------------------------------------------------------------
  1467.   def move_aux(n, pos_x, pos_y)
  1468.      @aux_sprite[n].x += Akea_Battle_Window::Move_Speed[0] if @aux_sprite[n].x < pos_x
  1469.      @aux_sprite[n].x -= Akea_Battle_Window::Move_Speed[0] if @aux_sprite[n].x > pos_x
  1470.      @aux_sprite[n].y += Akea_Battle_Window::Move_Speed[1] if @aux_sprite[n].y < pos_y
  1471.      @aux_sprite[n].y -= Akea_Battle_Window::Move_Speed[1] if @aux_sprite[n].y > pos_y
  1472.   end
  1473. end
  1474.  
  1475.  
  1476. #==============================================================================
  1477. # ** Cache
  1478. #------------------------------------------------------------------------------
  1479. #  Este modulo carrega cada gráfico, cria um objeto de Bitmap e retém ele.
  1480. # Para acelerar o carregamento e preservar memória, este módulo matém o
  1481. # objeto de Bitmap em uma Hash interna, permitindo que retorne objetos
  1482. # pré-existentes quando mesmo Bitmap é requerido novamente.
  1483. #==============================================================================
  1484.  
  1485.  
  1486. module Cache
  1487.   #--------------------------------------------------------------------------
  1488.   # * Carregamento dos gráficos de animação
  1489.   #     filename : nome do arquivo
  1490.   #     hue      : informações da alteração de tonalidade
  1491.   #--------------------------------------------------------------------------
  1492.   def self.akea(filename)
  1493.     load_bitmap("Graphics/Akea/", filename)
  1494.   end
  1495. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement