Added the trunk/branches/tags directories at repository root, and moved previous root into trunk/

git-svn-id: https://sfml.svn.sourceforge.net/svnroot/sfml/trunk@1002 4e206d99-4929-0410-ac5d-dfc041789085
This commit is contained in:
laurentgom 2009-01-28 16:18:34 +00:00
commit 2f524481c1
974 changed files with 295448 additions and 0 deletions

83
ruby/RubySFML/RubySFML.rb Normal file
View file

@ -0,0 +1,83 @@
require "RubySFML.so"
module SFML
# A simple class for dealing with tiled sprites.
class TSprite < Sprite
# Use to set/get the tile column
attr_accessor :tx
# Use to set/get the tile row
attr_accessor :ty
# Pass in the image, the tile width, and the tile height.
def initialize(image, w, h)
super(image)
@tx, @ty, @tw, @th = 0, 0, w, h
setRotationCenter(@tw/2, @th/2)
end
# Overrides Sprite::render to call setSubRect() for you to choose a
# tile based on tx and ty before the sprite is rendered.
def render(win)
l, t = @tw*@tx, @th*@ty
setSubRect(IntRect.new(l, t, l+@tw, t+@th))
super(win)
end
end
# A simple class for dealing with sprites and 2D velocity/acceleration
class VSprite < TSprite
# Use to get/set the x component of the velocity vector
attr_accessor :vx
# Use to get/set the y component of the velocity vector
attr_accessor :vy
# Pass in the image, the tile width, and the tile height.
def initialize(image, w, h)
super(image, w, h)
@vx = @vy = 0.0
end
# Specify a number of degrees to rotate left
def turn_left(degrees) rotate(degrees); end
# Specify a number of degrees to rotate right
def turn_right(degrees) rotate(-degrees); end
# Returns the magnitude of the velocity vector
def speed
return Math.sqrt(@vx**2 + @vy**2)
end
# Returns the direction of the velocity vector
def direction
s = speed
return [@vx/s, @vy/s]
end
# Accelerates the sprite in the direction vector v by the amount "thrust"
def accelerate(v, thrust)
@vx += v[0] * thrust
@vy += v[1] * thrust
end
# Scales the speed component of the velocity
def scale_speed(amount)
@vx *= amount
@vy *= amount
end
# Moves the sprite in the direction vector v by the amound d
def move(v, d)
self.x += v[0] * d
self.y += v[1] * d
end
# Updates the sprite's position based on its velocity and its time slice
def update(time)
self.x += @vx * time
self.y += @vy * time
end
end
end