Module: Berlin::AI::Node::Internal

Included in:
Berlin::AI::Node
Defined in:
lib/ai/node_internal.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



18
19
20
# File 'lib/ai/node_internal.rb', line 18

def self.included(base)
  base.extend(ClassMethods)
end

Instance Method Details

#==(other) ⇒ Object

Used to compare if two nodes are the same



50
51
52
# File 'lib/ai/node_internal.rb', line 50

def ==(other)
  other.id == @id
end

#initialize(options = {}) ⇒ Object



22
23
24
25
26
27
28
29
30
# File 'lib/ai/node_internal.rb', line 22

def initialize(options={})
  @number_of_soldiers = 0
  @player_id          = nil
  @links              = []

  options.each do |k,v|
    self.send("#{k}=", v)
  end
end

Registers a given node as an adjacent one.



55
56
57
# File 'lib/ai/node_internal.rb', line 55

def link_to(other_node)
  @links << other_node
end

#reset!Object

Reset information for new turn



39
40
41
42
# File 'lib/ai/node_internal.rb', line 39

def reset!
  self.incoming_soldiers  = 0
  self.available_soldiers = self.number_of_soldiers
end

#to_iObject

Somewhat useful



45
46
47
# File 'lib/ai/node_internal.rb', line 45

def to_i
  @id.to_i
end

#to_s(options = {}) ⇒ Object



32
33
34
35
36
# File 'lib/ai/node_internal.rb', line 32

def to_s(options={})
  str = "<Berlin::AI::Node @id=#{@id} @player_id='#{@player_id}' @type='#{@type}' @points=#{@points} @soldiers_per_turn=#{@soldiers_per_turn} @number_of_soldiers=#{@number_of_soldiers} @incoming_soldiers=#{@incoming_soldiers} @available_soldiers=#{@available_soldiers} @adjacent_nodes=#{adjacent_nodes.map(&:id)}"
  options.each { |key, val| str << " @#{key}=#{val}"}
  str << ">"
end