Advertisement
LiTTleDRAgo

[RGSS] DRG Fade Effect Room Ver 2.00

Nov 21st, 2012
293
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 9.31 KB | None | 0 0
  1. #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
  2. # DRG Fade Effect Room
  3. # Version: 2.25
  4. # Author : LiTTleDRAgo
  5. #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
  6.  
  7. module LiTTleDRAgo
  8.   FADE_ROOM = {
  9.     #-----------------------------------------------------------------
  10.     # Editable Section
  11.     #
  12.     # - Format :
  13.     # MAP_ID => "Command",
  14.     #
  15.     #   -or-
  16.     #
  17.     # MAP_ID => {
  18.     #             'ROOM_1' => "Command",
  19.     #             'ROOM_2' => "Command",
  20.     #             'ROOM_3' => "Command",
  21.     #           },
  22.     #-----------------------------------------------------------------
  23.          
  24.     1 => "
  25.         <Color = 40, 40, 40>
  26.         <Fade = 16, 25>
  27.         (0,0,9,7)
  28.         ",
  29.          
  30.     2 => {
  31.          'Left Room' => "
  32.                   <Color = 40, 40, 40>
  33.                   <Fade = 16, 25>
  34.                   (0,0,9,7)
  35.                   ",
  36.          'Right Room' => "
  37.                   <Color = 40, 40, 40>
  38.                   <Fade = 20, 15>
  39.                   ([9,0,19,7])
  40.                   ",
  41.          'Middle Room' => "
  42.                   <Color = 40, 40, 40>
  43.                   <Fade = 5, 8>
  44.                   (0,7,19,14),[0,7,19,14]
  45.                   ",
  46.          },
  47.     }
  48.     #-----------------------------------------------------------------
  49.     # - List of Command
  50.     # * Color config
  51.     #       <Color = r, g, b>    or    <Color = r, g, b, a>
  52.     # * Fade time (in frames)
  53.     #       <Fade = fade_in, fade_out>
  54.     # * Add mask
  55.     #       (x1,y1,x2,y2)
  56.     # * Hide mask in contact
  57.     #   hide if player in area between (x1,y1) (x2,y2)
  58.     #       (.....),[x1,y1,x2,y2]
  59.     # * Add mask + Hide in contact
  60.     #   equal to (x1,y1,x2,y2),[x1,y1,x2,y2]
  61.     #       ([x1,y1,x2,y2])
  62.     #-----------------------------------------------------------------
  63. end
  64. #==============================================================================
  65. # ** Spriteset_Map
  66. #------------------------------------------------------------------------------
  67. #  This class brings together map screen sprites, tilemaps, etc.
  68. #  It's used within the Scene_Map class.
  69. #==============================================================================
  70. class Spriteset_Map
  71.   #--------------------------------------------------------------------------
  72.   # * Alias Listing
  73.   #--------------------------------------------------------------------------
  74.   alias_method :drg132_update, :update if !method_defined?(:drg132_update)
  75.   alias_method :drg132_dispos, :dispose if !method_defined?(:drg132_dispos)
  76.   #--------------------------------------------------------------------------
  77.   # * Objects Initialization
  78.   #--------------------------------------------------------------------------
  79.   def init_fadesprite
  80.     @fade_sprite.each {|m| m[0].dispose } if @fade_sprite
  81.     @fade_sprite = []
  82.     @fade_time = [16,16]
  83.     @fade_oxy = [0,0]
  84.     @fade_picture = Bitmap.new(1,1)
  85.     @fade_effect = a = ($game_system.fade_room[$game_map.map_id] || '').dup
  86.     a = a.invert.keys.join if a && a.is_a?(Hash)
  87.     a.to_s.split(/\n/).to_a.each {|a| create_fade_effect(a)} if a
  88.     $game_map.events.keys.sort.each {|b|
  89.       $game_map.events[b].class.send(:attr_reader, :event)# {@event}
  90.       next unless $game_map.events[b].event.name =~ /ObjectMask/i
  91.       $game_map.events[b].list.each {|c| create_fade_effect(c.parameters[0])}}
  92.   end
  93.   #--------------------------------------------------------------------------
  94.   # * check_fade_parameter
  95.   #--------------------------------------------------------------------------
  96.   def create_fade_effect(parameter)
  97.     if parameter =~ /<Color = (\d+), (\d+), (\d+)>/i
  98.       j = [$1.to_i,$2.to_i,$3.to_i,255]
  99.     elsif parameter =~ /<Color = (\d+), (\d+), (\d+), (\d+)>/i
  100.       j = [$1.to_i,$2.to_i,$3.to_i,$4.to_i]
  101.     end
  102.     if parameter =~ /<Fade = (\d+), (\d+)>/i
  103.       @fade_time = [$1.to_i,$2.to_i]
  104.     end
  105.     if parameter =~ /<Move = (.+?), (.+?)>/i
  106.       @fade_oxy = [$1.to_i,$2.to_i]
  107.     end
  108.     if parameter =~ /<Picture = (.+?), (.+?)>/i
  109.       b = ["#{$1}","#{$2}"]
  110.       b = (b == ['0']*2) ? [1,1] : ["Graphics/#{b.join('/')}"]
  111.       @fade_picture = Bitmap.new(*b)
  112.     end
  113.     @fade_color = Color.new(*j) if !j.nil? && j[0..2] != [0]*3
  114.     if parameter =~ /\((.+?),(.+?),(\d+),(\d+)\)/
  115.       a = [$1.to_i,$2.to_i,$3.to_i,$4.to_i]
  116.       parameter =~ /\[(\d+),(\d+),(\d+),(\d+)\]/
  117.       e = [$1.to_i,$2.to_i,$3.to_i,$4.to_i]
  118.     elsif parameter =~ /\(\[(\d+),(\d+),(\d+),(\d+)\]\)/
  119.       a = e = [$1.to_i,$2.to_i,$3.to_i,$4.to_i]
  120.     elsif parameter =~ /\(\[(\d+),(\d+)\]\)/
  121.       a = e = [$1.to_i,$2.to_i]
  122.       a = e = [a,e].flatten
  123.     end
  124.     return unless !a.nil? && a.flatten[0].is_a?(Numeric) && @fade_color
  125.     sw = [a[2]-a[0].abs, a[3]-a[1].abs]
  126.     sa = [sw[0] > 0 ? 16 : 0 , sw[1] > 0 ? 16 : 0]
  127.     x,y = [a[0]*32+sa[0],0].max, [a[1]*32+sa[1],0].max
  128.     w,h = [sw[0],1].max*32,[sw[1],1].max*32
  129.     s = Sprite.new
  130.     s.bitmap = Bitmap.new(w,h)
  131.     s.bitmap.fill_rect(0,0,s.bitmap.width,s.bitmap.height,@fade_color)
  132.     s.bitmap.stretch_blt(s.bitmap.rect, @fade_picture, @fade_picture.rect)
  133.     s.x, s.y, s.z, tc = x, y, 998, Color.new(*[0]*4)
  134.     if parameter =~ /<(\d+),(\d+),(\d+),(\d+)>/
  135.       a,b,c,d = $1.to_i,$2.to_i,$3.to_i,$4.to_i
  136.       s.bitmap.fill_rect(a*32-s.x+16,b*32-s.y+16,(c-a)*32,(d-b)*32,tc)
  137.     end
  138.     mask = [s, e, [], fade_coord_player]
  139.     if parameter =~ /{(\d+),(\d+),(\d+),(\d+)}/
  140.       mask[2] = [$1.to_i, $2.to_i, $3.to_i, $4.to_i]
  141.     end
  142.     if parameter =~ /<{(\d+),(\d+),(\d+),(\d+)}>/
  143.       a,b,c,d = $1.to_i,$2.to_i,$3.to_i,$4.to_i
  144.       s.bitmap.fill_rect(a*32-s.x+16,b*32-s.y+16,(c-a)*32,(d-b)*32,tc)
  145.       mask[2] = [a,b,c,d]
  146.     end
  147.     mask[0].ox, mask[0].oy = $game_map.display_x/4, $game_map.display_y/4
  148.     mask[4..6] = (mask[1][0]..mask[1][2]),(mask[1][1]..mask[1][3]),@fade_time
  149.     mask[7..11] = s.bitmap.dup,0,0,@fade_oxy[0],@fade_oxy[1]
  150.     mask[0].opacity =  mask[4] === mask[3][0] && mask[5] === mask[3][1] &&
  151.         (mask[2].empty? || !((mask[2][0]..mask[2][2]) === mask[3][0]&&
  152.         (mask[2][1]..mask[2][3]) === mask[3][1])) ? 0 : 255
  153.     @fade_sprite << mask
  154.   end
  155.   #--------------------------------------------------------------------------
  156.   # * Frame Update
  157.   #--------------------------------------------------------------------------
  158.   def update
  159.     $game_system.init_fade_room if $game_system.fade_room.nil?
  160.     ($game_system.fade_room[$game_map.map_id] || '') != @fade_effect ||
  161.     @fade_sprite.nil? ? init_fadesprite : @fade_sprite.each {|mask|
  162.       mask[0].ox, mask[0].oy = $game_map.display_x/4, $game_map.display_y/4
  163.       a = fade_coord_player
  164.       a = [mask[4] === a[0] && mask[5] === a[1] &&
  165.           (mask[2].empty? || !((mask[2][0]..mask[2][2]) === a[0] &&
  166.           (mask[2][1]..mask[2][3]) === a[1])), mask[0].opacity,mask[6]].flatten
  167.       mask[0].opacity = a[0] ? [a[1] - a[3],0].max : [a[1] + a[2], 255].min
  168.       next if mask[10] == 0 && mask[11] == 0
  169.       w,h = mask[0].bitmap.width, mask[0].bitmap.height
  170.       mask[0].bitmap.blt(mask[8],mask[9], mask[7],  mask[7].rect )
  171.       mask[0].bitmap.blt(mask[8],h+mask[9],  mask[7],  mask[7].rect )
  172.       mask[0].bitmap.blt(mask[8],-h+mask[9],  mask[7],  mask[7].rect )
  173.       mask[0].bitmap.blt(w+mask[8],mask[9],  mask[7],  mask[7].rect )
  174.       mask[0].bitmap.blt(-w+mask[8],mask[9],  mask[7],  mask[7].rect )
  175.       mask[0].bitmap.blt(w+mask[8],h+mask[9],  mask[7],  mask[7].rect )
  176.       mask[0].bitmap.blt(w+mask[8],-h+mask[9],  mask[7],  mask[7].rect )
  177.       mask[0].bitmap.blt(-w+mask[8],h+mask[9],  mask[7],  mask[7].rect )
  178.       mask[0].bitmap.blt(-w+mask[8],-h+mask[9],  mask[7],  mask[7].rect )
  179.       mask[8] = mask[8] >= w || mask[8] <= -w ? 0 : mask[8] + mask[10]
  180.       mask[9] = mask[9] >= h || mask[9] <= -h ? 0 : mask[9] + mask[11]      }
  181.     drg132_update  
  182.   end
  183.   #--------------------------------------------------------------------------
  184.   # * Frame Dispose
  185.   #--------------------------------------------------------------------------
  186.   def dispose
  187.     @fade_sprite.each {|mask| mask[0].dispose } if @fade_sprite
  188.     drg132_dispos  
  189.   end
  190.   #--------------------------------------------------------------------------
  191.   # * Fade Coord Player
  192.   #--------------------------------------------------------------------------
  193.   def fade_coord_player
  194.     return [$game_player.real_x/128, $game_player.real_y/128]
  195.     return [$game_player.x, $game_player.y]
  196.   end
  197. end
  198.  
  199. #==============================================================================
  200. # ** Game_System
  201. #------------------------------------------------------------------------------
  202. #  This class handles data surrounding the system.
  203. #  Refer to "$game_system" for the instance of this class.
  204. #==============================================================================
  205. class Game_System
  206.   #--------------------------------------------------------------------------
  207.   # * init_fade_room
  208.   #--------------------------------------------------------------------------
  209.   def init_fade_room() @fade_room = LiTTleDRAgo::FADE_ROOM end
  210.   #--------------------------------------------------------------------------
  211.   # * Public Instance Variables
  212.   #--------------------------------------------------------------------------
  213.   attr_accessor :fade_room
  214. end
  215.  
  216. $drg_fade_room = true
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement