Class: HallwaysList
- Inherits:
-
Object
- Object
- HallwaysList
- Defined in:
- lib/hallways/hallways_list.rb
Instance Method Summary collapse
- #connect_rooms(r1, r2, hallway) ⇒ Object
- #connected_hallways(room) ⇒ Object
- #directions(room) ⇒ Object
- #disable_hallways!(room_key) ⇒ Object
- #draw_from_base_room(gc) ⇒ Object
- #draw_hallways_connected_to_given_room_at_origin(gc, room) ⇒ Object
- #from_json(data, rooms) ⇒ Object
- #get_room_id_from_direction(room, direction) ⇒ Object
-
#initialize ⇒ HallwaysList
constructor
A new instance of HallwaysList.
- #to_hash ⇒ Object
Constructor Details
#initialize ⇒ HallwaysList
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_hash ⇒ Object
55 56 57 |
# File 'lib/hallways/hallways_list.rb', line 55 def to_hash @hallways.values.map{ |v| v.to_hash } end |