Class: Legion::Extensions::Agentic::Homeostasis::FossilFuel::Helpers::Reserve
- Inherits:
-
Object
- Object
- Legion::Extensions::Agentic::Homeostasis::FossilFuel::Helpers::Reserve
- Defined in:
- lib/legion/extensions/agentic/homeostasis/fossil_fuel/helpers/reserve.rb
Instance Attribute Summary collapse
-
#content ⇒ Object
readonly
Returns the value of attribute content.
-
#discovered_at ⇒ Object
readonly
Returns the value of attribute discovered_at.
-
#domain ⇒ Object
readonly
Returns the value of attribute domain.
-
#fuel_type ⇒ Object
readonly
Returns the value of attribute fuel_type.
-
#id ⇒ Object
readonly
Returns the value of attribute id.
-
#quality ⇒ Object
Returns the value of attribute quality.
-
#volume ⇒ Object
Returns the value of attribute volume.
Instance Method Summary collapse
- #abundant? ⇒ Boolean
- #depleted? ⇒ Boolean
- #extract!(rate: Constants::EXTRACTION_RATE) ⇒ Object
-
#initialize(fuel_type:, domain:, content:, volume: nil, quality: nil) ⇒ Reserve
constructor
A new instance of Reserve.
- #reserve_label ⇒ Object
- #scarce? ⇒ Boolean
- #to_h ⇒ Object
Constructor Details
#initialize(fuel_type:, domain:, content:, volume: nil, quality: nil) ⇒ Reserve
Returns a new instance of Reserve.
14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/legion/extensions/agentic/homeostasis/fossil_fuel/helpers/reserve.rb', line 14 def initialize(fuel_type:, domain:, content:, volume: nil, quality: nil) validate_fuel!(fuel_type) @id = SecureRandom.uuid @fuel_type = fuel_type.to_sym @domain = domain.to_sym @content = content.to_s @volume = (volume || 0.8).to_f.clamp(0.0, 1.0).round(10) @quality = (quality || 0.5).to_f.clamp(0.0, 1.0).round(10) @discovered_at = Time.now.utc end |
Instance Attribute Details
#content ⇒ Object (readonly)
Returns the value of attribute content.
10 11 12 |
# File 'lib/legion/extensions/agentic/homeostasis/fossil_fuel/helpers/reserve.rb', line 10 def content @content end |
#discovered_at ⇒ Object (readonly)
Returns the value of attribute discovered_at.
10 11 12 |
# File 'lib/legion/extensions/agentic/homeostasis/fossil_fuel/helpers/reserve.rb', line 10 def discovered_at @discovered_at end |
#domain ⇒ Object (readonly)
Returns the value of attribute domain.
10 11 12 |
# File 'lib/legion/extensions/agentic/homeostasis/fossil_fuel/helpers/reserve.rb', line 10 def domain @domain end |
#fuel_type ⇒ Object (readonly)
Returns the value of attribute fuel_type.
10 11 12 |
# File 'lib/legion/extensions/agentic/homeostasis/fossil_fuel/helpers/reserve.rb', line 10 def fuel_type @fuel_type end |
#id ⇒ Object (readonly)
Returns the value of attribute id.
10 11 12 |
# File 'lib/legion/extensions/agentic/homeostasis/fossil_fuel/helpers/reserve.rb', line 10 def id @id end |
#quality ⇒ Object
Returns the value of attribute quality.
12 13 14 |
# File 'lib/legion/extensions/agentic/homeostasis/fossil_fuel/helpers/reserve.rb', line 12 def quality @quality end |
#volume ⇒ Object
Returns the value of attribute volume.
12 13 14 |
# File 'lib/legion/extensions/agentic/homeostasis/fossil_fuel/helpers/reserve.rb', line 12 def volume @volume end |
Instance Method Details
#abundant? ⇒ Boolean
40 41 42 |
# File 'lib/legion/extensions/agentic/homeostasis/fossil_fuel/helpers/reserve.rb', line 40 def abundant? @volume >= 0.8 end |
#depleted? ⇒ Boolean
32 33 34 |
# File 'lib/legion/extensions/agentic/homeostasis/fossil_fuel/helpers/reserve.rb', line 32 def depleted? @volume < 0.01 end |
#extract!(rate: Constants::EXTRACTION_RATE) ⇒ Object
26 27 28 29 30 |
# File 'lib/legion/extensions/agentic/homeostasis/fossil_fuel/helpers/reserve.rb', line 26 def extract!(rate: Constants::EXTRACTION_RATE) amount = [rate.abs, @volume].min @volume = (@volume - amount).clamp(0.0, 1.0).round(10) amount.round(10) end |
#reserve_label ⇒ Object
44 45 46 |
# File 'lib/legion/extensions/agentic/homeostasis/fossil_fuel/helpers/reserve.rb', line 44 def reserve_label Constants.label_for(Constants::RESERVE_LABELS, @volume) end |
#scarce? ⇒ Boolean
36 37 38 |
# File 'lib/legion/extensions/agentic/homeostasis/fossil_fuel/helpers/reserve.rb', line 36 def scarce? @volume < Constants::DEPLETION_WARNING end |
#to_h ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/legion/extensions/agentic/homeostasis/fossil_fuel/helpers/reserve.rb', line 48 def to_h { id: @id, fuel_type: @fuel_type, domain: @domain, content: @content, volume: @volume, reserve_label: reserve_label, quality: @quality, depleted: depleted?, scarce: scarce?, abundant: abundant?, discovered_at: @discovered_at } end |