O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Quebra de Texto Automatica

Iniciado por JVSodre, 14/10/2017 às 15:48

14/10/2017 às 15:48 Última edição: 14/10/2017 às 16:44 por JVSodre
Oi, Alguem Sabe um Jeito de eu Quebrar o Texto Automaticamente naquela Caixa "Descrição" dos Itens?]

( Imagem: https://imgur.com/BDq8RSl )

#==============================================================================
# ** Window_Help
#------------------------------------------------------------------------------
#  Esta janela exibe explicação de habilidades e itens e outras informações.
#==============================================================================

class Window_Help < Window_Base
  #--------------------------------------------------------------------------
  # * Inicialização do objeto
  #     line_number : número de linhas
  #--------------------------------------------------------------------------
  def initialize(line_number = 3)
    super(0, 0, Graphics.width, fitting_height(line_number))
  end
  #--------------------------------------------------------------------------
  # * Configuração de texto
  #     text : texto
  #--------------------------------------------------------------------------
  def set_text(text)
    if text != @text
      @text = text
      refresh
    end
  end
  #--------------------------------------------------------------------------
  # * Limpeza
  #--------------------------------------------------------------------------
  def clear
    set_text("")
  end
  #--------------------------------------------------------------------------
  # * Definição de item
  #     item : habilidades, itens, etc.
  #--------------------------------------------------------------------------
  def set_item(item)
    set_text(item ? item.description : "")
  end
  #--------------------------------------------------------------------------
  # * Renovação
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    draw_text_ex(4, 0, @text)
  end
end
~Desenvolvendo Um Jogo de RPG Dentro de Hogwarts, Uma Escola de Magia e Bruxaria, Qualquer Ideia ou Ajuda Será Bem Vinda~

O Jeito que eu Resolvi Foi Colocar um Script Para Quebrar o Texto Automaticamente

Esse:
# ================================================= =======================
# ** Caixas de mensagens de Word Wrapping, de: KilloZapit
# ------------------------------------------------- -----------------------
# Muda as caixas de mensagens para que ela automaticamente envolva linhas longas.
#
# Nota: Considero este script como de domínio público, e não coloquei nenhum
# restrições sobre o uso que seja. Meu único pedido é esse
# é fornecido um link de volta ao script para que mais pessoas possam
# Acesse se quiserem.
#
# Versão do segundo:
# Agora tira códigos de cores e códigos de ícones para que eles não quebram palavras.
# Também calcula a largura do ícone juntamente com a largura do texto para as palavras.
# Versão the Third:
# Agora, também tira atrasos e outros códigos relacionados ao tempo.
# Divide os códigos de controle não-ícone antes de contar ícones.
# Os códigos de controle agora podem quebrar linhas no caso de mudanças de fonte.
# Adicionado alguns comentários para esclarecer algum código.
# Versão the Forth:
# Corrigido um pequeno erro que pode causar um erro ao contar ícones.
# Adicionado um pequeno aviso para questões de direitos autorais.
# Version the Fifth:
# Adicionado modo "colapso", que elimina espaços extras.
# Pode agora usar o modo "espaço em branco" fora do modo wordwrap, se necessário.
# Versão do Sexto:
# Problemas corrigidos com espaços em colapso não envolvendo palavras corretas.
# Versão do sétimo:
# Opção adicionada para adicionar uma margem no lado direito da janela.
# ------------------------------------------------- -----------------------
# Também adiciona as seguintes novas seqüências de escape:
#
# \ ww - Word Wrap: liga o Word Wrap se estiver desligado
# \ nw - Sem Envoltório: desliga a palavra
# \ ws - Modo WhiteSpace: converte novas linhas em espaços (como HTML)
# \ nl - Nova linha: preserva devoluções difíceis
# \ cs - Collapse whiteSpace: elimina espaços extras (também como HTML)
# \ pré - PRE-formatado: preserva espaços
# \ br - line BRake: newline manual para o modo de espaço em branco
# \ rm - Margem Direita: espaço extra no lado direito da janela
# ================================================= =======================

# Standard config module.
module KZIsAwesome
  module WordWrap

    # change this if you don't want wordwrap on by default.
    DEFAULT_WORDWRAP = true

    # change this if you want white space mode on by default.
    DEFAULT_WHITESPACE = false
   
    # change this if you want white space mode on by default.
    DEFAULT_COLLAPSE = true
    
    # change this to add a right margin to the window.
    DEFAULT_RIGHT_MARGIN = 0

  end
end

class Window_Base < Window
  include KZIsAwesome::WordWrap

  alias_method :initialize_kz_window_base, :initialize
  def initialize(x, y, width, height)
    initialize_kz_window_base(x, y, width, height)
    @wordwrap = DEFAULT_WORDWRAP
    @convert_newlines = DEFAULT_WHITESPACE
    @collapse_whitespace = DEFAULT_COLLAPSE
    @right_margin = DEFAULT_RIGHT_MARGIN
    @lastc = "\n"
  end

  alias_method :process_character_kz_window_base, :process_character
  def process_character(c, text, pos)
    c = ' ' if @convert_newlines && c == "\n"
    if @wordwrap && c =~ /[ \t]/
      c = '' if @collapse_whitespace && @lastc =~ /[\s\n\f]/
      if pos[:x] + get_next_word_size(c, text) > contents.width - @right_margin
        process_new_line(text, pos)
      else
        process_normal_character(c, pos)
      end
      @lastc = c
    else
      @lastc = c
      process_character_kz_window_base(c, text, pos)
    end
  end

  def get_next_word_size(c, text)
    # Split text by the next space/line/page and grab the first split
    nextword = text.split(/[\s\n\f]/, 2)[0]
    if nextword
      icons = 0
      if nextword =~ /\e/i
        # Get rid of color codes and YEA Message system outline colors
        nextword = nextword.split(/\e[oOcC]+\[\d*\]/).join
        # Get rid of message timing control codes
        nextword = nextword.split(/\e[\.\|\^<>!]/).join
        # Split text by the first non-icon escape code
        # (the hH is for compatibility with the Icon Hues script)
        nextword = nextword.split(/\e[^iIhH]+/, 2)[0]
        # Erase and count icons in remaining text
        nextword.gsub!(/\e[iIhH]+\[[\d,]*\]/) do
          icons += 1
          ''
        end if nextword
      end
      wordsize = (nextword ? text_size(c + nextword).width : text_size( c ).width)
      wordsize += icons * 24
    else
      wordsize = text_size( c ).width
    end
    return wordsize
  end

  alias_method :process_escape_character_kz_window_base, :process_escape_character
  def process_escape_character(code, text, pos)
    case code.upcase
    when 'WW'
      @wordwrap = true
    when 'NW'
      @wordwrap = false
    when 'WS'
      @convert_newlines = true
    when 'NL'
      @convert_newlines = false
    when 'CS'
      @collapse_whitespace = true
    when 'PRE'
      @collapse_whitespace = false
    when 'BR'
      process_new_line(text, pos)
      @lastc = "\n"
    when 'RM'
      @right_margin = obtain_escape_param(text)
    else
      process_escape_character_kz_window_base(code, text, pos)
    end
    # Recalculate the next word size and insert line breaks
    # (Needed primarily for font changes)
    if pos[:x] + get_next_word_size('', text) > contents.width
      process_new_line(text, pos)
    end
  end

end
~Desenvolvendo Um Jogo de RPG Dentro de Hogwarts, Uma Escola de Magia e Bruxaria, Qualquer Ideia ou Ajuda Será Bem Vinda~