Class: Chingu::GameState
- Inherits:
-
Object
- Object
- Chingu::GameState
- Includes:
- Helpers::GFX, Helpers::GameObject, Helpers::GameState, Helpers::InputClient, Helpers::InputDispatcher
- Defined in:
- lib/chingu/game_state.rb
Overview
Chingu incorporates a basic push/pop game state system (as discussed here: www.gamedev.net/community/forums/topic.asp?topic_id=477320). Game states is a way of organizing your intros, menus, levels. Game states aren’t complicated. In Chingu a GameState is a class that behaves mostly like your default Gosu::Window (or in our case Chingu::Window) game loop.
# A simple GameState-example class Intro < Chingu::GameState
def update
# game logic here
end
def draw
# screen manipulation here
end
# Called when we enter the game state
def setup
@player.angle = 0 # point player upwards
end
# Called when we leave the current game state
def finalize
push_game_state(Menu) # switch to game state "Menu"
end
end
Direct Known Subclasses
Chingu::GameStates::Debug, Chingu::GameStates::FadeTo, Chingu::GameStates::Pause
Instance Attribute Summary collapse
-
#game_objects ⇒ Object
Returns the value of attribute game_objects.
-
#game_state_manager ⇒ Object
Returns the value of attribute game_state_manager.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
Attributes included from Helpers::InputDispatcher
Instance Method Summary collapse
-
#button_down(id) ⇒ Object
Called when a button is pressed and a game state is active.
-
#button_up(id) ⇒ Object
Called when a button is released and a game state active.
-
#close ⇒ Object
Closes game state by poping it off the stack (and activating the game state below).
-
#close_game ⇒ Object
Closes main window and terminates the application.
-
#draw ⇒ Object
Calls Draw on each game object that has current game state as parent (created inside that game state).
-
#initialize(options = {}) ⇒ GameState
constructor
A new instance of GameState.
- #setup ⇒ Object
- #to_s ⇒ Object
-
#to_sym ⇒ Object
An unique identifier for the GameState-class, Used in game state manager to keep track of created states.
-
#update ⇒ Object
Calls update on each game object that has current game state as parent (created inside that game state).
Methods included from Helpers::InputClient
Methods included from Helpers::InputDispatcher
#add_input_client, #dispatch_action, #dispatch_button_down, #dispatch_button_up, #dispatch_input_for, #remove_input_client
Methods included from Helpers::GameObject
#add_game_object, #game_objects_of_class, #remove_game_object
Methods included from Helpers::GameState
#clear_game_states, #current_game_state, #pop_game_state, #previous_game_state, #push_game_state, #switch_game_state, #transitional_game_state
Methods included from Helpers::GFX
#fill, #fill_gradient, #fill_rect
Constructor Details
#initialize(options = {}) ⇒ GameState
Returns a new instance of GameState.
61 62 63 64 65 66 67 68 69 70 |
# File 'lib/chingu/game_state.rb', line 61 def initialize( = {}) @options = @game_objects = GameObjectList.new @input_clients = Array.new # Game state mamanger can be run alone if defined?($window) && $window.respond_to?(:game_state_manager) $window.game_state_manager.inside_state = self end end |
Instance Attribute Details
#game_objects ⇒ Object
Returns the value of attribute game_objects.
59 60 61 |
# File 'lib/chingu/game_state.rb', line 59 def game_objects @game_objects end |
#game_state_manager ⇒ Object
Returns the value of attribute game_state_manager.
59 60 61 |
# File 'lib/chingu/game_state.rb', line 59 def game_state_manager @game_state_manager end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
58 59 60 |
# File 'lib/chingu/game_state.rb', line 58 def @options end |
Instance Method Details
#button_down(id) ⇒ Object
Called when a button is pressed and a game state is active
91 92 93 94 |
# File 'lib/chingu/game_state.rb', line 91 def (id) (id, self) @input_clients.each { |object| (id, object) } if @input_clients end |
#button_up(id) ⇒ Object
Called when a button is released and a game state active
99 100 101 102 |
# File 'lib/chingu/game_state.rb', line 99 def (id) (id, self) @input_clients.each { |object| (id, object) } if @input_clients end |
#close ⇒ Object
Closes game state by poping it off the stack (and activating the game state below)
125 126 127 |
# File 'lib/chingu/game_state.rb', line 125 def close pop_game_state end |
#close_game ⇒ Object
Closes main window and terminates the application
132 133 134 |
# File 'lib/chingu/game_state.rb', line 132 def close_game $window.close end |
#draw ⇒ Object
Calls Draw on each game object that has current game state as parent (created inside that game state)
118 119 120 |
# File 'lib/chingu/game_state.rb', line 118 def draw @game_objects.draw end |
#setup ⇒ Object
84 85 86 |
# File 'lib/chingu/game_state.rb', line 84 def setup # Your game state setup logic here. end |
#to_s ⇒ Object
80 81 82 |
# File 'lib/chingu/game_state.rb', line 80 def to_s self.class.to_s end |
#to_sym ⇒ Object
An unique identifier for the GameState-class, Used in game state manager to keep track of created states.
76 77 78 |
# File 'lib/chingu/game_state.rb', line 76 def to_sym self.class.to_s.to_sym end |
#update ⇒ Object
Calls update on each game object that has current game state as parent (created inside that game state)
107 108 109 110 111 112 113 |
# File 'lib/chingu/game_state.rb', line 107 def update dispatch_input_for(self) @input_clients.each { |game_object| dispatch_input_for(game_object) } @game_objects.update end |