Class: RoadToRubykaigi::Manager::DrawingManager

Inherits:
Object
  • Object
show all
Defined in:
lib/road_to_rubykaigi/manager/drawing_manager.rb

Constant Summary collapse

MAP_X_START =
1
MAP_Y_START =
2

Instance Method Summary collapse

Instance Method Details

#draw(offset_x:) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/road_to_rubykaigi/manager/drawing_manager.rb', line 7

def draw(offset_x:)
  buffer = Array.new(@viewport_height) { Array.new(@viewport_width) { "" } }
  @layers.each do |layer|
    merge_buffer(buffer, layer, offset_x: offset_x)
  end

  ANSI.home
  ANSI.background_color
  ANSI.default_text_color
  print @game_manager.render_score_board
  @viewport_height.times do |row|
    @viewport_width.times do |col|
      unless buffer[row][col] == @preview_buffer[row][col]
        print "\e[#{row+MAP_Y_START};#{col+MAP_X_START}H" + ANSI::BACKGROUND_COLOR + ANSI::DEFAULT_TEXT_COLOR + buffer[row][col]
      end
    end
  end
  @preview_buffer = buffer.map(&:dup)
end