lib/IFMapper/Room.rb in ifmapper-0.8.1 vs lib/IFMapper/Room.rb in ifmapper-0.8.5
- old
+ new
@@ -1,16 +1,17 @@
#
# Class used to represent a Room or Location in a Map.
#
class Room
- attr_accessor :name
- attr_accessor :objects
- attr_accessor :tasks
- attr_reader :exits
- attr_accessor :darkness
- attr_accessor :x, :y
+ attr_accessor :name # Name of room
+ attr_accessor :objects # Objects found in room
+ attr_accessor :tasks # Tasks that need to be performed in room
+ attr_reader :exits # An array of 8 possible exits in room
+ attr_accessor :darkness # Is room in darkness?
+ attr_accessor :x, :y # Room location in grid
+ attr_accessor :desc # Room description
DIRECTIONS = [
'n',
'ne',
'e',
@@ -30,10 +31,25 @@
5 => [ -1, 1 ],
6 => [ -1, 0 ],
7 => [ -1, -1 ]
}
+ def marshal_load(vars)
+ @name = vars.shift
+ @objects = vars.shift
+ @tasks = vars.shift
+ @exits = vars.shift
+ @darkness = vars.shift
+ @x = vars.shift
+ @y = vars.shift
+ @desc = vars.shift if not vars.empty? and vars[0].kind_of?(String)
+ end
+
+ def marshal_dump
+ [ @name, @objects, @tasks, @exits, @darkness, @x, @y, @desc ]
+ end
+
def [](dir)
return @exits[dir]
end
def []=(dir, connection)
@@ -99,9 +115,10 @@
def copy(b)
@name = b.name
@objects = b.objects
@tasks = b.tasks
@darkness = b.darkness
+ @desc = b.desc
end
def initialize(x, y, name = 'Room')
@exits = Array.new( DIRECTIONS.size )