Auteur: Yukihiro matsumoto
#============================================
# ¡ Game_Picture
#--------------------------------------------
# @ƒsƒNƒ`ƒƒ‚ðˆµ‚¤ƒNƒ‰ƒX‚Å‚·B‚±‚̃Nƒ‰ƒX‚Í Game_Screen ƒNƒ‰ƒX ($game_screen)
# ‚Ì“à•”‚ÅŽg—p‚³‚ê‚Ü‚·B
#============================================
class Game_Picture
#------------------------------------------
# œ ŒöŠJƒCƒ“ƒXƒ^ƒ“ƒX•Ï”
#------------------------------------------
attr_reader :number # ƒsƒNƒ`ƒƒ”Ô†
attr_reader :name # ƒtƒ@ƒCƒ‹–¼
attr_reader :origin # Œ´“_
attr_reader :x # X ˥W
attr_reader :y # Y ˥W
attr_reader :zoom_x # X •ûŒüŠg‘å—¦
attr_reader :zoom_y # Y •ûŒüŠg‘å—¦
attr_reader :opacity # •s“§–¾“x
attr_reader :blend_type # ƒuƒŒƒ“ƒh•û–@
attr_reader :tone # F’²
attr_reader :angle # ‰ñ“]Šp“x
#------------------------------------------
# œ ƒIƒuƒWƒFƒNƒg‰Šú‰»
# number : ƒsƒNƒ`ƒƒ”Ô†
#------------------------------------------
def initialize(number)
@number = number
@name = ""
@origin = 0
@x = 0.0
@y = 0.0
@zoom_x = 100.0
@zoom_y = 100.0
@opacity = 255.0
@blend_type = 1
@duration = 0
@target_x = @x
@target_y = @y
@target_zoom_x = @zoom_x
@target_zoom_y = @zoom_y
@target_opacity = @opacity
@tone = Tone.new(0, 0, 0, 0)
@tone_target = Tone.new(0, 0, 0, 0)
@tone_duration = 0
@angle = 0
@rotate_speed = 0
end
#------------------------------------------
# œ ƒsƒNƒ`ƒƒ‚Ì•Ž¦
# name : ƒtƒ@ƒCƒ‹–¼
# origin : Œ´“_
# x : X ˥W
# y : Y ˥W
# zoom_x : X •ûŒüŠg‘å—¦
# zoom_y : Y •ûŒüŠg‘å—¦
# opacity : •s“§–¾“x
# blend_type : ƒuƒŒƒ“ƒh•û–@
#------------------------------------------
def show(name, origin, x, y, zoom_x, zoom_y, opacity, blend_type)
@name = name
@origin = origin
@x = x.to_f
@y = y.to_f
@zoom_x = zoom_x.to_f
@zoom_y = zoom_y.to_f
@opacity = opacity.to_f
@blend_type = blend_type
@duration = 0
@target_x = @x
@target_y = @y
@target_zoom_x = @zoom_x
@target_zoom_y = @zoom_y
@target_opacity = @opacity
@tone = Tone.new(0, 0, 0, 0)
@tone_target = Tone.new(0, 0, 0, 0)
@tone_duration = 0
@angle = 0
@rotate_speed = 0
end
#------------------------------------------
# œ ƒsƒNƒ`ƒƒ‚̈ړ®
# duration : ŽžŠÔ
# origin : Œ´“_
# x : X ˥W
# y : Y ˥W
# zoom_x : X •ûŒüŠg‘å—¦
# zoom_y : Y •ûŒüŠg‘å—¦
# opacity : •s“§–¾“x
# blend_type : ƒuƒŒƒ“ƒh•û–@
#------------------------------------------
def move(duration, origin, x, y, zoom_x, zoom_y, opacity, blend_type)
@duration = duration
@origin = origin
@target_x = x.to_f
@target_y = y.to_f
@target_zoom_x = zoom_x.to_f
@target_zoom_y = zoom_y.to_f
@target_opacity = opacity.to_f
@blend_type = blend_type
end
#------------------------------------------
# œ ‰ñ“]‘¬“x‚Ì•ÏX
# speed : ‰ñ“]‘¬“x
#------------------------------------------
def rotate(speed)
@rotate_speed = speed
end
#------------------------------------------
# œ F’²•ÏX‚ÌŠJŽn
# tone : F’²
# duration : ŽžŠÔ
#------------------------------------------
def start_tone_change(tone, duration)
@tone_target = tone.clone
@tone_duration = duration
if @tone_duration == 0
@tone = @tone_target.clone
end
end
#------------------------------------------
# œ ƒsƒNƒ`ƒƒ‚ÌÁ‹Ž
#------------------------------------------
def erase
@name = ""
end
#------------------------------------------
# œ ƒtƒŒ[ƒ€XV
#------------------------------------------
def update
if @duration >= 1
d = @duration
@x = (@x * (d - 1) + @target_x) / d
@y = (@y * (d - 1) + @target_y) / d
@zoom_x = (@zoom_x * (d - 1) + @target_zoom_x) / d
@zoom_y = (@zoom_y * (d - 1) + @target_zoom_y) / d
@opacity = (@opacity * (d - 1) + @target_opacity) / d
@duration -= 1
end
if @tone_duration >= 1
d = @tone_duration
@tone.red = (@tone.red * (d - 1) + @tone_target.red) / d
@tone.green = (@tone.green * (d - 1) + @tone_target.green) / d
@tone.blue = (@tone.blue * (d - 1) + @tone_target.blue) / d
@tone.gray = (@tone.gray * (d - 1) + @tone_target.gray) / d
@tone_duration -= 1
end
if @rotate_speed != 0
@angle += @rotate_speed / 2.0
while @angle < 0
@angle += 360
end
@angle %= 360
end
end
end |
|