# module that keeps track of the state of the game
# Just so no global variables are needed...
module State
  class << self
    def prepare_registry
      @registry ||= {}
    end

    def get(name)
      prepare_registry
      return @registry[name.to_sym]
    end

    def put(name, value)
      prepare_registry
      return @registry[name.to_sym] = value
    end


    def [](name)
      prepare_registry
      return get(name)
    end

    def []=(name, value)
      prepare_registry
      return put(name, value)
    end

    def method_missing(name, *args)
      names = name.to_s
      if names[-1] == '='
        self.put(names[0, names.size - 1], *args)
      else
        self.get(names)
      end
    end

  end
end