Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module FrameBuffer
- def self.start(frames = 1, viewport_z = 10000)
- dispose unless disposed?
- this_frame = Graphics.snap_to_bitmap
- @buffer = []
- @viewport = Viewport.new
- @viewport.z = viewport_z
- frames.times do
- sprite = Sprite.new(@viewport)
- sprite.bitmap = this_frame.clone
- sprite.x = Graphics.width / 2
- sprite.y = Graphics.height / 2
- sprite.ox = Graphics.width / 2
- sprite.oy = Graphics.height / 2
- @buffer.push(sprite)
- end
- this_frame.dispose
- end
- def self.dispose
- return if disposed?
- @buffer.each {|sprite| sprite.dispose}
- @viewport.dispose if @viewport
- @buffer = nil
- end
- def self.disposed?
- !@buffer
- end
- def self.cycle
- return if disposed?
- @buffer[-1].bitmap.dispose
- @buffer.each_index do |i|
- next if i == 0
- @buffer[i].bitmap = @buffer[i - 1].bitmap
- end
- @buffer[0].bitmap = Graphics.snap_to_bitmap
- end
- def self.refresh
- this_frame = Graphics.snap_to_bitmap
- @buffer.each do |sprite|
- sprite.bitmap.dispose
- sprite.bitmap = this_frame.clone
- end
- this_frame.dispose
- end
- def self.[](num)
- return nil if disposed?
- return @buffer[num]
- end
- end
- class Scene_Map < Scene_Base
- def pre_battle_scene
- Graphics.update
- Graphics.freeze
- FrameBuffer.start(3)
- FrameBuffer[0].z = 0
- FrameBuffer[0].zoom_x = 1
- FrameBuffer[0].zoom_y = 1
- FrameBuffer[0].opacity = 235
- FrameBuffer[0].angle = 0
- FrameBuffer[0].blend_type = 0
- FrameBuffer[1].z = 1
- FrameBuffer[1].zoom_x = 1.01
- FrameBuffer[1].zoom_y = 1.01
- FrameBuffer[1].opacity = 128
- FrameBuffer[1].angle = 359
- FrameBuffer[1].blend_type = 0
- FrameBuffer[2].z = 2
- FrameBuffer[2].zoom_x = 0.8
- FrameBuffer[2].zoom_y = 0.9
- FrameBuffer[2].opacity = 12
- FrameBuffer[2].angle = 12
- FrameBuffer[2].blend_type = 1
- @spriteset.dispose_characters
- BattleManager.save_bgm_and_bgs
- Sound.play_battle_start
- end
- def perform_battle_transition
- Graphics.transition(1)
- (0..60).each do |i|
- Graphics.brightness = 255
- FrameBuffer.refresh
- Graphics.frame_reset
- Graphics.brightness = 255 - (255 * ((i - 40) / 20.0)) if i > 40
- Graphics.update
- end
- FrameBuffer.dispose
- Graphics.freeze
- BattleManager.play_battle_bgm
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment