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

Gradient Font Color

Iniciado por Raizen, 26/03/2014 às 17:05

Gradient Font Color
por Dargor

Tradução PT: ViniV & Kyo Panda

Função:
Adiciona o efeito gradiente na fonte do jogo.

Novas utilidades:
O Kyo Panda adicionou o módulo Panda_GFC que facilita a configuração do script e a criação de menus que possibilitem a modificação dele no jogo.

Créditos:
Dargor (criador do script).
ViniV

Screenshots:
Spoiler

[close]

Script:
Spoiler
#==============================================================================
# Gradient Font Color [VX] [XP]
#------------------------------------------------------------------------------
# Adiciona o efeito gradiente a fonte do jogo.
#------------------------------------------------------------------------------
# Autor: Dargor 
# Lançado em: 05/07/08
# Versão: 1.0
# Script original por poccil
# Tradução PT: ViniV & Kyo Panda
#==============================================================================

#==============================================================================
# Como usar:
#------------------------------------------------------------------------------
# Use o comando "Chamar Script" em um evento para qualquer um dos códigos 
# abaixo.
#------------------------------------------------------------------------------
# Cole o script acima do "Main" e abaixo dos "Scripts Adicionais".
# 
# Configure o script no guia "Configuração" logo abaixo. 
#------------------------------------------------------------------------------
# Dicas:
#
# - Para modificar a cor da fonte em jogo, use o comando "Chamar Script" em 
# um evento qualquer e então utilize o seguinte código:
#
# Panda_GFC::Cor desejada = integer de 0 à 255
# $scene = Scene_Map.new
# 
# Onde "Cor desejada" está relacionado a lista de cores no guia "Configuração"
# (à partir da linha 69) e "$scene = Scene_Map.new" a atualização do mapa.
#
# Exemplo:
#
# Panda_GFC::Up_Green = 128
# $scene = Scene_Map.new
#
# O exemplo acima mudará o valor da cor gradiente verde da fonte da parte 
# superior para 128 (valores baseado no padrão de cor "RGB").  
#
# - Por padrão, o efeito gradiente está ligado. Você pode desligá-lo definindo
# a configuração Gradient_Active no guia configuração para false. (linha 62)
#------------------------------------------------------------------------------
# Notas:
#
# - Esse script funciona no RPG Maker VX e RPG Maker XP.
#==============================================================================

#==============================================================================
# Panda_GFC
#------------------------------------------------------------------------------
# Módulo que define as configurações padrão do script Gradient Font Color.
#==============================================================================

module Panda_GFC
  #--------------------------------------------------------------------------
  # Configuração:
  #--------------------------------------------------------------------------
  
  # Defina aqui se o script estará ou não ativo (sim = true e não = false).
  Gradient_Active = true
  
  # Defina aqui qual será o sentido do efeito gradiente na fonte 
  # (0 = Vertical, 1 = Horizontal e 2 = Diagonal).
  Gradient_Mode = 0
  
  # Valor padrão da cor primária vermelho da parte superior da fonte.
  Up_Red = 255
  
  # Valor padrão da cor primária verde da parte superior da fonte.
  Up_Green = 255
  
  # Valor padrão da cor primária azul da parte superior da fonte.
  Up_Blue = 255
  
  # Valor padrão da cor primária vermelho da parte inferior da fonte.
  Down_Red = 113
  
  # Valor padrão da cor primária verde da parte inferior da fonte.
  Down_Green = 151
  
  # Valor padrão da cor primária azul da parte inferior da fonte.
  Down_Blue = 231
  #--------------------------------------------------------------------------
  # Fim da configuração
  #--------------------------------------------------------------------------
end

#============================================================================== 
# Font
#------------------------------------------------------------------------------
# Classe que comanda toda e qualquer operação relativo a fonte do jogo.
#------------------------------------------------------------------------------
# Sumário de mudanças:
# - Adição do módulo: Panda_GFC.
# - Novas variáveis públicas: gradient, gradient_color1, gradient_color2 e
#   gradient_mode.
# - Alias do método: initialize.
#==============================================================================

class Font
  #--------------------------------------------------------------------------
  # Adiciona o módulo Panda_GFC ao script
  #--------------------------------------------------------------------------
  include Panda_GFC
  #--------------------------------------------------------------------------
  # Variáveis públicas
  #--------------------------------------------------------------------------
  attr_accessor :gradient
  attr_accessor :gradient_color1
  attr_accessor :gradient_color2
  attr_accessor :gradient_mode
  #--------------------------------------------------------------------------
  # Alias da inicialização do objeto
  #--------------------------------------------------------------------------
  alias dargor_vx_font_gradient_initialize initialize
  #--------------------------------------------------------------------------
  # Inicialização do objeto
  #--------------------------------------------------------------------------
  def initialize(*args)
    dargor_vx_font_gradient_initialize(*args)
    @gradient = Gradient_Active
    @gradient_color1 = Color.new(Up_Red, Up_Green, Up_Blue)
    @gradient_color2 = Color.new(Down_Red, Down_Green, Down_Blue)
    @gradient_mode = Gradient_Mode
  end
end

#==============================================================================
# Bitmap
#------------------------------------------------------------------------------
# Classe que comanda toda e qualquer imagem exibida no jogo.
#------------------------------------------------------------------------------
# Sumário de mudanças:
# - Alias do método: draw text.
#==============================================================================

class Bitmap
  #--------------------------------------------------------------------------
  # Alias do desenhar texto
  #--------------------------------------------------------------------------
  alias dargor_vx_bitmap_gradient_draw_text draw_text
  #--------------------------------------------------------------------------
  # Desenhar texto
  #--------------------------------------------------------------------------
  def draw_text(*args)
    # Cor original da fonte
    if self.font.gradient
      # Pegar variáveis de texto
      if args[0].is_a?(Rect)
        x = args[0].x
        y = args[0].y
        width = args[0].width
        height = args[0].height
        text = args[1]
        align = args[2].nil? ? 0 : args[2]
      else
        x = args[0]
        y = args[1]
        width = args[2]
        height = args[3]
        text = args[4]
        align = args[5].nil? ? 0 : args[5]
      end
      original_color = self.font.color
      alpha = original_color.alpha.to_f if alpha.nil?
      # Criar bitmap de texto temporário
      text1=Bitmap.new(width, height)
      text2=Bitmap.new(width, height)
      text1.font.size = self.font.size
      text1.font.name = self.font.name
      text1.font.color = self.font.gradient_color2
      text_height = text1.text_size(text).height
      text_width = text1.text_size(text).width
      return if text_width < 1 or text_height < 1
      # Temporariamente remover o efeito gradiente
      self.font.gradient = false
      text1.dargor_vx_bitmap_gradient_draw_text(0, 0, width, height, text, align)
      self.font.gradient = true
      # Aplicar efeito gradiente
      case self.font.gradient_mode
      # Efeito gradiente verical
      when 0
        text_position = (height / 2) - (text_height / 2)
        for i in 0...height
          if i < text_position
            opacity = 0
          elsif i > text_position + text_height
            opacity = 255
          else
            ratio = ((i - text_position) * 1.0 / text_height)
            ratio -=(0.5 - ratio) * 0.5
            opacity = ratio * 255.0
            opacity = 255.0 if opacity > 255.0
            opacity = 0.0 if opacity < 0.0
          end
          text2.blt(0, i, text1, Rect.new(0,i,width,1), opacity)
        end
      # Efeito gradiente horizontal
      when 1
        text_position = (width / 2) - (text_width / 2)
        for i in 0...width
          if i < text_position
            opacity = 0
          elsif i > text_position + text_width
            opacity = 255
          else
            ratio = ((i - text_position) * 1.0 / text_width)
            ratio -= (0.5 - ratio) * 0.5
            opacity= ratio * 255
            opacity = 255.0 if opacity > 255.0
            opacity = 0.0 if opacity < 0.0
          end
          text2.blt(i, 0, text1, Rect.new(i,0,1,height), opacity)
        end
      # Efeito gradiente vertical
      when 2
        text_position = (width / 2) - (text_width / 2)
        for i in 0...width
          if i < text_position
            opacity = 0
          elsif i > text_position + text_width
            opacity = 255
          else
            ratio = ((i - text_position) * 1.0 / text_width)
            ratio -= (0.5 - ratio) * 0.5
            opacity = ratio * 255
            opacity = 255.0 if opacity > 255.0
            opacity = 0.0 if opacity < 0.0
          end
          text2.blt(i, 0, text1, Rect.new(i,0,1,height), opacity)
        end
        text_position = (height / 2) - (text_height / 2)
        for i in 0...height
          if i < text_position
            opacity = 0
          elsif i > text_position + text_height
            opacity = 255
          else
            ratio = ((i - text_position) * 1.0 / text_height)
            ratio -= (0.5 - ratio) * 0.5
            opacity = ratio * 255
            opacity = 255.0 if opacity > 255.0
            opacity = 0.0 if opacity < 0.0
          end
          text2.blt(0, i, text1, Rect.new(0,i,width,1), opacity)
        end
      end
      # Desenhar texto gradiente
      self.font.color = self.font.gradient_color1
      self.font.color.alpha = alpha
      # Temporariamente remover efeito gradiente
      self.font.gradient = false
      dargor_vx_bitmap_gradient_draw_text(*args)
      # Temporariamente remover efeito gradiente
      self.font.gradient = true
      self.font.color = original_color
      self.font.color.alpha = alpha
      self.blt(x, y, text2, text2.rect, alpha)
      # Dispose do bitmap do texto gradiente
      text1.dispose
      text2.dispose
    else
      # Processo padrão
      dargor_vx_bitmap_gradient_draw_text(*args)
    end
  end
end
[/box]
[close]

 Interessante, tudo para deixar o texto mais chamativo. Gostei desse script, obrigado por trazer Raizen.

2010 ~ 2016 / 2024