Class: HallwaysList

Inherits:
Object
  • Object
show all
Defined in:
lib/hallways/hallways_list.rb

Instance Method Summary collapse

Constructor Details

#initializeHallwaysList

Returns a new instance of HallwaysList.



3
4
5
# File 'lib/hallways/hallways_list.rb', line 3

def initialize
  @hallways = {}
end

Instance Method Details

#connect_rooms(r1, r2, hallway) ⇒ Object



7
8
9
10
11
# File 'lib/hallways/hallways_list.rb', line 7

def connect_rooms( r1, r2, hallway )
  @hallways[ [ r1.top_left_array, r2.top_left_array ] ] = hallway
  hallway.hallway_id = [ r1.top_left_array, r2.top_left_array ]
  hallway.set_draw_base_room( r1 )
end

#connected_hallways(room) ⇒ Object



23
24
25
26
27
28
29
30
# File 'lib/hallways/hallways_list.rb', line 23

def connected_hallways( room )
  hallways = {}
  @hallways.each_pair do |rooms_keys, hallway|
    d, h = hallway.get_direction_array( rooms_keys, room )
    hallways[d] = h if d
  end
  hallways
end

#directions(room) ⇒ Object



32
33
34
# File 'lib/hallways/hallways_list.rb', line 32

def directions( room )
  connected_hallways(room).keys.sort
end

#disable_hallways!(room_key) ⇒ Object



47
48
49
50
51
52
53
# File 'lib/hallways/hallways_list.rb', line 47

def disable_hallways!( room_key )
  @hallways.each_pair do |rooms_keys, hallway|
    if rooms_keys[0] == room_key || rooms_keys[1] == room_key
      hallway.disable!
    end
  end
end

#draw_from_base_room(gc) ⇒ Object



36
37
38
# File 'lib/hallways/hallways_list.rb', line 36

def draw_from_base_room( gc )
  @hallways.each_pair{ |_, h| h.draw_from_base_room( gc ) unless h.disabled }
end

#draw_hallways_connected_to_given_room_at_origin(gc, room) ⇒ Object



40
41
42
43
44
45
# File 'lib/hallways/hallways_list.rb', line 40

def draw_hallways_connected_to_given_room_at_origin( gc, room )
  connections = connected_hallways( room )
  connections.each do |direction, hallway|
    hallway.draw_from_given_room( gc, room, direction )
  end
end

#from_json(data, rooms) ⇒ Object



59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/hallways/hallways_list.rb', line 59

def from_json( data, rooms )
  data.each do |hallway_data|
    # pp hallway_data
    r1 = rooms[hallway_data['hallway_id'][0]]
    r2 = rooms[hallway_data['hallway_id'][1]]
    if r1 && r2
      hallway = Object.const_get(hallway_data['klass']).new
      hallway.disable! if hallway_data['disabled']
      hallway.set_draw_base_room(r1)
      connect_rooms( r1, r2, hallway )
    end
  end
end

#get_room_id_from_direction(room, direction) ⇒ Object



13
14
15
16
17
18
19
20
21
# File 'lib/hallways/hallways_list.rb', line 13

def get_room_id_from_direction( room, direction )
  connections = connected_hallways( room )
  # puts "Connected hallways = " + connections.map{ |k, h| [ k, h.hallway_id ] }.to_s
  connected_hallway = connections[direction]
  unless connected_hallway
    raise "Can't find a connected hallway. direction = #{direction.inspect}, connections = #{connections.inspect}"
  end
  connected_hallway.get_connected_room(direction)
end

#to_hashObject



55
56
57
# File 'lib/hallways/hallways_list.rb', line 55

def to_hash
  @hallways.values.map{ |v| v.to_hash }
end