Class: Gamefic::Director::Delegate

Inherits:
Object
  • Object
show all
Defined in:
lib/gamefic/director/delegate.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(actor, orders) ⇒ Delegate

Returns a new instance of Delegate.



18
19
20
21
22
23
# File 'lib/gamefic/director/delegate.rb', line 18

def initialize(actor, orders)
  @actor = actor
  @orders = orders
  @did = []
  @validated = false
end

Class Method Details

.proceed_for(actor) ⇒ Object



6
7
8
9
# File 'lib/gamefic/director/delegate.rb', line 6

def proceed_for actor
  return if stack_map[actor].nil?
  stack_map[actor].last.proceed unless stack_map[actor].last.nil?
end

Instance Method Details

#executeObject



40
41
42
43
44
45
46
47
# File 'lib/gamefic/director/delegate.rb', line 40

def execute
  return if @orders.length == 0
  stack_map[@actor] ||= []
  stack_map[@actor].push self
  proceed
  stack_map[@actor].pop
  stack_map.delete @actor if stack_map[@actor].empty?
end

#proceedObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/gamefic/director/delegate.rb', line 25

def proceed
  return if @orders.length == 0
  executed = false
  while !executed
    order = @orders.shift
    break if order.nil?
    # HACK: Make sure Character#proceed does not repeat an action

    next if @did.include?(order.action)
    @did.push order.action
    @last_action = order.action
    executed = attempt(order)
    return if order.canceled?
  end
end