Порядок следования:
WinAPI
Screen
Graphics
Код:
#==============================================================================
# Graphics
#------------------------------------------------------------------------------
# Модуль, отвечающий за обработку графики.
#==============================================================================
module Graphics
#-----------------------------------------------------------------------------
# Возвращает ширину игрового экрана (integer)
#-----------------------------------------------------------------------------
def self.width
return Screen.window_rect.width
end
#-----------------------------------------------------------------------------
# Возвращает высоту игрового экрана (integer)
#-----------------------------------------------------------------------------
def self.height
return Screen.window_rect.height
end
#----------------------------------------------------------------------------
# * Возвращает "яркость экрана" (обратное значение непрозрачности спрайта)
#----------------------------------------------------------------------------
def self.brightness
return -(@brightness.opacity - 255)
end
#----------------------------------------------------------------------------
# * Устанавливает "яркость экрана" (обратное значение непрозрачности спрайта)
# new_brightness : integer - яркость (0 - 255)
#----------------------------------------------------------------------------
def self.brightness=(new_brightness)
@brightness.opacity = -(new_brightness - 255)
end
#----------------------------------------------------------------------------
# * Пропускает заданное количество кадорв (обновляя экран)
# duration : integer - количество кадров
#----------------------------------------------------------------------------
def self.wait(duration)
duration.times do
Graphics.update
end
end
#----------------------------------------------------------------------------
# * Уменьшает "яркость" до 0 за заданное количество кадров
# duration : integer - количество кадров
#----------------------------------------------------------------------------
def self.fadeout(duration)
n = (255 - @brightness.opacity).to_f / duration.to_f
n = n.round
for i in 0..duration
break if @brightness.opacity + n > 255
@brightness.opacity += n
Graphics.update
end
@brightness.opacity = 255
end
#----------------------------------------------------------------------------
# * Увеличивает "яркость" до 255 за заданное количество кадров
# duration : integer - количество кадров
#----------------------------------------------------------------------------
def self.fadein(duration)
n = 255.0 / duration.to_f
n = n.round
for i in 0..duration
break if @brightness.opacity - n < 0
@brightness.opacity -= n
Graphics.update
end
@brightness.opacity = 0
end
#----------------------------------------------------------------------------
@brightness = Sprite.new
@brightness.opacity = 0
@brightness.bitmap = Bitmap.new(width, height)
@brightness.bitmap.fill_rect(0, 0, width, height, Color.new (0, 0, 0, 255))
@brightness.z = 3000
#----------------------------------------------------------------------------
end
Социальные закладки