Class: SpaceInvaders::App

Inherits:
Gosu::Window
  • Object
show all
Defined in:
lib/space_invaders/app.rb

Constant Summary collapse

DEFAULT_FONT =
"assets/fonts/unifont.ttf"
STATICS =
:game_status, :button_controller, :images, :sounds, 
:welcome_screen, :game_over_screen, :next_level_screen
TRACKERS =
:lives_tracker, :score_tracker
DYNAMICS =
:ship, :invaders_container, :u_block_container, :red_invader

Instance Method Summary collapse

Constructor Details

#initialize(width = 800, height = 600, fullscreen = false) ⇒ App

Returns a new instance of App.



38
39
40
41
42
43
# File 'lib/space_invaders/app.rb', line 38

def initialize width=800, height=600, fullscreen=false
  super
  self.caption = "Sprite Demonstration"
  initialize_statics
  initialize_dynamics_and_trackers
end

Instance Method Details

#button_down(id) ⇒ Object



45
46
47
# File 'lib/space_invaders/app.rb', line 45

def button_down id
  button_controller.button_down id
end

#drawObject



57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/space_invaders/app.rb', line 57

def draw
  if game_status.hasnt_started?
    welcome_screen.draw
  elsif game_status.next_level?
    next_level_screen.draw
  elsif game_status.drowned_ship? or game_status.being_played?
    draw_dynamics
    draw_trackers
  elsif game_status.finished?
    game_over_screen.draw
  end
end

#draw_dynamicsObject



78
79
80
# File 'lib/space_invaders/app.rb', line 78

def draw_dynamics
  DYNAMICS.each {|dynamic_element| self.send(dynamic_element).draw}
end

#draw_trackersObject



82
83
84
# File 'lib/space_invaders/app.rb', line 82

def draw_trackers
  TRACKERS.each {|tracker_element| self.send(tracker_element).draw}
end

#initialize_dynamics_and_trackersObject



74
75
76
# File 'lib/space_invaders/app.rb', line 74

def initialize_dynamics_and_trackers
  define_properties *DYNAMICS, *TRACKERS
end

#initialize_staticsObject



70
71
72
# File 'lib/space_invaders/app.rb', line 70

def initialize_statics
  define_properties *STATICS
end

#updateObject



49
50
51
52
53
54
55
# File 'lib/space_invaders/app.rb', line 49

def update
  if game_status.drowned_ship?
    ship.update
  elsif game_status.being_played?
    update_dynamics
  end
end

#update_dynamicsObject



86
87
88
# File 'lib/space_invaders/app.rb', line 86

def update_dynamics
  DYNAMICS.each {|dynamic_element| self.send(dynamic_element).update}
end