Class: RoadToRubykaigi::Game

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

Instance Method Summary collapse

Instance Method Details

#runObject



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/road_to_rubykaigi/game.rb', line 3

def run
  ANSI.clear
  last_time = Time.now
  accumulator = 0.0
  $stdin.raw do
    loop do
      RoadToRubykaigi.debug.clear
      process_input($stdin.read_nonblock(4, exception: false))

      if @game_manager.result?
        print(@game_manager.render_result)
        exit
      else
        current_time = Time.now
        accumulator += current_time - last_time
        last_time = current_time
        while accumulator >= Manager::GameManager::UPDATE_RATE
          @game_manager.update
          @physics_engine.simulate
          @update_manager.update(offset_x: @game_manager.offset_x)
          @collision_manager.process
          accumulator -= Manager::GameManager::UPDATE_RATE
        end

        @drawing_manager.draw(offset_x: @game_manager.offset_x) unless @game_manager.game_over?
      end

      puts RoadToRubykaigi.debug
      sleep Manager::GameManager::FRAME_RATE
    end
  end
end