salamander 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,6 +5,9 @@ module Salamander
5
5
  require 'salamander/actor'
6
6
  require 'salamander/drawing'
7
7
 
8
+ # Initialize SDL and create a window
9
+ #
10
+ # Do not call more than once
8
11
  def self.setup (width, height)
9
12
  SDL.Init(SDL::INIT_VIDEO)
10
13
  at_exit { SDL.Quit }
@@ -1,5 +1,8 @@
1
1
  module Salamander
2
2
  class Actor
3
+ # Executes code within the context of an Actor.
4
+ #
5
+ # If given a filename, reads the contents and evaluates it.
3
6
  def self.draw (screen, filename=nil, &blk)
4
7
  actor = new(screen)
5
8
  if filename
@@ -19,40 +22,49 @@ module Salamander
19
22
  end
20
23
 
21
24
 
25
+ # Get the current position as an array.
22
26
  def position
23
27
  [@x, @y]
24
28
  end
25
29
 
30
+ # Move a given distance in the current direction.
26
31
  def move (distance)
27
32
  x = distance * Math.cos(angle) + @x
28
33
  y = distance * Math.sin(angle) + @y
29
34
  move_to(x, y)
30
35
  end
31
36
 
37
+ # Move to a specific point
32
38
  def move_to (x, y)
33
39
  @x, @y = x, y
34
40
  end
35
41
 
36
42
 
43
+ # The current angle, in radians.
37
44
  def angle
38
45
  @angle
39
46
  end
40
47
 
48
+ # Turn towards a new direction.
49
+ #
50
+ # 'theta' may be :right, :left, :around, or a number of radians. Positive amounts of radians turn right, while negative amounts go to the left.
41
51
  def turn (theta)
42
52
  theta = DIRECTIONS[theta] if theta.is_a? Symbol
43
53
  face(theta + angle)
44
54
  end
45
55
 
56
+ # Face a specific direction
57
+ #
58
+ # 'theta' may be :north, :northeast, :east, etc. or a number of radians. 0 radians points east, and increasing amounts go clockwise.
46
59
  def face (theta)
47
60
  theta = COMPASS[theta] if theta.is_a? Symbol
48
61
  @angle = theta % (2 * Math::PI)
49
62
  end
50
63
 
51
-
52
- def rgba
53
- @color
54
- end
55
-
64
+ # Gets or sets the current drawing color in numeric RGBA format.
65
+ #
66
+ # If 'color' is nil, gets the current color.
67
+ # Otherwise, 'color' must be in "#RRGGBB" notation.
56
68
  def color (color=nil)
57
69
  if not color then
58
70
  @color
@@ -68,6 +80,7 @@ module Salamander
68
80
  end
69
81
 
70
82
 
83
+ # The SDL surface being drawn to
71
84
  def surface
72
85
  @surface
73
86
  end
@@ -1,12 +1,14 @@
1
1
  module Salamander::Drawing
2
2
  module Line
3
- def draw_to (x2, y2)
3
+ # Draws a line from the current position to (x2, y2) in the current drawing color.
4
+ def line_to (x2, y2)
4
5
  x1, y1 = position
5
6
  move_to(x2, y2)
6
7
  SDL::Gfx.aalineColor(surface, x1.round, y1.round, x2.round, y2.round, color)
7
8
  end
8
9
 
9
- def draw (distance)
10
+ # Draws a line 'distance' pixels long from the current position in the current drawing color.
11
+ def line (distance)
10
12
  x1, y1 = position
11
13
  move distance
12
14
  x2, y2 = position
@@ -2,17 +2,21 @@ module Salamander::Drawing
2
2
  module Shapes
3
3
  include Line
4
4
 
5
+ # Draws a star-like shape with number 'points' of points.
6
+ #
7
+ # 'points' must be odd.
5
8
  def star (points, length)
6
9
  raise "The star must have an odd number of points" if points % 2 == 0
7
10
  points.times do
8
- draw length
11
+ line length
9
12
  turn (720.0/points).degrees
10
13
  end
11
14
  end
12
15
 
16
+ # Draws a regular polygon with 'sides' sides, each of length 'length'
13
17
  def polygon (sides, length)
14
18
  sides.times do
15
- draw length
19
+ line length
16
20
  turn (360.0/sides).degrees
17
21
  end
18
22
  end
@@ -1,11 +1,10 @@
1
1
  class Numeric
2
- # Input assumed to be radians
2
+ # Does nothing - input is assumed to be radians already
3
3
  def radians
4
4
  self
5
5
  end
6
6
 
7
- # Input assumed to be degrees
8
- # Convert to radians
7
+ # Converts from degrees to radians.
9
8
  def degrees
10
9
  self / 180.0 * Math::PI
11
10
  end
@@ -1,3 +1,3 @@
1
1
  module Salamander
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 4
9
- version: 0.0.4
8
+ - 5
9
+ version: 0.0.5
10
10
  platform: ruby
11
11
  authors:
12
12
  - Jonathan Castello