All pastes #209044 Raw Edit

Stuff

public ruby v1 · immutable
#209044 ·published 2006-10-18 23:56 UTC
rendered paste body
#------------------------------------------------------------------------------# * Pictures anchored to Map - By Prexus#------------------------------------------------------------------------------# To create an anchored image, use the Call Script function:#   Call Script: $game_screen.layers[ID].show(fileName, xPos, yPos, opacity)# where fileName is the name of the picture (in the pictures folder)# xPos is the position in tiles# yPos is the position in tiles# opacity is a number between 0-255## Other methods:## .move(duration, xPos, yPos, opacity)#   moves the sprite to a new xPos and yPos and allows you to fade the image.# duration is in frames## .rotate(speed)#   rotates the sprite around its xPos/yPos# speed is in frames## .erase#   removes the sprite from the screen.#------------------------------------------------------------------------------class Game_Layer  attr_reader   :number  attr_reader   :name  attr_reader   :x  attr_reader   :y  attr_reader   :opacity  attr_reader   :angle  def initialize(number)    @number = number    @name = ""    @x = 0.0    @y = 0.0    @opacity = 255.0    @duration = 0    @target_x = @x    @target_y = @y    @target_opacity = @opacity    @angle = 0    @rotate_speed = 0  end  def show(name, x, y, opacity)    @name = name    @x = x.to_f    @y = y.to_f    @opacity = opacity.to_f    @duration = 0    @target_x = @x    @target_y = @y    @target_opacity = @opacity    @angle = 0    @rotate_speed = 0  end  def move(duration, x, y, opacity)    @duration = duration    @target_x = x.to_f    @target_y = y.to_f    @target_opacity = opacity.to_f  end  def rotate(speed)    @rotate_speed = speed  end  def erase    @name = ""  end  def update    if @duration >= 1      d = @duration      @x = (@x * (d - 1) + @target_x) / d      @y = (@y * (d - 1) + @target_y) / d      @opacity = (@opacity * (d - 1) + @target_opacity) / d      @duration -= 1    end    if @rotate_speed != 0      @angle += @rotate_speed / 2.0      while @angle < 0        @angle += 360      end      @angle %= 360    end  endendclass Game_Screen  attr_reader :layers  alias prex_g_screen_initialize initialize  def initialize    prex_g_screen_initialize    @layers = [nil]    for i in 1..50      @layers.push(Game_Layer.new(i))    end  end  alias prex_g_screen_update update  def update    prex_g_screen_update    for i in 1..50      @layers[i].update    end  endendclass Sprite_Layer < Sprite  def initialize(viewport, picture)    super(viewport)    @picture = picture    update  end  def dispose    if self.bitmap != nil      self.bitmap.dispose    end    super  end  def update    super    if @picture_name != @picture.name      @picture_name = @picture.name      if @picture_name != ""        self.bitmap = RPG::Cache.picture(@picture_name)      end    end    if @picture_name == ""      self.visible = false      return    end    self.visible = true    self.x = (-0.25 * $game_map.display_x) + (@picture.x * 32) - 5    self.y = (-0.25 * $game_map.display_y) + (@picture.y * 32) - 15    self.z = @picture.number    self.opacity = @picture.opacity    self.angle = @picture.angle  endendclass Spriteset_Map  alias prex_sset_map_initialize initialize  def initialize    prex_sset_map_initialize    @layer_sprites = []    for i in 1..50      @layer_sprites.push(Sprite_Layer.new(@viewport2, $game_screen.layers[i]))    end    update  end  alias prex_sset_map_dispose dispose  def dispose    prex_sset_map_dispose    for layer in @layer_sprites      layer.dispose    end  end  alias prex_sset_map_update update  def update    prex_sset_map_update    if @layer_sprites      for layer in @layer_sprites        layer.update      end    end  endend