Advertisement
Guest User

Sprite_WaterReflection

a guest
Feb 18th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 2.63 KB | None | 0 0
  1. class Sprite_Reflection
  2.   attr_reader :visible
  3.   attr_accessor :event
  4.  
  5.   def initialize(sprite,event,viewport=nil)
  6.     @rsprite  = sprite
  7.     @sprite   = nil
  8.     @event    = event
  9.     @height   = 0
  10.     @fixedheight = false
  11.     if @event && @event!=$game_player
  12.       if @event.name[/Reflection\((\d+)\)/]
  13.         @height = $~[1].to_i || 0
  14.         @fixedheight = true
  15.       end
  16.     end
  17.     @viewport = viewport
  18.     @disposed = false
  19.     update
  20.   end
  21.  
  22.   def dispose
  23.     if !@disposed
  24.       @sprite.dispose if @sprite
  25.       @sprite   = nil
  26.       @disposed = true
  27.     end
  28.   end
  29.  
  30.   def disposed?
  31.     @disposed
  32.   end
  33.  
  34.   def visible=(value)
  35.     @visible = value
  36.     @sprite.visible = value if @sprite && !@sprite.disposed?
  37.   end
  38.  
  39.   def update
  40.     if $game_switches[98]==false
  41.       return if disposed?
  42.       shouldShow = @rsprite.visible
  43.       if !shouldShow
  44.       # Just-in-time disposal of sprite
  45.         if @sprite
  46.           @sprite.dispose
  47.           @sprite = nil
  48.         end
  49.         return
  50.       end
  51.     # Just-in-time creation of sprite
  52.       @sprite = Sprite.new(@viewport) if !@sprite
  53.       if @sprite
  54.         x = @rsprite.x-@rsprite.ox
  55.         y = @rsprite.y-@rsprite.oy
  56.         y -= 32 if @rsprite.character.character_name[/offset/]
  57.         @height = $PokemonGlobal.bridge if !@fixedheight
  58.         y += @height*16
  59.         width  = @rsprite.src_rect.width
  60.         height = @rsprite.src_rect.height
  61.         @sprite.x        = x+width/2
  62.         @sprite.y        = y+height+height/2
  63.         @sprite.ox       = width/2
  64.         @sprite.oy       = height/2-2   # Hard-coded 2 pixel shift up
  65.         @sprite.oy       -= @rsprite.character.bob_height*2
  66.         @sprite.z        = -50   # Still water is -100, map is 0 and above
  67.         @sprite.zoom_x   = @rsprite.zoom_x
  68.         @sprite.zoom_y   = @rsprite.zoom_y
  69.         frame = (Graphics.frame_count%40)/10
  70.         case frame
  71.         when 1; @sprite.zoom_x *= 0.95
  72.         when 3; @sprite.zoom_x *= 1.05
  73.         else; @sprite.zoom_x *= 1.0
  74.         end
  75.         @sprite.angle    = 180.0
  76.         @sprite.mirror   = true
  77.         @sprite.bitmap   = @rsprite.bitmap
  78.         @sprite.tone     = @rsprite.tone
  79.         if @height>0
  80.           @sprite.color   = Color.new(48,96,160,255) # Dark still water
  81.           @sprite.opacity = @rsprite.opacity
  82.           @sprite.visible = !ENABLESHADING # Can't time-tone a colored sprite
  83.         else
  84.           @sprite.color   = Color.new(224,224,224,96)
  85.           @sprite.opacity = @rsprite.opacity*3/4
  86.           @sprite.visible = true
  87.         end
  88.         @sprite.src_rect = @rsprite.src_rect
  89.       end
  90.     end
  91.   end
  92. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement