Class: RoadToRubykaigi::Manager::GameManager

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

Constant Summary collapse

UPDATE_RATE =
1.0 / 10
FRAME_RATE =
1.0 / 60
GOAL_X =
{ 2025 => 650, 2026 => 800 }
DEMO_GOAL_X =
540
STATE =
{
  playing: 0,
  pause: 1,
  game_over: 2,
  ending: 3,
  finished: 4,
}

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#fireworksObject (readonly)

Returns the value of attribute fireworks.



15
16
17
# File 'lib/road_to_rubykaigi/manager/game_manager.rb', line 15

def fireworks
  @fireworks
end

Class Method Details

.goal_xObject



17
18
19
# File 'lib/road_to_rubykaigi/manager/game_manager.rb', line 17

def self.goal_x
  @goal_x ||= RoadToRubykaigi.demo? ? DEMO_GOAL_X : GOAL_X[RoadToRubykaigi.version]
end

Instance Method Details

#endingObject



62
63
64
65
# File 'lib/road_to_rubykaigi/manager/game_manager.rb', line 62

def ending
  @state = STATE[:ending]
  @fireworks.shoot
end

#finishObject



67
68
69
# File 'lib/road_to_rubykaigi/manager/game_manager.rb', line 67

def finish
  @state = STATE[:finished]
end

#game_overObject



54
55
56
# File 'lib/road_to_rubykaigi/manager/game_manager.rb', line 54

def game_over
  @state = STATE[:game_over]
end

#game_over?Boolean

Returns:

  • (Boolean)


58
59
60
# File 'lib/road_to_rubykaigi/manager/game_manager.rb', line 58

def game_over?
  @state == STATE[:game_over]
end

#increment_scoreObject



34
35
36
# File 'lib/road_to_rubykaigi/manager/game_manager.rb', line 34

def increment_score
  @score_board.increment
end

#offset_xObject



21
22
23
# File 'lib/road_to_rubykaigi/manager/game_manager.rb', line 21

def offset_x
  (@player.x - Map::VIEWPORT_WIDTH / 2).clamp(0, @map.width - Map::VIEWPORT_WIDTH).to_i
end

#render_resultObject



42
43
44
45
46
47
48
# File 'lib/road_to_rubykaigi/manager/game_manager.rb', line 42

def render_result
  if game_over?
    @score_board.render_game_over_result
  else
    @score_board.render_clear_result
  end
end

#render_score_boardObject



38
39
40
# File 'lib/road_to_rubykaigi/manager/game_manager.rb', line 38

def render_score_board
  @score_board.render_score_board
end

#result?Boolean

Returns:

  • (Boolean)


50
51
52
# File 'lib/road_to_rubykaigi/manager/game_manager.rb', line 50

def result?
  @state == STATE[:game_over] || @state == STATE[:finished]
end

#updateObject



25
26
27
28
29
30
31
32
# File 'lib/road_to_rubykaigi/manager/game_manager.rb', line 25

def update
  @deadline.activate(player_x: @player.x)
  @enemies.activate if player_moved?
  @score_board.start_timer if @player.x > Sprite::Player::WARMUP_END_X[RoadToRubykaigi.version]
  if @player.x >= GameManager.goal_x && playing?
    EventDispatcher.publish(:ending)
  end
end