Sha256: ed1451fb375e03f2f8fad773b0e48bb29ae636d1534eea30e91d4182825da8b6

Contents?: true

Size: 1.23 KB

Versions: 1

Compression:

Stored size: 1.23 KB

Contents

module Tatty
  require 'tty-cursor'
  require 'tty-screen'
  require 'tty-box'

  class Stage
    attr_accessor :framerate

    def initialize
      @cursor = TTY::Cursor
      @framerate = 0.1
      @buffer = ""
    end

    def leave
    end

    def goto(klass, **kargs)
      ::Tatty.goto(klass, **kargs)
    end

    def keypress(evt)
    end

    def screen_size
      TTY::Screen.size
    end

    def screen_width
      TTY::Screen.width
    end

    def screen_height
      TTY::Screen.height
    end

    def move_to(x, y)
      render @cursor.move_to(x, y)
    end

    def render(out)
      @buffer += out
    end

    def render_at(x, y, out)
      out.to_s.each_line do |line|
        render @cursor.move_to(x, y)
        render line
        y += 1
      end
    end

    def draw
      render "not implemented"
    end

    def step
      last_buffer = @buffer
      @buffer = ""
      render @cursor.clear_screen
      move_to(0, 0)
      self.draw
      if last_buffer != @buffer
        print @buffer
      end
      sleep(@framerate)
    end

    def render_box(*content, **kwargs, &block)
      render @cursor.save
      move_to(0, 0)
      render TTY::Box.frame(*content, **kwargs, &block)
      render @cursor.restore
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
petli-0.0.4 lib/tatty/stage.rb