Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # AUTOR: METALERO
- $NO_TITLE = $TEST
- class Scene_Title < Scene_Base
- @@no_animation = false
- class << self
- attr_accessor :no_animation
- end
- def start
- super
- SceneManager.clear
- Graphics.freeze
- @selectedOption = 0
- initialize_background_animation
- initialize_title_text_animation
- initialize_title_substring_animation
- initialize_logo_animation
- initialize_options
- initialize_cursor
- if $NO_TITLE
- on_new_game
- else
- play_title_music
- end
- end
- def transition_speed
- return 20 #EDITABLE
- end
- def terminate
- super
- SceneManager.snapshot_for_background
- @bkgSprite.dispose
- @titleTextSprite.dispose
- @titleSubstringSprite.dispose
- @logoSprite.dispose
- for i in 0...@optionSprites.size
- @optionSprites[i].dispose
- end
- @cursorSprite.dispose
- end
- def update
- super
- if @mustAnimateBackground
- animate_background
- end
- if @mustAnimateTitleText
- animate_title_text
- end
- if @mustAnimateTitleSubstring
- animate_title_substring
- end
- if @mustAnimateLogo
- animate_logo
- end
- if @mustAnimateOptions
- animate_options
- end
- if @mustUpdateCursor
- update_cursor
- end
- end
- def initialize_background_animation
- @backgroundAnimationDelay = 100 #EDITABLE
- @backgroundAnimationDelayCount = 0
- @backgroundAnimationSpeed = 1.4 #EDITABLE
- @backgroundAnimationValue = 0.0
- @backgroundAnimationX = 0 #EDITABLE
- @backgroundAnimationY = 0 #EDITABLE
- @mustAnimateBackground = true
- @bkgSprite = Sprite.new
- @bkgSprite.bitmap = Cache.title1("BackgroundEmpty")
- if !Scene_Title.no_animation
- @bkgSprite.opacity = 0
- else
- @backgroundAnimationValue = 255
- end
- @bkgSprite.x = @backgroundAnimationX
- @bkgSprite.y = @backgroundAnimationY
- @bkgSprite.z = 0
- end
- def initialize_title_text_animation
- @titleTextAnimationX = 180 #EDITABLE
- @titleTextAnimationY = 130 #EDITABLE
- @titleTextAnimationDelay = 40 #EDITABLE
- @titleTextAnimationDelayCount = 0
- @titleTextAnimationOpacitySpeed = 2 #EDITABLE
- @titleTextAnimationOpacityValue = 0
- @mustAnimateTitleText = true
- @titleTextSprite = Sprite.new
- @titleTextSprite.bitmap = Cache.title1("TitleText")
- @titleTextSprite.x = @titleTextAnimationX
- @titleTextSprite.y = @titleTextAnimationY
- @titleTextSprite.z = 10
- @titleTextAnimationCropMax = @titleTextSprite.bitmap.width
- @titleTextAnimationCropSpeed = 1.8 #EDITABLE
- @titleTextAnimationCropValue = 0
- if !Scene_Title.no_animation
- @titleTextSprite.opacity = 0
- @titleTextSprite.src_rect.width = 0
- else
- @titleTextAnimationCropValue = @titleTextAnimationCropMax
- @titleTextAnimationOpacityValue = 255
- end
- end
- def initialize_title_substring_animation
- @titleSubstringAnimationX = 180 #EDITABLE
- @titleSubstringAnimationY = 200 #EDITABLE
- @titleSubstringAnimationDelay = 0 #EDITABLE
- @titleSubstringAnimationDelayCount = 0
- @titleSubstringAnimationOpacitySpeed = 2 #EDITABLE
- @titleSubstringAnimationOpacityValue = 0
- @mustAnimateTitleSubstring = true
- @titleSubstringSprite = Sprite.new
- @titleSubstringSprite.bitmap = Cache.title1("TitleSubstring")
- @titleSubstringAnimationCropMax = @titleSubstringSprite.bitmap.width
- @titleSubstringAnimationCropDelta = 2.0 #EDITABLE
- @titleSubstringAnimationCropValue = 0
- @titleSubstringAnimationPosValue1 = @titleSubstringAnimationCropMax / 2
- @titleSubstringAnimationPosValue2 = @titleSubstringAnimationX + @titleSubstringAnimationCropMax / 2
- @titleSubstringSprite.x = @titleSubstringAnimationPosValue2
- @titleSubstringSprite.y = @titleSubstringAnimationY
- @titleSubstringSprite.z = 10
- if !Scene_Title.no_animation
- @titleSubstringSprite.opacity = 0
- @titleSubstringSprite.src_rect.width = 0
- @titleSubstringSprite.src_rect.x = @titleSubstringAnimationPosValue1
- else
- @titleSubstringAnimationOpacityValue = 255
- @titleSubstringAnimationCropValue = @titleSubstringAnimationCropMax
- @titleSubstringAnimationPosValue1 = 0
- @titleSubstringAnimationPosValue2 = @titleSubstringAnimationX
- @titleSubstringSprite.x = @titleSubstringAnimationX
- end
- end
- def initialize_logo_animation
- @logoAnimationX = 300 #EDITABLE
- @logoAnimationY = 100 #EDITABLE
- @logoAnimationDelay = 60 #EDITABLE
- @logoAnimationDelayCount = 0
- @logoAnimationOpacitySpeed = 0.5 #EDITABLE
- @logoAnimationOpacityValue = 0
- @logoAnimationScaleSpeed = 0.004 #EDITABLE
- @logoAnimationScaleValue = 1.8 #EDITABLE
- @mustAnimateLogo = true
- @logoSprite = Sprite.new
- @logoSprite.bitmap = Cache.title1("BackgroundLogo")
- @logoSprite.z = 1
- @logoSprite.ox = @logoSprite.bitmap.width / 2
- @logoSprite.oy = @logoSprite.bitmap.height / 2
- @logoSprite.x = @logoAnimationX + @logoSprite.bitmap.width / 2
- @logoSprite.y = @logoAnimationY + @logoSprite.bitmap.height / 2
- if !Scene_Title.no_animation
- @logoSprite.opacity = 0
- else
- @logoAnimationOpacityValue = 255
- @logoAnimationScaleValue = 1
- end
- @logoSprite.zoom_x = @logoAnimationScaleValue
- @logoSprite.zoom_y = @logoAnimationScaleValue
- end
- def initialize_options
- optionPaths = ["LoadGameText", "NewGameText", "SettingsText"] #EDITABLE
- @options = [method(:on_load_game), method(:on_new_game), method(:on_settings)] #EDITABLE
- @optionsAnimationX = 48 #EDITABLE
- @optionsAnimationY = 300 #EDITABLE
- @optionsAnimationDelay = 250 #EDITABLE
- @optionsAnimationDelayCount = 0
- @optionsAnimationOpacitySpeed = 3 #EDITABLE
- @optionsAnimationOpacityValue = 0
- @optionsAnimationDisplacementMax = 50 #EDITABLE
- speedBase = 1 #EDITABLE
- @optionsAnimationDisplacementSpeed = []
- @optionsAnimationDisplacementSpeedOffset = 10 #EDITABLE
- @optionSprites = []
- @optionsAnimationDisplacementValue = []
- @optionsAnimationDisplacementStep = []
- @optionsYSep = 16 #EDITABLE
- for i in 0...optionPaths.size
- optionSprite = Sprite.new
- optionSprite.bitmap = Cache.title1(optionPaths[i])
- optionSprite.x =
- optionSprite.y = @optionsAnimationY + i * @optionsYSep
- @optionSprites.push(optionSprite)
- @optionsAnimationDisplacementSpeed.push(speedBase * (@optionsAnimationDisplacementMax + i * @optionsAnimationDisplacementSpeedOffset).to_f / @optionsAnimationDisplacementMax)
- if !Scene_Title.no_animation
- @optionsAnimationDisplacementValue.push(@optionsAnimationX - @optionsAnimationDisplacementMax)
- optionSprite.opacity = 0
- else
- @optionsAnimationDisplacementValue.push(@optionsAnimationX + i * @optionsAnimationDisplacementSpeedOffset)
- end
- optionSprite.x = @optionsAnimationDisplacementValue[i]
- end
- if Scene_Title.no_animation
- @optionsAnimationOpacityValue = 255
- end
- @mustAnimateOptions = true
- end
- def initialize_cursor
- @cursorSprite = Sprite.new
- @cursorSprite.bitmap = Cache.title1("Cursor")
- @cursorXBase = @optionsAnimationX - (@cursorSprite.bitmap.width + 10)
- @cursorSprite.x = @cursorXBase
- @cursorSprite.y = (@optionsAnimationY) - 4
- @mustUpdateCursor = Scene_Title.no_animation
- @cursorXMovement = 0 #EDITABLE
- @cursorXMovementSpeed = 0.05 #EDITABLE
- @cursorXMovementValue = 0
- if !Scene_Title.no_animation
- @cursorSprite.visible = false
- end
- end
- def animate_background
- if @backgroundAnimationDelayCount < @backgroundAnimationDelay
- @backgroundAnimationDelayCount += 1
- return
- end
- @backgroundAnimationValue += @backgroundAnimationSpeed
- @bkgSprite.opacity = @backgroundAnimationValue
- if @backgroundAnimationValue >= 255
- @mustAnimateBackground = false
- end
- end
- def animate_title_text
- if @titleTextAnimationDelayCount < @titleTextAnimationDelay
- @titleTextAnimationDelayCount += 1
- return
- end
- @titleTextAnimationCropValue += @titleTextAnimationCropSpeed
- @titleTextSprite.src_rect.width = @titleTextAnimationCropValue
- @titleTextAnimationOpacityValue += @titleTextAnimationOpacitySpeed
- @titleTextSprite.opacity += @titleTextAnimationOpacityValue
- if @titleTextAnimationCropValue >= @titleTextAnimationCropMax and
- @titleTextAnimationOpacityValue >= 255
- @mustAnimateTitleText = false
- end
- end
- def animate_title_substring
- if @titleSubstringAnimationDelayCount < @titleSubstringAnimationDelay
- @titleSubstringAnimationDelayCount += 1
- return
- end
- if @titleSubstringAnimationPosValue2 > @titleSubstringAnimationX
- @titleSubstringAnimationCropValue += @titleSubstringAnimationCropDelta
- @titleSubstringAnimationPosValue1 -= @titleSubstringAnimationCropDelta / 2.0
- @titleSubstringAnimationPosValue2 -= @titleSubstringAnimationCropDelta / 2.0
- @titleSubstringSprite.src_rect.width = @titleSubstringAnimationCropValue
- @titleSubstringSprite.src_rect.x = @titleSubstringAnimationPosValue1
- @titleSubstringSprite.x = @titleSubstringAnimationPosValue2
- end
- @titleSubstringAnimationOpacityValue += @titleSubstringAnimationOpacitySpeed
- @titleSubstringSprite.opacity = @titleSubstringAnimationOpacityValue
- if @titleSubstringAnimationPosValue2 <= @titleSubstringAnimationX and
- @titleSubstringAnimationOpacityValue >= 255
- @mustAnimateTitleSubstring = false
- end
- end
- def animate_logo
- if @logoAnimationDelayCount < @logoAnimationDelay
- @logoAnimationDelayCount += 1
- return
- end
- if @logoAnimationScaleValue <= 1
- @logoAnimationScaleValue = 1
- @logoSprite.zoom_x = @logoAnimationScaleValue
- @logoSprite.zoom_y = @logoAnimationScaleValue
- else
- @logoAnimationScaleValue -= @logoAnimationScaleSpeed
- @logoSprite.zoom_x = @logoAnimationScaleValue
- @logoSprite.zoom_y = @logoAnimationScaleValue
- end
- @logoAnimationOpacityValue += @logoAnimationOpacitySpeed
- @logoSprite.opacity = @logoAnimationOpacityValue
- if @logoAnimationOpacityValue >= 255 and @logoAnimationScaleValue <= 1
- @mustAnimateLogo = false
- end
- end
- def animate_options
- if @optionsAnimationDelayCount < @optionsAnimationDelay
- @optionsAnimationDelayCount += 1
- return
- end
- @optionsAnimationOpacityValue += @optionsAnimationOpacitySpeed
- for i in 0...@optionSprites.size
- optionSprite = @optionSprites[i]
- optionSprite.opacity = @optionsAnimationOpacityValue
- if @optionsAnimationDisplacementValue[0] <= @optionsAnimationX
- @optionsAnimationDisplacementValue[i] += @optionsAnimationDisplacementSpeed[i]
- optionSprite.x = @optionsAnimationDisplacementValue[i]
- end
- end
- if @optionsAnimationOpacityValue >= 255 && @optionsAnimationDisplacementValue[0] >= @optionsAnimationX
- @mustAnimateOptions = false
- @cursorSprite.visible = true
- @mustUpdateCursor = true
- Scene_Title.no_animation = true
- end
- end
- def update_cursor
- @cursorSprite.x = @cursorXBase + Math.sin(@cursorXMovementValue) * @cursorXMovement + @optionsAnimationDisplacementSpeedOffset * @selectedOption
- @cursorXMovementValue += @cursorXMovementSpeed
- if @cursorXMovementValue >= Math::PI
- @cursorXMovementValue = 0
- end
- if Input.trigger?(Input::DOWN)
- @selectedOption += 1
- @selectedOption %= @options.size
- @cursorSprite.y = (@optionsAnimationY + @optionsYSep * @selectedOption) - 4
- Sound.play_cursor
- elsif Input.trigger?(Input::UP)
- @selectedOption += @options.size - 1
- @selectedOption %= @options.size
- @cursorSprite.y = (@optionsAnimationY + @optionsYSep * @selectedOption) - 4
- Sound.play_cursor
- end
- if Input.trigger?(Input::C)
- @options[@selectedOption].call
- end
- end
- def on_load_game
- SceneManager.call(Scene_Load)
- end
- def on_new_game
- DataManager.setup_new_game
- fadeout_all
- $game_map.autoplay
- SceneManager.goto(Scene_Map)
- end
- def on_settings
- SceneManager.goto(Scene_End) #EDITABLE
- end
- def play_title_music
- $data_system.title_bgm.play
- RPG::BGS.stop
- RPG::ME.stop
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment