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).
ViniVScreenshots:Spoiler
(http://img152.imageshack.us/img152/1866/vxgradientfont01we4.png)
(http://img379.imageshack.us/img379/1655/vxgradientfont02ch9.png)
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]
Interessante, tudo para deixar o texto mais chamativo. Gostei desse script, obrigado por trazer Raizen.