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
-
(void)
-
def finish run_finish_blocks end
def finish_blocks
-
(Array
-)
def finish_blocks @finish_blocks ||= [] end
def initialize(actor, narrative = nil, props = nil, **context)
-
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)
- 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)
- 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
-
(Props::Default)
-
def start run_start_blocks props end
def start_blocks
-
(Array
-)
def start_blocks @start_blocks ||= [] end
def to_hash
def to_hash { name: name, type: type } end
def type
-
(String)
-
def type self.class.type end
def type
def type 'Base' end
def use_props_class(klass)
-
klass
(Class
) --
def use_props_class(klass) @props_class = klass end