Class: PfrpgCore::FeatFinder
- Inherits:
-
Object
- Object
- PfrpgCore::FeatFinder
- Defined in:
- lib/pfrpg_core/feat_finder.rb
Instance Attribute Summary collapse
-
#entity ⇒ Object
readonly
Returns the value of attribute entity.
-
#feats ⇒ Object
readonly
Returns the value of attribute feats.
Instance Method Summary collapse
- #doesnt_include_feat(feats, feat) ⇒ Object
- #filter_feats_by_owned(feats, entity) ⇒ Object
- #filter_feats_by_prereq(feats, entity) ⇒ Object
- #find_feats ⇒ Object
-
#initialize(entity, feats) ⇒ FeatFinder
constructor
A new instance of FeatFinder.
- #prereq_check(entity, feat) ⇒ Object
- #repeat_list ⇒ Object
Constructor Details
#initialize(entity, feats) ⇒ FeatFinder
Returns a new instance of FeatFinder.
4 5 6 7 |
# File 'lib/pfrpg_core/feat_finder.rb', line 4 def initialize(entity, feats) @entity = entity @feats = feats end |
Instance Attribute Details
#entity ⇒ Object (readonly)
Returns the value of attribute entity.
3 4 5 |
# File 'lib/pfrpg_core/feat_finder.rb', line 3 def entity @entity end |
#feats ⇒ Object (readonly)
Returns the value of attribute feats.
3 4 5 |
# File 'lib/pfrpg_core/feat_finder.rb', line 3 def feats @feats end |
Instance Method Details
#doesnt_include_feat(feats, feat) ⇒ Object
24 25 26 |
# File 'lib/pfrpg_core/feat_finder.rb', line 24 def doesnt_include_feat(feats, feat) !(feats.find { |x| x.name == feat.name }) end |
#filter_feats_by_owned(feats, entity) ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/pfrpg_core/feat_finder.rb', line 16 def filter_feats_by_owned(feats, entity) owned_feats = entity.feats feats.select do |f| repeat_list.include?(f.name) || doesnt_include_feat(owned_feats, f) end end |
#filter_feats_by_prereq(feats, entity) ⇒ Object
28 29 30 31 32 |
# File 'lib/pfrpg_core/feat_finder.rb', line 28 def filter_feats_by_prereq(feats, entity) feats.select do |f| prereq_check(entity, f) end end |
#find_feats ⇒ Object
9 10 11 12 13 14 |
# File 'lib/pfrpg_core/feat_finder.rb', line 9 def find_feats feats = @feats feats = filter_feats_by_owned(feats, entity) feats = filter_feats_by_prereq(feats, entity) return feats end |
#prereq_check(entity, feat) ⇒ Object
34 35 36 37 |
# File 'lib/pfrpg_core/feat_finder.rb', line 34 def prereq_check(entity, feat) prereqs = PfrpgUtility::Prerequisite.load(feat.prereq_code) prereqs.all? { |x| x.match(entity) } end |
#repeat_list ⇒ Object
39 40 41 42 43 44 45 46 47 |
# File 'lib/pfrpg_core/feat_finder.rb', line 39 def repeat_list [ 'Exotic Weapon Proficiency', 'Martial Weapon Proficiency', 'Weapon Focus', 'Spell Focus', 'Custom Feat' ] end |