Sha256: 9dbce7d3dba2a54a41105dfb3ea6b841a547e1e6c29bffb60f1644781969de23
Contents?: true
Size: 1.82 KB
Versions: 4
Compression:
Stored size: 1.82 KB
Contents
# frozen_string_literal: true module Gamefic class Rulebook # Blocks of code to be executed for various narrative events, such as # on_ready and on_update. # class Events attr_reader :player_output_blocks attr_reader :player_conclude_blocks attr_reader :ready_blocks attr_reader :update_blocks attr_reader :conclude_blocks def initialize @ready_blocks = [] @update_blocks = [] @conclude_blocks = [] @player_conclude_blocks = [] @player_output_blocks = [] end def empty? [player_output_blocks, player_conclude_blocks, ready_blocks, update_blocks, conclude_blocks].all?(&:empty?) end def freeze super instance_variables.each { |k| instance_variable_get(k).freeze } self end # @return [void] def on_ready &block @ready_blocks.push block end # @yieldparam [Actor] # @return [void] def on_player_ready &block @ready_blocks.push(proc do players.each { |plyr| instance_exec plyr, &block } end) end def on_update &block @update_blocks.push block end def on_player_update &block @update_blocks.push(proc do players.each { |plyr| instance_exec plyr, &block } end) end # @return [void] def on_conclude &block @conclude_blocks.push block end # @yieldparam [Actor] # @return [void] def on_player_conclude &block @player_conclude_blocks.push block end # @yieldparam [Actor] # @yieldparam [Hash] # @return [void] def on_player_output &block @player_output_blocks.push block end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
gamefic-3.3.0 | lib/gamefic/rulebook/events.rb |
gamefic-3.2.1 | lib/gamefic/rulebook/events.rb |
gamefic-3.2.0 | lib/gamefic/rulebook/events.rb |
gamefic-3.1.0 | lib/gamefic/rulebook/events.rb |