Class: Legion::Extensions::Agentic::Homeostasis::FossilFuel::Helpers::Reserve

Inherits:
Object
  • Object
show all
Defined in:
lib/legion/extensions/agentic/homeostasis/fossil_fuel/helpers/reserve.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#contentObject (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_atObject (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

#domainObject (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_typeObject (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

#idObject (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

#qualityObject

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

#volumeObject

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

Returns:

  • (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

Returns:

  • (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_labelObject



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

Returns:

  • (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_hObject



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