Advertisement
Gabriel_Nascimento

** Esteem - Window Message Auto Size

Jul 24th, 2019
682
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 4.42 KB | None | 0 0
  1. #==============================================================================
  2. #  ** Esteem - Window Message Auto Size
  3. #==============================================================================
  4. # ► Script por: Gabriel N.
  5. #------------------------------------------------------------------------------
  6. # ► Atualizações: 24/07/19 - v1.0 - Código finalizado e revisado
  7. #==============================================================================
  8. # ► Descrição: Quando ativo, faz com que a janela de mensagens automaticamente
  9. # ajuste seu tamanho com base em seu conteúdo.
  10. #
  11. # * O código identifica e ignora os caracteres de todos os comandos de mensagem
  12. # fazendo com que o ajuste automático do tamanho da janela leve em conta apenas
  13. # o texto visível, mesmo que na composição da mensagem haja caracteres que não
  14. # são mostrados no texto final.
  15. #   Ex:\c[n], \., \$, etc...
  16. #
  17. # * As faces são centralizadas automaticamente, independente da altura da
  18. # janela.
  19. #
  20. # * Você também pode definir as coordenadas X e Y da janela utilizando o
  21. # seguinte código no comando Chamar Script (Script Call):
  22. #   $game_system.msg_window_pos = [x, y]
  23. # Substitua x e y pelas coordenadas desejada.
  24. #   Ex: $game_system.msg_window_pos = [150, 150]
  25. #       $game_system.msg_window_pos = [$game_player.screen_x, 50]
  26. #==============================================================================
  27. # ► Instruções: Para ativar o efeito do script basta ativar a switch que você
  28. #   determinará nas configurações abaixo.
  29. #==============================================================================
  30. # ► Configurações
  31. #==============================================================================
  32. module Esteem
  33.   module WM_AutoSize
  34.    
  35.     AS_SWITCH = 1 # Defina o ID da switch desejada
  36.  
  37.   end # WM_AutoSize
  38. end # Esteem
  39. #==============================================================================
  40. # ► Início do Código | Não mude mais nada caso não entenda
  41. #==============================================================================
  42. class Window_Message < Window_Base
  43.  
  44.   alias :esteem_msw_oaw :open_and_wait
  45.   def open_and_wait
  46.     @as_switch = $game_switches[Esteem::WM_AutoSize::AS_SWITCH]
  47.     if @as_switch
  48.       text = convert_escape_characters($game_message.all_text)
  49.       set_lines(text)
  50.       self.width = (text_size(major_line).width + (@icons.size * 24)) + (standard_padding * 2) + new_line_x
  51.       self.height = (@lines.size * line_height) + (standard_padding * 2)
  52.       $game_system.msg_window_pos[0] != nil ? self.x = $game_system.msg_window_pos[0] : self.x = (Graphics.width - self.width) * 0.5
  53.       $game_system.msg_window_pos[1] != nil ? self.y = $game_system.msg_window_pos[1] : update_placement
  54.     else
  55.       self.width = window_width
  56.       self.height = window_height
  57.       self.x = 0
  58.       $game_system.msg_window_pos = []
  59.       update_placement
  60.     end
  61.     create_contents
  62.     esteem_msw_oaw
  63.   end
  64.  
  65.   def set_lines(text)
  66.     @lines = []
  67.     text.each_line {|line| @lines.push(line)}
  68.   end
  69.  
  70.   def major_line
  71.     lines_size = []
  72.     @lines.each do |line|
  73.       @icons = []
  74.       line.scan(/(\ei\[\d+\])/i) {|icon| @icons.push(icon)}
  75.       line.gsub!(/\n/) {""}
  76.       line.gsub!(/(\e\w\[\d+\])/i) {""}
  77.       line.gsub!(/\e\G/i) {""}
  78.       line.gsub!(/\e\$/i) {""}
  79.       line.gsub!(/\e\./i) {""}
  80.       line.gsub!(/\e\{/i) {""}
  81.       line.gsub!(/\e\}/i) {""}
  82.       line.gsub!(/\e\|/i) {""}
  83.       line.gsub!(/\e\!/i) {""}
  84.       line.gsub!(/\e\>/i) {""}
  85.       line.gsub!(/\e\</i) {""}
  86.       line.gsub!(/\e\^/i) {""}
  87.       lines_size.push(line.size)
  88.     end
  89.     @lines[lines_size.index(lines_size.max)]
  90.   end
  91.  
  92.   alias :esteem_asw_up_pl :update_placement
  93.   def update_placement
  94.     esteem_asw_up_pl
  95.     if @as_switch
  96.       pos = [(window_height * 0.5) - (height * 0.5), (Graphics.height * 0.5) - (height * 0.5), (Graphics.height - (window_height * 0.5)) - (height * 0.5)]
  97.       self.y = pos[@position]
  98.     end
  99.   end
  100.  
  101.   alias :esteem_asw_df :draw_face
  102.   def draw_face(face_name, face_index, x, y, enabled = true)
  103.     y = (contents.height - 96) * 0.5 if @as_switch
  104.     esteem_asw_df(face_name, face_index, x, y, enabled = true)
  105.   end
  106.  
  107. end # Window_Message
  108. class Game_System
  109.  
  110.   attr_accessor :msg_window_pos
  111.  
  112.   alias :esteem_asw_gs_init :initialize
  113.   def initialize
  114.     esteem_asw_gs_init
  115.     @msg_window_pos = []
  116.   end
  117.  
  118. end # Game_System
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement