Advertisement
Raizen

Akea Animated Battle Window(English)

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