Class: BTetrisKp::MenuState
- Inherits:
-
Object
- Object
- BTetrisKp::MenuState
- Defined in:
- lib/btetris_kp/menu.rb
Overview
class representing main menu window state
Instance Method Summary collapse
-
#button_down(id) ⇒ Object
button handler.
-
#draw ⇒ Object
draws menu.
-
#generate_back_board ⇒ Object
generates background board.
-
#generate_menu ⇒ Object
generates menu, menu items and callback procedures for menu items.
-
#initialize(window) ⇒ MenuState
constructor
A new instance of MenuState.
-
#initialize_title_image ⇒ Object
loads title image and calculates position, size variables.
-
#needs_cursor? ⇒ Boolean
shows default system cursor.
-
#update ⇒ Object
updates menu.
Constructor Details
#initialize(window) ⇒ MenuState
Returns a new instance of MenuState.
11 12 13 14 15 16 17 |
# File 'lib/btetris_kp/menu.rb', line 11 def initialize(window) @window = window @font = Gosu::Font.new(@window, Gosu.default_font_name, Const::FONT_SMALL_SIZE) initialize_title_image generate_back_board end |
Instance Method Details
#button_down(id) ⇒ Object
button handler
69 70 71 72 73 74 75 76 |
# File 'lib/btetris_kp/menu.rb', line 69 def (id) case id when Gosu::KbEscape @window.close when Gosu::MsLeft then @items.each { |i| i.clicked } end end |
#draw ⇒ Object
draws menu
62 63 64 65 66 |
# File 'lib/btetris_kp/menu.rb', line 62 def draw @board.draw @items.each { |i| i.draw } @title_image.draw(@img_x, @img_y, 1, @img_size_factor, @img_size_factor) end |
#generate_back_board ⇒ Object
generates background board
28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/btetris_kp/menu.rb', line 28 def generate_back_board @board = Board.new(@window, @window.width / 3, 40) nice_board = Array.new(Const::PNR_VER) { Array.new(Const::PNR_HOR, 0) } nice_board.each_with_index do |row, x| if x > Const::PNR_VER / 2 row.each_with_index do |val, y| nice_board[x][y] = rand(Const::TILE_COLORS_NR + 1) end end end @board.board = nice_board end |
#generate_menu ⇒ Object
generates menu, menu items and callback procedures for menu items
42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/btetris_kp/menu.rb', line 42 def @items = [] @x = @window.width / 3 + Const::FONT_SMALL_SIZE @y = @title_image.height * @img_size_factor + Const::GAME_WIN_GAP n_g = proc { @window.state = GameState.new(@window, @window.width / 3, 40) } cr_n = proc { @window.state = NetSetupState.new(@window) } j_n = proc { @window.state = NetJoinState.new(@window) } exit = proc { @window.close } @items << MenuItem.new(@window, Const::MENU_NEW, 0, n_g, @font, @x, @y) @items << MenuItem.new(@window, Const::MENU_CREATE, 1, cr_n, @font, @x, @y) @items << MenuItem.new(@window, Const::MENU_JOIN, 2, j_n, @font, @x, @y) @items << MenuItem.new(@window, Const::MENU_QUIT, 3, exit, @font, @x, @y) end |
#initialize_title_image ⇒ Object
loads title image and calculates position, size variables
20 21 22 23 24 25 |
# File 'lib/btetris_kp/menu.rb', line 20 def initialize_title_image @title_image = Gosu::Image.new(@window, Const::PATH_IMAGE_TITLE, false) @img_size_factor = (@window.width - Const::GAME_WIN_GAP).to_f / @title_image.width @img_x = (@window.width - @title_image.width * @img_size_factor) / 2 @img_y = 20 end |
#needs_cursor? ⇒ Boolean
shows default system cursor
79 80 81 |
# File 'lib/btetris_kp/menu.rb', line 79 def needs_cursor? true end |
#update ⇒ Object
updates menu
57 58 59 |
# File 'lib/btetris_kp/menu.rb', line 57 def update @items.each { |i| i.update } end |