#!/usr/bin/env ruby

require "starruby"
include StarRuby

class Sprite
  @@texture = Texture.load("images/star")
  MAX_X = 320 - @@texture.width
  MAX_Y = 240 - @@texture.height
  
  attr_reader :x
  attr_reader :y
  
  def initialize
    @x = rand(MAX_X)
    @y = rand(MAX_Y)
    @vx = rand(2) * 2 - 1
    @vy = rand(2) * 2 - 1
  end
  
  def texture
    @@texture
  end
  
  def update
    @x += @vx
    @y += @vy
    if @x < 0
      @x = -@x
      @vx = 1
    end
    if @y < 0
      @y = -@y
      @vy = 1
    end
    if MAX_X <= @x
      @x = -(@x - MAX_X) + MAX_X
      @vx = -1
    end
    if MAX_Y <= @y
      @y = -(@y - MAX_Y) + MAX_Y
      @vy = -1
    end
  end
end

sprites = Array.new(200) {Sprite.new}

Game.run(320, 240, :title => "Sprites (Click to speed up!)") do |game|
  break if Input.keys(:keyboard).include?(:escape)
  if Input.keys(:mouse).include?(:left)
    game.fps = 100000
  else
    game.fps = 30
  end
  sprites.each do |sprite|
    sprite.update
  end
  game.screen.clear
  sprites.each do |sprite|
    game.screen.render_texture(sprite.texture, sprite.x, sprite.y)
  end
end
