Advertisement
Rafael_Sol_Maker

RAFAEL_SOL_MAKER's VX MAP ADJUSTER v1.0

Nov 17th, 2011
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 3.89 KB | None | 0 0
  1. #===============================================================================
  2. #         RAFAEL_SOL_MAKER's VX MAP ADJUSTER v1.0 (Add-on para resoluções)
  3. #-------------------------------------------------------------------------------
  4. # Descrição:    Automaticamente redimensiona o seu mapa, caso ele seja menor
  5. #               que a tela, para prevenir um erro na rolagem (scrolling) desse.
  6. #               Ele alerta ao rodar o jogo, e também pode salvar o mapa já no
  7. #               tamanho correto e preeenchido, caso esteja em modo de testes.
  8. #               Esse código todo vem do fato de que não é possivel redimensionar
  9. #               Tables de um mapa diretamente sem resultar em travamento do jogo
  10. #               OBS.: De modo geral, requer um script de resolução que a tela
  11. #                fosse redimensionada e então seja feito algum trabalho...
  12. #-------------------------------------------------------------------------------
  13. # Modo de usar: Basta configurar ele no modo de configurações avançadas (abaixo)
  14. #-------------------------------------------------------------------------------
  15. # Agradecimentos Especiais: -
  16. #-------------------------------------------------------------------------------
  17. #===============================================================================
  18.  
  19. module PowerPackVX_Advanced_Configs
  20.   Auto_Resize_Map = true    # Redimensionar automaticamente os mapas menores?
  21.   Save_Resized_Map = false  # Salvar o mapa redimensionado?
  22.   Filler_Tile_ID = 2816     # ID do tile para preencher as lacunas
  23. end
  24.  
  25. class Game_Map
  26. include PowerPackVX_Advanced_Configs
  27.  
  28.   alias sol_maker_setup setup unless $@
  29.   def setup(map_id)
  30.     sol_maker_setup (map_id)
  31.     if Auto_Resize_Map
  32.       # Descobre qual o tamanho mínimo ideal para o mapa;
  33.       wd = Graphics.width / 32
  34.       wd += 1 if (Graphics.width % 32) > 0
  35.       hg = Graphics.height / 32
  36.       hg += 1 if (Graphics.height % 32) > 0    
  37.       if @map.width < wd or @map.height < hg
  38.         if $TEST
  39.           print 'O mapa precisa ter o tamanho mínimo de ' + wd.to_s +
  40.             ' tiles de largura, por '+ hg.to_s +
  41.             ' tiles de altura para a resolução selecionada;',
  42.             'Ele será redimensionado automaticamente para esse tamanho.'
  43.           resize_map (wd,hg)
  44.         end #if $TEST
  45.       end #if map width/height
  46.     end #if Resize
  47.   end
  48.  
  49.  
  50.   def resize_map (mapwidth, mapheight)  
  51.     # Cria um novo mapa;
  52.     map2 = RPG::Map.new ([@map.width, mapwidth].max, [@map.height, mapheight].max)    
  53.     # Preenche ele todo com um padrão só...
  54.     for x in 0.. map2.width-1
  55.       for y in 0..map2.height-1
  56.         map2.data[x,y,0] = Filler_Tile_ID
  57.         map2.data[x,y,1] = 0
  58.         map2.data[x,y,2] = 0
  59.       end
  60.     end
  61.     # "Coloca" o mapa aberto dentro do novo;
  62.     for x in 0..@map.width-1
  63.       for y in 0..@map.height-1
  64.         for z in 0..2
  65.           map2.data[x,y,z] = @map.data[x,y,z]
  66.         end
  67.       end
  68.     end
  69.     # Passar todas as propriedades, obviamente;
  70.     map2.scroll_type = @map.scroll_type
  71.     map2.autoplay_bgm = @map.autoplay_bgm
  72.     map2.bgm = @map.bgm
  73.     map2.autoplay_bgs = @map.autoplay_bgs
  74.     map2.bgs = @map.bgs
  75.     map2.disable_dashing = @map.disable_dashing
  76.     map2.encounter_list = @map.encounter_list
  77.     map2.encounter_step = @map.encounter_step
  78.     map2.parallax_name = @map.parallax_name
  79.     map2.parallax_loop_x = @map.parallax_loop_x
  80.     map2.parallax_loop_y = @map.parallax_loop_y
  81.     map2.parallax_sx = @map.parallax_sx
  82.     map2.parallax_sy = @map.parallax_sy
  83.     map2.parallax_show = @map.parallax_show
  84.     map2.events = @map.events
  85.     # O mapa enfim fica pronto, descarta o mapa temporário.
  86.     @map = map2; map2 = nil
  87.     if Save_Resized_Map
  88.       save_data(@map, sprintf("Data/Map%03d.rvdata", @map_id))
  89.       print 'O mapa foi devidamente redimensionado e salvo com sucesso!'
  90.     end
  91.   end
  92.  
  93. end
  94.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement