Sha256: 5593f80570024e3bb73084204a3315ce81a76627c6065dc986ac3649ab6b1e27
Contents?: true
Size: 1.35 KB
Versions: 2
Compression:
Stored size: 1.35 KB
Contents
module Gamefic module Tty # A simple engine for running turn-based, single-character Gamefic plots. # class Engine # @return [Plot] attr_reader :plot # @return [User] attr_reader :user # @return [Character] attr_reader :character # @param plot [Plot] # @param user [User] def initialize(plot: Gamefic::Plot.new, user: Gamefic::Tty::User.new) @plot = plot @user = user @character = @plot.introduce @plot.ready end # Run the plot to its conclusion. # def run turn until @plot.concluding? @user.update @character.output end # Create an engine and run the plot. # # @param plot [Plot] # @param user [User] # @return [Engine] def self.run(plot: Gamefic::Plot.new, user: Gamefic::Tty::User.new) engine = new(plot: plot, user: user) engine.run engine end # Run a single turn. # def turn send_and_receive @plot.update @plot.ready end private def send_and_receive @user.update @character.output return unless @character.queue.empty? @character.queue.push @user.query("#{@character.output[:prompt]} ") end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
gamefic-tty-3.0.1 | lib/gamefic-tty/engine.rb |
gamefic-tty-3.0.0 | lib/gamefic-tty/engine.rb |