class Gamefic::Scene::Base


and customize it with on_start and on_finish blocks.
The base class for scenes. Authors can instantiate this class directly

def self.inherited(klass)

def self.inherited(klass)
  super
  klass.use_props_class props_class
  klass.start_blocks.concat start_blocks
  klass.finish_blocks.concat finish_blocks
end

def execute(block)

def execute(block)
  Binding.new(narrative, block).call(actor, props, context)
end

def finish

Returns:
  • (void) -
def finish
  run_finish_blocks
end

def finish_blocks

Returns:
  • (Array) -
def finish_blocks
  @finish_blocks ||= []
end

def initialize(actor, narrative = nil, props = nil, **context)

Parameters:
  • props (Props::Default, nil) --
  • narrative (Narrative, nil) --
  • actor (Actor) --
def initialize(actor, narrative = nil, props = nil, **context)
  @actor = actor
  @narrative = narrative
  @props = props || self.class.props_class.new
  @context = context
end

def name

def name
  @name ||= self.class.nickname
end

def on_finish(&block)

Other tags:
    Yieldparam: context - Additional context
    Yieldparam: props - The scene's props
    Yieldparam: actor - The scene's actor
def on_finish(&block)
  finish_blocks.push block
end

def on_start(&block)

Other tags:
    Yieldparam: context - Additional context
    Yieldparam: props - The scene's props
    Yieldparam: actor - The scene's actor
def on_start(&block)
  start_blocks.push block
end

def props_class

def props_class
  @props_class ||= Props::Default
end

def rename(name)

def rename(name)
  @name = name
end

def rename(nickname)

def rename(nickname)
  @nickname = nickname
end

def run_finish_blocks

def run_finish_blocks
  self.class.finish_blocks.each { |blk| execute(blk) }
end

def run_start_blocks

def run_start_blocks
  self.class.start_blocks.each { |blk| execute(blk) }
end

def start

Returns:
  • (Props::Default) -
def start
  run_start_blocks
  props
end

def start_blocks

Returns:
  • (Array) -
def start_blocks
  @start_blocks ||= []
end

def to_hash

def to_hash
  { name: name, type: type }
end

def type

Returns:
  • (String) -
def type
  self.class.type
end

def type

def type
  'Base'
end

def use_props_class(klass)

Parameters:
  • klass (Class) --
def use_props_class(klass)
  @props_class = klass
end