class BehaviorTree::NodeStatus

Status for nodes.

Constants

FAILURE
RUNNING
SUCCESS

Public Class Methods

new(value) click to toggle source
# File lib/behavior_tree/node_status.rb, line 10
def initialize(value)
  set(value)
end

Public Instance Methods

==(other) click to toggle source
# File lib/behavior_tree/node_status.rb, line 30
def ==(other)
  to_sym == other.to_sym
end
failure!() click to toggle source
# File lib/behavior_tree/node_status.rb, line 52
def failure!
  set(FAILURE)
end
failure?() click to toggle source
# File lib/behavior_tree/node_status.rb, line 64
def failure?
  @value == FAILURE
end
inspect() click to toggle source
# File lib/behavior_tree/node_status.rb, line 34
def inspect
  to_sym
end
running!() click to toggle source
# File lib/behavior_tree/node_status.rb, line 48
def running!
  set(RUNNING)
end
running?() click to toggle source
# File lib/behavior_tree/node_status.rb, line 60
def running?
  @value == RUNNING
end
set(value) click to toggle source
# File lib/behavior_tree/node_status.rb, line 14
def set(value)
  return if value == @value
  raise IncorrectStatusValueError, value unless [SUCCESS, RUNNING, FAILURE].include?(value)

  prev = @value

  @value = value

  # NOTE: Make sure to notify after having set the @value above, so that the new status is already set.
  @subscriber&.(prev)
end
subscribe(&subscriber) click to toggle source
# File lib/behavior_tree/node_status.rb, line 26
def subscribe(&subscriber)
  @subscriber = subscriber
end
success!() click to toggle source
# File lib/behavior_tree/node_status.rb, line 44
def success!
  set(SUCCESS)
end
success?() click to toggle source
# File lib/behavior_tree/node_status.rb, line 56
def success?
  @value == SUCCESS
end
to_sym() click to toggle source
# File lib/behavior_tree/node_status.rb, line 38
def to_sym
  return :success if success?
  return :running if running?
  return :failure if failure?
end