class Degica::Person

Public Class Methods

new() click to toggle source
# File lib/degica/objects/people/person.rb, line 3
def initialize
  @talked = false
  @inventory = InventoryCollection.new
end

Public Instance Methods

actions() click to toggle source
# File lib/degica/objects/people/person.rb, line 20
def actions
  [Action.new(:talk, self), Action.new(:give, self)]
end
describe() click to toggle source
# File lib/degica/objects/people/person.rb, line 52
def describe
  desc = []
  desc << description
  desc << "Maybe you should (talk) with him.".highlight unless @talked
  desc.join("\n")
end
description() click to toggle source
# File lib/degica/objects/people/person.rb, line 16
def description
  raise NotImplementedError
end
give(object = nil) click to toggle source
# File lib/degica/objects/people/person.rb, line 36
def give(object = nil)
  if object.nil?
    return "What do you want to give?"
  elsif !object.is_a?(::Degica::Object)
    return "\"#{object}\" is not in your (inventory).".highlight
  end

  if object.collection.delete(object)
    @inventory << object
    puts "You gave the (#{object.name}) to #{name}.".highlight
  else
    puts "You don't have any #{object.name}."
  end
  NilActionable.new
end
inspect() click to toggle source
# File lib/degica/objects/people/person.rb, line 24
def inspect
  "#{name.capitalize} says: \"Don't inspect me!\""
end
name() click to toggle source
# File lib/degica/objects/people/person.rb, line 8
def name
  raise NotImplementedError
end
quote() click to toggle source
# File lib/degica/objects/people/person.rb, line 12
def quote
  raise NotImplementedError
end
talk() click to toggle source
# File lib/degica/objects/people/person.rb, line 28
def talk
  @talked = true
  desc = []
  desc << "#{name} says:".capitalize
  desc << '"' + quote + '"'
  desc.join(" ")
end

Private Instance Methods

holding?(name) click to toggle source
# File lib/degica/objects/people/person.rb, line 61
def holding?(name)
  !!@inventory.find { |item| item.name == name }
end