Class: MovementComponent

Inherits:
Object
  • Object
show all
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

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

#eastObject



45
46
47
# File 'lib/delve/component/movement.rb', line 45

def east
  move 1, 0
end

#idObject



13
14
15
# File 'lib/delve/component/movement.rb', line 13

def id
  :movement
end

#northObject



41
42
43
# File 'lib/delve/component/movement.rb', line 41

def north
  move 0, -1
end

#north_eastObject

Raises:

  • (@@diagonal_error)


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_westObject

Raises:

  • (@@diagonal_error)


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

#southObject



49
50
51
# File 'lib/delve/component/movement.rb', line 49

def south
  move 0, 1
end

#south_eastObject

Raises:

  • (@@diagonal_error)


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_westObject

Raises:

  • (@@diagonal_error)


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

#styleObject



17
18
19
# File 'lib/delve/component/movement.rb', line 17

def style
  @style
end

#westObject



53
54
55
# File 'lib/delve/component/movement.rb', line 53

def west
  move -1, 0
end