Class: MovementComponent
- Inherits:
-
Object
- Object
- MovementComponent
- Defined in:
- lib/delve/component/movement.rb
Constant Summary collapse
- @@styles =
[:fourway, :eightway]
- @@diagonal_error =
'Style is not sufficient to move diagonally'
Instance Method Summary collapse
- #east ⇒ Object
- #id ⇒ Object
-
#initialize(parent, movement_style = :fourway) ⇒ MovementComponent
constructor
A new instance of MovementComponent.
- #north ⇒ Object
- #north_east ⇒ Object
- #north_west ⇒ Object
- #south ⇒ Object
- #south_east ⇒ Object
- #south_west ⇒ Object
- #style ⇒ Object
- #west ⇒ Object
Constructor Details
#initialize(parent, movement_style = :fourway) ⇒ MovementComponent
Returns a new instance of MovementComponent.
6 7 8 9 10 11 |
# File 'lib/delve/component/movement.rb', line 6 def initialize(parent, movement_style=:fourway) raise 'Cannot create movement component when parent is nil' unless parent @parent = parent @style = movement_style || :fourway raise 'Cannot create movement component with unknown style' unless @@styles.include?(@style) end |
Instance Method Details
#east ⇒ Object
45 46 47 |
# File 'lib/delve/component/movement.rb', line 45 def east move 1, 0 end |
#id ⇒ Object
13 14 15 |
# File 'lib/delve/component/movement.rb', line 13 def id :movement end |
#north ⇒ Object
41 42 43 |
# File 'lib/delve/component/movement.rb', line 41 def north move 0, -1 end |
#north_east ⇒ Object
26 27 28 29 |
# File 'lib/delve/component/movement.rb', line 26 def north_east raise @@diagonal_error unless diagonal_movement_is_valid move 1, -1 end |
#north_west ⇒ Object
21 22 23 24 |
# File 'lib/delve/component/movement.rb', line 21 def north_west raise @@diagonal_error unless diagonal_movement_is_valid move -1, -1 end |
#south ⇒ Object
49 50 51 |
# File 'lib/delve/component/movement.rb', line 49 def south move 0, 1 end |
#south_east ⇒ Object
36 37 38 39 |
# File 'lib/delve/component/movement.rb', line 36 def south_east raise @@diagonal_error unless diagonal_movement_is_valid move 1, 1 end |
#south_west ⇒ Object
31 32 33 34 |
# File 'lib/delve/component/movement.rb', line 31 def south_west raise @@diagonal_error unless diagonal_movement_is_valid move -1, 1 end |
#style ⇒ Object
17 18 19 |
# File 'lib/delve/component/movement.rb', line 17 def style @style end |
#west ⇒ Object
53 54 55 |
# File 'lib/delve/component/movement.rb', line 53 def west move -1, 0 end |