#!/usr/bin/env ruby
# $Revision: 1.20 $
# $Date: 2003/12/06 18:12:08 $
# $Author: jefus, mikeman2 $

class Room < Base
	attr_accessor :exits, :rid

	def initMobiles
		@config['@mobiles'].each{|cfile|
			mob = Mobile.new(CFile.new(cfile))
			@contents << mob
			mob.location = $system.rooms.fetch(@rid)
			mob.enterGame
			#Logger.log("initialized mobile:")
			#p mob
			$system.mobiles << mob
		} if @config['@mobiles']
	end

	def initialize(rid)
		begin
			@rid = rid
			super(CFile.new("system:rooms:#{rid}"))
			@exits = Array.new
			@config['@exits'].each{|cfile|
				@exits << Exit.new(cfile)
			} if @config['@exits'] #Gotcha
		rescue
			Logger.log("Error loading room #{rid}: #{$!})\n\n*******TRACE**********\n\n#{$@}")
		end
	end

	def save
		super
	end

	def puts(line, doer = self)
		@contents.each{|obj|
			if obj.kind_of?(Mobile)
				obj.puts(line) if obj.name != doer.name && obj.connection
			end
		}
	end

  def has_exit?(direction)
    @exits.each {|exit| return true if exit.direction == direction }
    return false
  end

  def exit(direction)
    @exits.each {|exit| return exit if exit.direction == direction }
    return nil
  end
end

class Exit
	attr_accessor :config, :filename, :direction, :name, :rid, :locked, :door

	def initialize(cfile)
		@filename = cfile
		@config = CFile.new(cfile)
		@config.attributes.each{|key, value|
			eval("#{key} = value")
		}
	end

	def to_s
		return @filename
	end

	def dir
		return @direction
	end

end
	
Logger.log("Room code initialized.")