class Tundengine::Stages::Base
Attributes
child_in_play[R]
children[R]
parent[R]
Public Class Methods
new(parent = Null.instance)
click to toggle source
# File lib/tundengine/stages/base.rb, line 7 def initialize(parent = Null.instance) @parent = parent @children = [] @rewinded = [] new_child_in_play! @locked = false end
Public Instance Methods
as_hash()
click to toggle source
# File lib/tundengine/stages/base.rb, line 48 def as_hash summary.merge( children_key_name => children.map(&:as_hash) ) end
declare!(declaration = Declarations::Null.instance)
click to toggle source
# File lib/tundengine/stages/base.rb, line 15 def declare!(declaration = Declarations::Null.instance) child_in_play.declare!(declaration) end
fast_forward!(n)
click to toggle source
# File lib/tundengine/stages/base.rb, line 44 def fast_forward!(n) [n, @rewinded.length].min.times { children.push(@rewinded.shift) } end
lock!()
click to toggle source
# File lib/tundengine/stages/base.rb, line 35 def lock! @locked = true parent.lock! end
on_complete_child!()
click to toggle source
# File lib/tundengine/stages/base.rb, line 31 def on_complete_child! children << child_in_play end
play!(card = Cards::Null.instance) { |self) : self| ... }
click to toggle source
# File lib/tundengine/stages/base.rb, line 19 def play!(card = Cards::Null.instance) completed = completed? until completed or @locked child_in_play.play!(card) card = Cards::Null.instance completed = completed? completed ? on_completed! : new_child_in_play! end @locked = false block_given? ? (yield self) : self end
rewind!(n)
click to toggle source
# File lib/tundengine/stages/base.rb, line 40 def rewind!(n) [n, children.length].min.times { @rewinded.unshift(children.pop) } end
Protected Instance Methods
child_class_name()
click to toggle source
# File lib/tundengine/stages/base.rb, line 68 def child_class_name children.first.class.name.split('::').last.downcase end
children_key_name()
click to toggle source
# File lib/tundengine/stages/base.rb, line 64 def children_key_name "#{child_class_name}s".to_sym end
new_child_in_play!()
click to toggle source
# File lib/tundengine/stages/base.rb, line 56 def new_child_in_play! @child_in_play = new_child end
summary()
click to toggle source
# File lib/tundengine/stages/base.rb, line 60 def summary {} end