Module: Gamefic::Plot::Entities
- Defined in:
- lib/gamefic/plot/entities.rb
Instance Method Summary collapse
- #destroy(entity) ⇒ Object
- #entities ⇒ Object
-
#make(cls, args = {}, &block) ⇒ Object
Make a new Entity with the provided properties.
-
#pick(description) ⇒ Entity
Pick an entity based on its description.
- #players ⇒ Object
Instance Method Details
#destroy(entity) ⇒ Object
25 26 27 28 29 30 31 32 |
# File 'lib/gamefic/plot/entities.rb', line 25 def destroy entity if p_dynamic.include?(entity) p_entities.delete entity p_dynamic.delete entity p_players.delete entity end entity.parent = nil end |
#entities ⇒ Object
58 59 60 |
# File 'lib/gamefic/plot/entities.rb', line 58 def entities p_entities.clone end |
#make(cls, args = {}, &block) ⇒ Object
Make a new Entity with the provided properties.
14 15 16 17 18 19 20 21 22 23 |
# File 'lib/gamefic/plot/entities.rb', line 14 def make cls, args = {}, &block ent = cls.new args, &block if ent.kind_of?(Entity) == false raise "Invalid entity class" end p_entities.push ent p_dynamic.push ent if running? ent.playbook = playbook if ent.kind_of?(Character) ent end |
#pick(description) ⇒ Entity
Pick an entity based on its description. The description provided must match exactly one entity; otherwise an error is raised.
47 48 49 50 51 52 53 54 55 56 |
# File 'lib/gamefic/plot/entities.rb', line 47 def pick(description) query = Gamefic::Query::Base.new result = query.match(description, entities) if result.objects.length == 0 raise IndexError.new("Unable to find entity from '#{description}'") elsif result.objects.length > 1 raise IndexError.new("Ambiguous entities found from '#{description}'") end result.objects[0] end |
#players ⇒ Object
62 63 64 |
# File 'lib/gamefic/plot/entities.rb', line 62 def players p_players.clone end |