Advertisement
Guest User

Untitled

a guest
Apr 26th, 2014
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rails 5.69 KB | None | 0 0
  1. #-----------------------------------------------------------------------------
  2. #                       KL Tool Bar 1.0
  3. #                       Criador: Klarth
  4. #  Termos de uso:
  5. #     -Você pode usar livremente esse script em seu projeto, seja ele comercial
  6. #      ou não, mas caso uso dê os devidos créditos.
  7. #    - Você pode modificar o script para uso próprio, não distribua versões
  8. #      modificadas do script.
  9. #    - Caso for postar em algum lugar mantenha os créditos
  10. #  
  11. #   Descrição do script: Esse script cria uma barra de ferramentas no mapa com
  12. #   comandos que podem ser chamadas por uma tecla configurável.
  13. #  
  14. #-----------------------------------------------------------------------------
  15.  
  16.  
  17. module Tool_Bar_Conf
  18.   # Caso o segundo valor seja true um evento comum com a id do terceiro valor
  19.   # é chamado. Caso o segundo valor seja false, o comando contido no terceiro
  20.   # valor é executado.
  21.  
  22.   # Id do icone; Evento comum = true, false; id do evento comum ou comando; tecla
  23.   Itens = [
  24.   [12, true, 1, :X],
  25.   [40, true, 4, :Y],
  26.   [22, false, "msgbox('Teste')", :Z],
  27.   [33, false, "SceneManager.call(Scene_Menu); Window_MenuCommand::init_command_position", :R],
  28.   ]
  29.   # Posição Y da tool bar
  30.   Position_y = 368
  31.   # Cor da borda da toolbar
  32.   Border_Color = Color.new(15,15,30)
  33.   # Cor do fundo principal
  34.   Back_Color = Color.new(32,32,47)
  35.   # Cor da caixa onde ficam os icones
  36.   Box_Color = Color.new(49,49,64)
  37.   # Se que toca quando o botão é apertado, caso seja "" nada é tocado
  38.   Se_Trigger = "Audio/SE/Key"
  39. end
  40.  
  41. class Bitmap
  42. #------------------------------------------------------------------------------
  43. # Novo método que desenha um ícone dentro de um bitmap
  44. # icon_index: índice do ícone
  45. # x,y: coordenadas dentro do bitmap
  46. #------------------------------------------------------------------------------
  47.   def fill_icon(icon_index, x, y)
  48.     bitmap = Cache.system("Iconset")
  49.     rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
  50.     blt(x, y, bitmap, rect)
  51.   end
  52. #-----------------------------------------------------------------------------
  53. # Novo método que desenha uma borda dentro de um bitmap.
  54. # size: tamanho da borda
  55. # color: cor da borda
  56. #-----------------------------------------------------------------------------
  57.   def fill_border(size, color)
  58.     bw = self.width
  59.     bh = self.height
  60.     rect1 = Rect.new(0,0,size,bh)
  61.     rect2 = Rect.new(size,0,bw-size*2,size)
  62.     rect3 = Rect.new(size,bh-size,bw-size*2,size)
  63.     rect4 = Rect.new(bw-size,0,size,bh)
  64.     fill_rect(rect1, color)
  65.     fill_rect(rect2, color)
  66.     fill_rect(rect3, color)
  67.     fill_rect(rect4, color)
  68.   end
  69. end
  70.  
  71. class Tool_Bar
  72.   include Tool_Bar_Conf
  73. #------------------------------------------------------------------------------
  74. # Inicializa a tool bar
  75. #------------------------------------------------------------------------------
  76.   def initialize
  77.     @back = Sprite.new
  78.     @icons = []
  79.     @cursor = Sprite.new
  80.     @item_index = 0
  81.    
  82.     @border_color = Border_Color
  83.     @back_color = Back_Color
  84.     @box_color = Box_Color
  85.    
  86.     refresh
  87.   end
  88. #------------------------------------------------------------------------------
  89. # Cria a tool bar, desenhando todo o conteúdo necessário
  90. #------------------------------------------------------------------------------
  91.   def refresh
  92.     size = Itens.size
  93.    
  94.     @back.bitmap = Bitmap.new(12 + 28*size + (size+1)*2, 42)
  95.     @back.bitmap.fill_border(6, @border_color)
  96.     bw = @back.bitmap.width
  97.     @back.bitmap.fill_rect(6,6,bw-12,30, @back_color)
  98.     @back.z = 800
  99.     @back.x = (Graphics.width - bw)/2
  100.     @back.y = Position_y
  101.    
  102.     @cursor.bitmap = Bitmap.new(28,28)
  103.     @cursor.bitmap.fill_rect(0,0,28,28,@box_color)
  104.     @cursor.x = @back.x + 8 + 30*@item_index
  105.     @cursor.y = @back.y + 7
  106.     @cursor.z = 950
  107.    
  108.     for i in 0...size
  109.       rect = Rect.new(8+30*i,7,28,28)
  110.       @back.bitmap.fill_rect(rect, @box_color)
  111.  
  112.       @icons.push(Sprite.new)
  113.       @icons[i].bitmap = Bitmap.new(24,24)
  114.       @icons[i].bitmap.fill_icon(Itens[i][0],0,0)
  115.  
  116.       x = @back.x + 10 + 30*i
  117.       y = @back.y + 9
  118.       @icons[i].x = x
  119.       @icons[i].y = y
  120.       @icons[i].z = 1000
  121.     end
  122.   end
  123. #------------------------------------------------------------------------------
  124. # Atualiza a tool bar
  125. #-----------------------------------------------------------------------------
  126.   def update
  127.     @cursor.x = @back.x + 8 + 30*@item_index
  128.     @cursor.y = @back.y + 7
  129.     @cursor.update
  130.     Itens.each_index { |i|
  131.       if Input.trigger?(Itens[i][3])
  132.         @item_index = i
  133.         @cursor.flash(Color.new(255,255,255,100), 30)
  134.         Audio.se_stop
  135.         Audio.se_play(Se_Trigger) if Se_Trigger != ""
  136.         if Itens[i][1]
  137.           $game_temp.reserve_common_event(Itens[i][2])
  138.         else
  139.           eval(Itens[i][2])
  140.         end
  141.       end
  142.     }
  143.   end
  144. #------------------------------------------------------------------------------
  145. # Apaga os dados das imagens da memoria
  146. #------------------------------------------------------------------------------
  147.   def dispose
  148.     @back.dispose
  149.     @icons.each do |i|
  150.       i.dispose
  151.     end
  152.     @cursor.dispose
  153.   end
  154.  
  155. end
  156. #----------------------------------------------------------------------------
  157. # Modificações necessárias para colocar a tool bar no mapa
  158. #----------------------------------------------------------------------------
  159. class Scene_Map
  160.   alias kl_start start
  161.   alias kl_update update
  162.   alias kl_terminate terminate
  163.   def start
  164.     @tool_bar = Tool_Bar.new
  165.     kl_start
  166.   end
  167.  
  168.   def update
  169.     kl_update
  170.     @tool_bar.update
  171.   end
  172.  
  173.   def terminate
  174.     @tool_bar.dispose
  175.     kl_terminate
  176.   end
  177. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement