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 =
650
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
end

Instance Method Details

#endingObject



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

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

#finishObject



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

def finish
  @state = STATE[:finished]
end

#game_overObject



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

def game_over
  @state = STATE[:game_over]
end

#game_over?Boolean

Returns:



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

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

#increment_scoreObject



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

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



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

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

#render_score_boardObject



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

def render_score_board
  @score_board.render_score_board
end

#result?Boolean

Returns:



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

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

#updateObject



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

def update
  @deadline.activate(player_x: @player.x)
  @enemies.activate if player_moved?
  if @player.x >= GameManager.goal_x && playing?
    EventDispatcher.publish(:ending)
  end
end