Class: Gamefic::Entity

Inherits:
Object
  • Object
show all
Extended by:
Serialized::ClassMethods
Includes:
Describable, Grammar::WordAdapter, Node, Serialized
Defined in:
lib/gamefic/entity.rb

Direct Known Subclasses

Character

Instance Attribute Summary collapse

Attributes included from Grammar::Plural

#plural

Attributes included from Grammar::Person

#person

Attributes included from Grammar::Gender

#gender

Attributes included from Describable

#definite_article, #indefinite_article, #name, #synonyms

Instance Method Summary collapse

Methods included from Serialized::ClassMethods

serialize, serializer

Methods included from Grammar::WordAdapter

#contract, #pronoun, #verb

Methods included from Grammar::Plural

#plural?

Methods included from Serialized

included, #serialized_attributes

Methods included from Describable

default_description, default_description=, #definitely, #description, #description=, #has_description?, #indefinitely, #keywords, #proper_named=, #proper_named?, #to_s

Methods included from Node

#children, #flatten, #parent

Constructor Details

#initialize(args = {}) {|_self| ... } ⇒ Entity

Returns a new instance of Entity.

Yields:

  • (_self)

Yield Parameters:



17
18
19
20
21
22
23
24
25
# File 'lib/gamefic/entity.rb', line 17

def initialize(args = {})
  pre_initialize
  args.each { |key, value|
    send "#{key}=", value
  }
  @session = Hash.new
  yield self if block_given?
  post_initialize
end

Instance Attribute Details

#sessionObject (readonly)

Returns the value of attribute session.



14
15
16
# File 'lib/gamefic/entity.rb', line 14

def session
  @session
end

Instance Method Details

#[](key) ⇒ Object

Get an extended property.

Parameters:

  • key (Symbol)

    The property’s name.



71
72
73
# File 'lib/gamefic/entity.rb', line 71

def [](key)
  session[key]
end

#[]=(key, value) ⇒ Object

Set an extended property.

Parameters:

  • key (Symbol)

    The property’s name.

  • value

    The value to set.



79
80
81
# File 'lib/gamefic/entity.rb', line 79

def []=(key, value)
  session[key] = value
end

#parent=(node) ⇒ Object

Set the Entity’s parent.

Parameters:

  • node (Entity)

    The new parent.



61
62
63
64
65
66
# File 'lib/gamefic/entity.rb', line 61

def parent=(node)
  if node != nil and node.kind_of?(Entity) == false
    raise "Entity's parent must be an Entity"
  end
  super
end

#post_initializeObject



38
39
40
# File 'lib/gamefic/entity.rb', line 38

def post_initialize
  # raise NotImplementedError, "#{self.class} must implement post_initialize"

end

#pre_initializeObject



34
35
36
# File 'lib/gamefic/entity.rb', line 34

def pre_initialize
  # raise NotImplementedError, "#{self.class} must implement post_initialize"    

end

#stream(message) ⇒ Object



47
48
49
# File 'lib/gamefic/entity.rb', line 47

def stream(message)
  # Unlike tell, this method sends raw data without formatting.

end

#tell(message) ⇒ Object



42
43
44
45
# File 'lib/gamefic/entity.rb', line 42

def tell(message)
  #TODO: Should this even be here? In all likelihood, only Characters receive tells, right?

  #TODO: On second thought, it might be interesting to see logs from an npc point of view.

end

#uidObject



27
28
29
30
31
32
# File 'lib/gamefic/entity.rb', line 27

def uid
  if @uid == nil
    @uid = self.object_id.to_s
  end
  @uid
end

#updateObject

Execute the entity’s on_update blocks. This method is typically called by the Engine that manages game execution. The base method does nothing. Subclasses can override it.



55
56
# File 'lib/gamefic/entity.rb', line 55

def update
end