All pastes #34755 Raw Edit

Miscellany

public text v1 · immutable
#34755 ·published 2005-12-23 23:30 UTC
rendered paste body
class Scene_Map
  alias prex_particles_s_map_update update
  def initialize
    @particles = []
  end
  def update
    for particle in @particles
      next unless particle
      particle.update
      particle.dispose if particle.particles.size <= 0
    end
    prex_particles_s_map_update
  end
  def add_effect(id)
    case id
    when 'test'
      @particles.push(ParticleEffect.new("smash", 50, 0, 4, 250, 32, 32, 10, 10))
    end
  end
end

class ParticleEffect
  attr_reader :particles
  def initialize(name, max, hue, slowdown, opacity, start_x, start_y, x_grav, y_grav)
    @name = name
    @max = max
    @hue = hue
    @slowdown = slowdown
    @hi_opacity = opacity
    @start_x = start_x
    @start_y = start_y
    @x_grav = x_grav
    @y_grav = y_grav
    @screen = [0, 0, 640, 480]
    @particles = []
    for i in 0...@max
      @particles[i] = Sprite.new
      @particles[i].bitmap = RPG::Cache.particles(@name, @hue)
      @particles[i].blend_type = 1
      @particles[i].y = $startingy
      @particles[i].x = $startingx
      @particles[i].opacity = @hi_opacity
    end
  end
  def update
    for i in 0...@particles.size
      if @particles[i].y <= @screen[1] or @particles[i].x <= @screen[0] or
          @particles[i].y >= @screen[3] or @particles[i].x >= @screen[2]
        @particles[i].dispose
        @particles[i] = nil
        @particles.compact
        next
      end
      @hue = 0 if @hue == 360
      @hue += 0.5
      @particles[i].bitmap = RPG::Cache.particle(@name, @hue)
      if rand(100) <= 70
        if @particles[i].opacity <= 0
          @particles[i].dispose
          @particles[i] = nil
          @particles.compact
          next
        end
        @particles[i].opacity -= rand(10)
        @particles[i].x = (@particles[i].x - (@x_grav / @slowdown) - rand(10))
        @particles[i].y = (@particles[i].y - (@y_grav / @slowdown) - rand(10))
      end
    end
  end
end

module RPG
  module Cache
    def self.particles(filename, hue)
      self.load_bitmap("Graphics/Particles/" + filename, hue)
    end
  end
end